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/08/23 14:47:29 UTC

[01/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site 88e0d1a41 -> 1ff05a186


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html
index 532a53d..705e999 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html
@@ -28,90 +28,158 @@
 <span class="sourceLineNo">020</span>import static org.junit.Assert.*;<a name="line.20"></a>
 <span class="sourceLineNo">021</span><a name="line.21"></a>
 <span class="sourceLineNo">022</span>import java.util.AbstractMap.SimpleImmutableEntry;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot.SpaceQuotaStatus;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.quotas.SpaceViolationPolicy;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.testclassification.MasterTests;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.junit.AfterClass;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.junit.BeforeClass;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.junit.ClassRule;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.junit.Test;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.junit.experimental.categories.Category;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.slf4j.Logger;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.slf4j.LoggerFactory;<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
-<span class="sourceLineNo">039</span>@Category({MasterTests.class, MediumTests.class})<a name="line.39"></a>
-<span class="sourceLineNo">040</span>public class TestMasterMetricsWrapper {<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>  @ClassRule<a name="line.42"></a>
-<span class="sourceLineNo">043</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.43"></a>
-<span class="sourceLineNo">044</span>      HBaseClassTestRule.forClass(TestMasterMetricsWrapper.class);<a name="line.44"></a>
-<span class="sourceLineNo">045</span><a name="line.45"></a>
-<span class="sourceLineNo">046</span>  private static final Logger LOG = LoggerFactory.getLogger(TestMasterMetricsWrapper.class);<a name="line.46"></a>
+<span class="sourceLineNo">023</span>import java.util.List;<a name="line.23"></a>
+<span class="sourceLineNo">024</span><a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.TableName;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot.SpaceQuotaStatus;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.quotas.SpaceViolationPolicy;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.testclassification.MasterTests;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.util.PairOfSameType;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.junit.AfterClass;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.junit.BeforeClass;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.junit.ClassRule;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.junit.Test;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.junit.experimental.categories.Category;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.slf4j.Logger;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.slf4j.LoggerFactory;<a name="line.46"></a>
 <span class="sourceLineNo">047</span><a name="line.47"></a>
-<span class="sourceLineNo">048</span>  private static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.48"></a>
-<span class="sourceLineNo">049</span>  private static final int NUM_RS = 4;<a name="line.49"></a>
+<span class="sourceLineNo">048</span>@Category({MasterTests.class, MediumTests.class})<a name="line.48"></a>
+<span class="sourceLineNo">049</span>public class TestMasterMetricsWrapper {<a name="line.49"></a>
 <span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>  @BeforeClass<a name="line.51"></a>
-<span class="sourceLineNo">052</span>  public static void setup() throws Exception {<a name="line.52"></a>
-<span class="sourceLineNo">053</span>    TEST_UTIL.startMiniCluster(1, NUM_RS);<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>
-<span class="sourceLineNo">056</span>  @AfterClass<a name="line.56"></a>
-<span class="sourceLineNo">057</span>  public static void teardown() throws Exception {<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  }<a name="line.59"></a>
-<span class="sourceLineNo">060</span><a name="line.60"></a>
-<span class="sourceLineNo">061</span>  @Test<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  public void testInfo() {<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    HMaster master = TEST_UTIL.getHBaseCluster().getMaster();<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    MetricsMasterWrapperImpl info = new MetricsMasterWrapperImpl(master);<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    assertEquals(master.getSplitPlanCount(), info.getSplitPlanCount(), 0);<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    assertEquals(master.getMergePlanCount(), info.getMergePlanCount(), 0);<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    assertEquals(master.getAverageLoad(), info.getAverageLoad(), 0);<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    assertEquals(master.getClusterId(), info.getClusterId());<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    assertEquals(master.getMasterActiveTime(), info.getActiveTime());<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    assertEquals(master.getMasterStartTime(), info.getStartTime());<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    assertEquals(master.getMasterCoprocessors().length, info.getCoprocessors().length);<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    assertEquals(master.getServerManager().getOnlineServersList().size(), info.getNumRegionServers());<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    int regionServerCount =<a name="line.73"></a>
-<span class="sourceLineNo">074</span>      NUM_RS + (LoadBalancer.isTablesOnMaster(TEST_UTIL.getConfiguration())? 1: 0);<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    assertEquals(regionServerCount, info.getNumRegionServers());<a name="line.75"></a>
-<span class="sourceLineNo">076</span><a name="line.76"></a>
-<span class="sourceLineNo">077</span>    String zkServers = info.getZookeeperQuorum();<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    assertEquals(zkServers.split(",").length, TEST_UTIL.getZkCluster().getZooKeeperServerNum());<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>    final int index = 3;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    LOG.info("Stopping " + TEST_UTIL.getMiniHBaseCluster().getRegionServer(index));<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    TEST_UTIL.getMiniHBaseCluster().stopRegionServer(index, false);<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    TEST_UTIL.getMiniHBaseCluster().waitOnRegionServer(index);<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    // We stopped the regionserver but could take a while for the master to notice it so hang here<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    // until it does... then move forward to see if metrics wrapper notices.<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    while (TEST_UTIL.getHBaseCluster().getMaster().getServerManager().getOnlineServers().size() ==<a name="line.86"></a>
-<span class="sourceLineNo">087</span>        regionServerCount ) {<a name="line.87"></a>
-<span class="sourceLineNo">088</span>      Threads.sleep(10);<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    }<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    assertEquals(regionServerCount - 1, info.getNumRegionServers());<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    assertEquals(1, info.getNumDeadRegionServers());<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    assertEquals(1, info.getNumWALFiles());<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>  @Test<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public void testQuotaSnapshotConversion() {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    MetricsMasterWrapperImpl info = new MetricsMasterWrapperImpl(<a name="line.97"></a>
-<span class="sourceLineNo">098</span>        TEST_UTIL.getHBaseCluster().getMaster());<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    assertEquals(new SimpleImmutableEntry&lt;Long,Long&gt;(1024L, 2048L),<a name="line.99"></a>
-<span class="sourceLineNo">100</span>        info.convertSnapshot(new SpaceQuotaSnapshot(<a name="line.100"></a>
-<span class="sourceLineNo">101</span>            SpaceQuotaStatus.notInViolation(), 1024L, 2048L)));<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    assertEquals(new SimpleImmutableEntry&lt;Long,Long&gt;(4096L, 2048L),<a name="line.102"></a>
-<span class="sourceLineNo">103</span>        info.convertSnapshot(new SpaceQuotaSnapshot(<a name="line.103"></a>
-<span class="sourceLineNo">104</span>            new SpaceQuotaStatus(SpaceViolationPolicy.NO_INSERTS), 4096L, 2048L)));<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  }<a name="line.105"></a>
-<span class="sourceLineNo">106</span>}<a name="line.106"></a>
+<span class="sourceLineNo">051</span>  @ClassRule<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.52"></a>
+<span class="sourceLineNo">053</span>      HBaseClassTestRule.forClass(TestMasterMetricsWrapper.class);<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>  private static final Logger LOG = LoggerFactory.getLogger(TestMasterMetricsWrapper.class);<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  private static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  private static final int NUM_RS = 4;<a name="line.58"></a>
+<span class="sourceLineNo">059</span><a name="line.59"></a>
+<span class="sourceLineNo">060</span>  @BeforeClass<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  public static void setup() throws Exception {<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    TEST_UTIL.startMiniCluster(1, NUM_RS);<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  }<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  @AfterClass<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  public static void teardown() throws Exception {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  }<a name="line.68"></a>
+<span class="sourceLineNo">069</span><a name="line.69"></a>
+<span class="sourceLineNo">070</span>  @Test<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  public void testInfo() {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    HMaster master = TEST_UTIL.getHBaseCluster().getMaster();<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    MetricsMasterWrapperImpl info = new MetricsMasterWrapperImpl(master);<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    assertEquals(master.getSplitPlanCount(), info.getSplitPlanCount(), 0);<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    assertEquals(master.getMergePlanCount(), info.getMergePlanCount(), 0);<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    assertEquals(master.getAverageLoad(), info.getAverageLoad(), 0);<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    assertEquals(master.getClusterId(), info.getClusterId());<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    assertEquals(master.getMasterActiveTime(), info.getActiveTime());<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    assertEquals(master.getMasterStartTime(), info.getStartTime());<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    assertEquals(master.getMasterCoprocessors().length, info.getCoprocessors().length);<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    assertEquals(master.getServerManager().getOnlineServersList().size(), info.getNumRegionServers());<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    int regionServerCount =<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      NUM_RS + (LoadBalancer.isTablesOnMaster(TEST_UTIL.getConfiguration())? 1: 0);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    assertEquals(regionServerCount, info.getNumRegionServers());<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>    String zkServers = info.getZookeeperQuorum();<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    assertEquals(zkServers.split(",").length, TEST_UTIL.getZkCluster().getZooKeeperServerNum());<a name="line.87"></a>
+<span class="sourceLineNo">088</span><a name="line.88"></a>
+<span class="sourceLineNo">089</span>    final int index = 3;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    LOG.info("Stopping " + TEST_UTIL.getMiniHBaseCluster().getRegionServer(index));<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    TEST_UTIL.getMiniHBaseCluster().stopRegionServer(index, false);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    TEST_UTIL.getMiniHBaseCluster().waitOnRegionServer(index);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    // We stopped the regionserver but could take a while for the master to notice it so hang here<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    // until it does... then move forward to see if metrics wrapper notices.<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    while (TEST_UTIL.getHBaseCluster().getMaster().getServerManager().getOnlineServers().size() ==<a name="line.95"></a>
+<span class="sourceLineNo">096</span>        regionServerCount ) {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      Threads.sleep(10);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    assertEquals(regionServerCount - 1, info.getNumRegionServers());<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    assertEquals(1, info.getNumDeadRegionServers());<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    assertEquals(1, info.getNumWALFiles());<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>  @Test<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  public void testQuotaSnapshotConversion() {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    MetricsMasterWrapperImpl info = new MetricsMasterWrapperImpl(<a name="line.106"></a>
+<span class="sourceLineNo">107</span>        TEST_UTIL.getHBaseCluster().getMaster());<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    assertEquals(new SimpleImmutableEntry&lt;Long,Long&gt;(1024L, 2048L),<a name="line.108"></a>
+<span class="sourceLineNo">109</span>        info.convertSnapshot(new SpaceQuotaSnapshot(<a name="line.109"></a>
+<span class="sourceLineNo">110</span>            SpaceQuotaStatus.notInViolation(), 1024L, 2048L)));<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    assertEquals(new SimpleImmutableEntry&lt;Long,Long&gt;(4096L, 2048L),<a name="line.111"></a>
+<span class="sourceLineNo">112</span>        info.convertSnapshot(new SpaceQuotaSnapshot(<a name="line.112"></a>
+<span class="sourceLineNo">113</span>            new SpaceQuotaStatus(SpaceViolationPolicy.NO_INSERTS), 4096L, 2048L)));<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  }<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>  /**<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   * tests online and offline region number<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   */<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  @Test (timeout=30000)<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  public void testOfflineRegion() throws Exception {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    HMaster master = TEST_UTIL.getHBaseCluster().getMaster();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    MetricsMasterWrapperImpl info = new MetricsMasterWrapperImpl(master);<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    TableName table = TableName.valueOf("testRegionNumber");<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    try {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      RegionInfo hri;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      HTableDescriptor desc = new HTableDescriptor(table);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      byte[] FAMILY = Bytes.toBytes("FAMILY");<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      desc.addFamily(new HColumnDescriptor(FAMILY));<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      TEST_UTIL.getHBaseAdmin().createTable(desc, Bytes.toBytes("A"), Bytes.toBytes("Z"), 5);<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>      // wait till the table is assigned<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      long timeoutTime = System.currentTimeMillis() + 1000;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      while (true) {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>        List&lt;RegionInfo&gt; regions = master.getAssignmentManager().<a name="line.134"></a>
+<span class="sourceLineNo">135</span>          getRegionStates().getRegionsOfTable(table);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>        if (regions.size() &gt; 3) {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>          hri = regions.get(2);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>          break;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        }<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        long now = System.currentTimeMillis();<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        if (now &gt; timeoutTime) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>          fail("Could not find an online region");<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        }<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        Thread.sleep(10);<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>      PairOfSameType&lt;Integer&gt; regionNumberPair = info.getRegionCounts();<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      assertEquals(5, regionNumberPair.getFirst().intValue());<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      assertEquals(0, regionNumberPair.getSecond().intValue());<a name="line.149"></a>
+<span class="sourceLineNo">150</span><a name="line.150"></a>
+<span class="sourceLineNo">151</span>      TEST_UTIL.getHBaseAdmin().offline(hri.getRegionName());<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>      timeoutTime = System.currentTimeMillis() + 800;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      RegionStates regionStates = master.getAssignmentManager().getRegionStates();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      while (true) {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>        if (regionStates.getRegionByStateOfTable(table)<a name="line.156"></a>
+<span class="sourceLineNo">157</span>            .get(RegionState.State.OFFLINE).contains(hri)) {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>          break;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>        }<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        long now = System.currentTimeMillis();<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        if (now &gt; timeoutTime) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>          fail("Failed to offline the region in time");<a name="line.162"></a>
+<span class="sourceLineNo">163</span>          break;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        }<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        Thread.sleep(10);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      regionNumberPair = info.getRegionCounts();<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      assertEquals(4, regionNumberPair.getFirst().intValue());<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      assertEquals(1, regionNumberPair.getSecond().intValue());<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    } finally {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      TEST_UTIL.deleteTable(table);<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>}<a name="line.174"></a>
 
 
 


[23/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ObservedExceptionsInBatch.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ObservedExceptionsInBatch.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ObservedExceptionsInBatch.html
index db8431b..a8cb7c4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ObservedExceptionsInBatch.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ObservedExceptionsInBatch.html
@@ -885,7766 +885,7797 @@
 <span class="sourceLineNo">877</span>   * @return What the next sequence (edit) id should be.<a name="line.877"></a>
 <span class="sourceLineNo">878</span>   * @throws IOException e<a name="line.878"></a>
 <span class="sourceLineNo">879</span>   */<a name="line.879"></a>
-<span class="sourceLineNo">880</span>  private long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.880"></a>
-<span class="sourceLineNo">881</span><a name="line.881"></a>
-<span class="sourceLineNo">882</span>    //Refuse to open the region if there is no column family in the table<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.884"></a>
-<span class="sourceLineNo">885</span>          " should have at least one column family.");<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    long nextSeqId = -1;<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    try {<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.891"></a>
-<span class="sourceLineNo">892</span>      return nextSeqId;<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    } finally {<a name="line.893"></a>
-<span class="sourceLineNo">894</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      // At least it will be 0 otherwise.<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      if (nextSeqId == -1) {<a name="line.896"></a>
-<span class="sourceLineNo">897</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.897"></a>
-<span class="sourceLineNo">898</span>          " initialization.");<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      }<a name="line.899"></a>
-<span class="sourceLineNo">900</span>    }<a name="line.900"></a>
-<span class="sourceLineNo">901</span>  }<a name="line.901"></a>
-<span class="sourceLineNo">902</span><a name="line.902"></a>
-<span class="sourceLineNo">903</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.903"></a>
-<span class="sourceLineNo">904</span>      final MonitoredTask status) throws IOException {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    if (coprocessorHost != null) {<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      coprocessorHost.preOpen();<a name="line.907"></a>
-<span class="sourceLineNo">908</span>    }<a name="line.908"></a>
-<span class="sourceLineNo">909</span><a name="line.909"></a>
-<span class="sourceLineNo">910</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.910"></a>
-<span class="sourceLineNo">911</span>    // Only the primary replica should write .regioninfo<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      status.setStatus("Writing region info on filesystem");<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      fs.checkRegionInfoOnFilesystem();<a name="line.914"></a>
-<span class="sourceLineNo">915</span>    }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>    // Initialize all the HStores<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    status.setStatus("Initializing all the Stores");<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.920"></a>
-<span class="sourceLineNo">921</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.922"></a>
-<span class="sourceLineNo">923</span>      try {<a name="line.923"></a>
-<span class="sourceLineNo">924</span>        // update the stores that we are replaying<a name="line.924"></a>
-<span class="sourceLineNo">925</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        // Recover any edits if available.<a name="line.927"></a>
-<span class="sourceLineNo">928</span>        maxSeqId = Math.max(maxSeqId,<a name="line.928"></a>
-<span class="sourceLineNo">929</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        // Make sure mvcc is up to max.<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      } finally {<a name="line.932"></a>
-<span class="sourceLineNo">933</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        // update the stores that we are done replaying<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        stores.forEach(HStore::stopReplayingFromWAL);<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>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    this.writestate.flushRequested = false;<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    this.writestate.compacting.set(0);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>    if (this.writestate.writesEnabled) {<a name="line.944"></a>
-<span class="sourceLineNo">945</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      // Remove temporary data left over from old regions<a name="line.946"></a>
-<span class="sourceLineNo">947</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.947"></a>
-<span class="sourceLineNo">948</span>      fs.cleanupTempDir();<a name="line.948"></a>
-<span class="sourceLineNo">949</span>    }<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>    if (this.writestate.writesEnabled) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      // these directories here on open.  We may be opening a region that was<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      // being split but we crashed in the middle of it all.<a name="line.955"></a>
-<span class="sourceLineNo">956</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      fs.cleanupAnySplitDetritus();<a name="line.957"></a>
-<span class="sourceLineNo">958</span>      fs.cleanupMergesDir();<a name="line.958"></a>
-<span class="sourceLineNo">959</span>    }<a name="line.959"></a>
+<span class="sourceLineNo">880</span>  @VisibleForTesting<a name="line.880"></a>
+<span class="sourceLineNo">881</span>  long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>    //Refuse to open the region if there is no column family in the table<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.885"></a>
+<span class="sourceLineNo">886</span>          " should have at least one column family.");<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    }<a name="line.887"></a>
+<span class="sourceLineNo">888</span><a name="line.888"></a>
+<span class="sourceLineNo">889</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>    long nextSeqId = -1;<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    try {<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      return nextSeqId;<a name="line.893"></a>
+<span class="sourceLineNo">894</span>    } catch (IOException e) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      LOG.warn("Failed initialize of region= {}, starting to roll back memstore",<a name="line.895"></a>
+<span class="sourceLineNo">896</span>          getRegionInfo().getRegionNameAsString(), e);<a name="line.896"></a>
+<span class="sourceLineNo">897</span>      // global memstore size will be decreased when dropping memstore<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      try {<a name="line.898"></a>
+<span class="sourceLineNo">899</span>        //drop the memory used by memstore if open region fails<a name="line.899"></a>
+<span class="sourceLineNo">900</span>        dropMemStoreContents();<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      } catch (IOException ioE) {<a name="line.901"></a>
+<span class="sourceLineNo">902</span>        if (conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {<a name="line.902"></a>
+<span class="sourceLineNo">903</span>          LOG.warn("Failed drop memstore of region= {}, "<a name="line.903"></a>
+<span class="sourceLineNo">904</span>                  + "some chunks may not released forever since MSLAB is enabled",<a name="line.904"></a>
+<span class="sourceLineNo">905</span>              getRegionInfo().getRegionNameAsString());<a name="line.905"></a>
+<span class="sourceLineNo">906</span>        }<a name="line.906"></a>
+<span class="sourceLineNo">907</span><a name="line.907"></a>
+<span class="sourceLineNo">908</span>      }<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      throw e;<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    } finally {<a name="line.910"></a>
+<span class="sourceLineNo">911</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      // At least it will be 0 otherwise.<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      if (nextSeqId == -1) {<a name="line.913"></a>
+<span class="sourceLineNo">914</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.914"></a>
+<span class="sourceLineNo">915</span>          " initialization.");<a name="line.915"></a>
+<span class="sourceLineNo">916</span>      }<a name="line.916"></a>
+<span class="sourceLineNo">917</span>    }<a name="line.917"></a>
+<span class="sourceLineNo">918</span>  }<a name="line.918"></a>
+<span class="sourceLineNo">919</span><a name="line.919"></a>
+<span class="sourceLineNo">920</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.920"></a>
+<span class="sourceLineNo">921</span>      final MonitoredTask status) throws IOException {<a name="line.921"></a>
+<span class="sourceLineNo">922</span>    if (coprocessorHost != null) {<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.923"></a>
+<span class="sourceLineNo">924</span>      coprocessorHost.preOpen();<a name="line.924"></a>
+<span class="sourceLineNo">925</span>    }<a name="line.925"></a>
+<span class="sourceLineNo">926</span><a name="line.926"></a>
+<span class="sourceLineNo">927</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.927"></a>
+<span class="sourceLineNo">928</span>    // Only the primary replica should write .regioninfo<a name="line.928"></a>
+<span class="sourceLineNo">929</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>      status.setStatus("Writing region info on filesystem");<a name="line.930"></a>
+<span class="sourceLineNo">931</span>      fs.checkRegionInfoOnFilesystem();<a name="line.931"></a>
+<span class="sourceLineNo">932</span>    }<a name="line.932"></a>
+<span class="sourceLineNo">933</span><a name="line.933"></a>
+<span class="sourceLineNo">934</span>    // Initialize all the HStores<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    status.setStatus("Initializing all the Stores");<a name="line.935"></a>
+<span class="sourceLineNo">936</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.937"></a>
+<span class="sourceLineNo">938</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.938"></a>
+<span class="sourceLineNo">939</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.939"></a>
+<span class="sourceLineNo">940</span>      try {<a name="line.940"></a>
+<span class="sourceLineNo">941</span>        // update the stores that we are replaying<a name="line.941"></a>
+<span class="sourceLineNo">942</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.942"></a>
+<span class="sourceLineNo">943</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.943"></a>
+<span class="sourceLineNo">944</span>        // Recover any edits if available.<a name="line.944"></a>
+<span class="sourceLineNo">945</span>        maxSeqId = Math.max(maxSeqId,<a name="line.945"></a>
+<span class="sourceLineNo">946</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.946"></a>
+<span class="sourceLineNo">947</span>        // Make sure mvcc is up to max.<a name="line.947"></a>
+<span class="sourceLineNo">948</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      } finally {<a name="line.949"></a>
+<span class="sourceLineNo">950</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        // update the stores that we are done replaying<a name="line.951"></a>
+<span class="sourceLineNo">952</span>        stores.forEach(HStore::stopReplayingFromWAL);<a name="line.952"></a>
+<span class="sourceLineNo">953</span>      }<a name="line.953"></a>
+<span class="sourceLineNo">954</span>    }<a name="line.954"></a>
+<span class="sourceLineNo">955</span>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.955"></a>
+<span class="sourceLineNo">956</span><a name="line.956"></a>
+<span class="sourceLineNo">957</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.957"></a>
+<span class="sourceLineNo">958</span>    this.writestate.flushRequested = false;<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    this.writestate.compacting.set(0);<a name="line.959"></a>
 <span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>    // Initialize split policy<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.962"></a>
-<span class="sourceLineNo">963</span><a name="line.963"></a>
-<span class="sourceLineNo">964</span>    // Initialize flush policy<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.965"></a>
-<span class="sourceLineNo">966</span><a name="line.966"></a>
-<span class="sourceLineNo">967</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    for (HStore store: stores.values()) {<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<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>    // Use maximum of log sequenceid or that which was found in stores<a name="line.972"></a>
-<span class="sourceLineNo">973</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.973"></a>
-<span class="sourceLineNo">974</span>    long maxSeqIdFromFile =<a name="line.974"></a>
-<span class="sourceLineNo">975</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.975"></a>
-<span class="sourceLineNo">976</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.976"></a>
-<span class="sourceLineNo">977</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    // the max sequence id file.<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.985"></a>
-<span class="sourceLineNo">986</span><a name="line.986"></a>
-<span class="sourceLineNo">987</span>    // A region can be reopened if failed a split; reset flags<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    this.closing.set(false);<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    this.closed.set(false);<a name="line.989"></a>
-<span class="sourceLineNo">990</span><a name="line.990"></a>
-<span class="sourceLineNo">991</span>    if (coprocessorHost != null) {<a name="line.991"></a>
-<span class="sourceLineNo">992</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.992"></a>
-<span class="sourceLineNo">993</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.993"></a>
-<span class="sourceLineNo">994</span>      coprocessorHost.postOpen();<a name="line.994"></a>
-<span class="sourceLineNo">995</span>    }<a name="line.995"></a>
-<span class="sourceLineNo">996</span><a name="line.996"></a>
-<span class="sourceLineNo">997</span>    status.markComplete("Region opened successfully");<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    return nextSeqId;<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>   * Open all Stores.<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>   * @param reporter<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   * @param status<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>   * @return Highest sequenceId found out in a Store.<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * @throws IOException<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   */<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      throws IOException {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>    // Load in all the HStores.<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    long maxSeqId = -1;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    long maxMemstoreTS = -1;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span><a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span><a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      // initialize each store in parallel<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>          @Override<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>          public HStore call() throws IOException {<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>            return instantiateHStore(family);<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          }<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>        });<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      }<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>      boolean allStoresOpened = false;<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>      boolean hasSloppyStores = false;<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>      try {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>          HStore store = future.get();<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>          if (store.isSloppyMemStore()) {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            hasSloppyStores = true;<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>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>              storeMaxSequenceId);<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            maxSeqId = storeMaxSequenceId;<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>          }<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>          }<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>        }<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>        allStoresOpened = true;<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>        if(hasSloppyStores) {<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>                  .build();<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        }<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>      } catch (InterruptedException e) {<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>      } catch (ExecutionException e) {<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        throw new IOException(e.getCause());<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>      } finally {<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        if (!allStoresOpened) {<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>          // something went wrong, close all opened stores<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>          for (HStore store : this.stores.values()) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>            try {<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>              store.close();<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>            } catch (IOException e) {<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>              LOG.warn("close store failed", e);<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>            }<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          }<a name="line.1075"></a>
+<span class="sourceLineNo">961</span>    if (this.writestate.writesEnabled) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      // Remove temporary data left over from old regions<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      fs.cleanupTempDir();<a name="line.965"></a>
+<span class="sourceLineNo">966</span>    }<a name="line.966"></a>
+<span class="sourceLineNo">967</span><a name="line.967"></a>
+<span class="sourceLineNo">968</span>    if (this.writestate.writesEnabled) {<a name="line.968"></a>
+<span class="sourceLineNo">969</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.969"></a>
+<span class="sourceLineNo">970</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.970"></a>
+<span class="sourceLineNo">971</span>      // these directories here on open.  We may be opening a region that was<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      // being split but we crashed in the middle of it all.<a name="line.972"></a>
+<span class="sourceLineNo">973</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.973"></a>
+<span class="sourceLineNo">974</span>      fs.cleanupAnySplitDetritus();<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      fs.cleanupMergesDir();<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    }<a name="line.976"></a>
+<span class="sourceLineNo">977</span><a name="line.977"></a>
+<span class="sourceLineNo">978</span>    // Initialize split policy<a name="line.978"></a>
+<span class="sourceLineNo">979</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.979"></a>
+<span class="sourceLineNo">980</span><a name="line.980"></a>
+<span class="sourceLineNo">981</span>    // Initialize flush policy<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.982"></a>
+<span class="sourceLineNo">983</span><a name="line.983"></a>
+<span class="sourceLineNo">984</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.984"></a>
+<span class="sourceLineNo">985</span>    for (HStore store: stores.values()) {<a name="line.985"></a>
+<span class="sourceLineNo">986</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<a name="line.986"></a>
+<span class="sourceLineNo">987</span>    }<a name="line.987"></a>
+<span class="sourceLineNo">988</span><a name="line.988"></a>
+<span class="sourceLineNo">989</span>    // Use maximum of log sequenceid or that which was found in stores<a name="line.989"></a>
+<span class="sourceLineNo">990</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.990"></a>
+<span class="sourceLineNo">991</span>    long maxSeqIdFromFile =<a name="line.991"></a>
+<span class="sourceLineNo">992</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.994"></a>
+<span class="sourceLineNo">995</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.995"></a>
+<span class="sourceLineNo">996</span>    // the max sequence id file.<a name="line.996"></a>
+<span class="sourceLineNo">997</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.997"></a>
+<span class="sourceLineNo">998</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.998"></a>
+<span class="sourceLineNo">999</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<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>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span><a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>    // A region can be reopened if failed a split; reset flags<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>    this.closing.set(false);<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    this.closed.set(false);<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span><a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>    if (coprocessorHost != null) {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>      coprocessorHost.postOpen();<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>    }<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span><a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>    status.markComplete("Region opened successfully");<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>    return nextSeqId;<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>  }<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span><a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>  /**<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>   * Open all Stores.<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>   * @param reporter<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>   * @param status<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>   * @return Highest sequenceId found out in a Store.<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>   * @throws IOException<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>   */<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>      throws IOException {<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    // Load in all the HStores.<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>    long maxSeqId = -1;<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>    long maxMemstoreTS = -1;<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span><a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>      // initialize each store in parallel<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>          @Override<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>          public HStore call() throws IOException {<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>            return instantiateHStore(family);<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>          }<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>        });<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>      }<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>      boolean allStoresOpened = false;<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>      boolean hasSloppyStores = false;<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>      try {<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>          HStore store = future.get();<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>          if (store.isSloppyMemStore()) {<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>            hasSloppyStores = true;<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>          }<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span><a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>              storeMaxSequenceId);<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>            maxSeqId = storeMaxSequenceId;<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>          }<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>          }<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span>        }<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>        allStoresOpened = true;<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>        if(hasSloppyStores) {<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>                  .build();<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1075"></a>
 <span class="sourceLineNo">1076</span>        }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      }<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    }<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>  }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span><a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>    // Initialize all the HStores<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>    status.setStatus("Warming up all the Stores");<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    try {<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>      initializeStores(reporter, status);<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>    } finally {<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>      status.markComplete("Done warming up.");<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>    }<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>  }<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>   * @return Map of StoreFiles by column family<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>   */<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    for (HStore store : stores.values()) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      if (storeFiles == null) {<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>        continue;<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>        storeFileNames.add(storeFile.getPath());<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      }<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>    }<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>    return allStoreFiles;<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>  }<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span><a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>  @VisibleForTesting<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>        mvcc);<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  }<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span><a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>        mvcc);<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span><a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>    // Store SeqId in HDFS when a region closes<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    // table is still online<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>        mvcc.getReadPoint());<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>    }<a name="line.1136"></a>
+<span class="sourceLineNo">1077</span>      } catch (InterruptedException e) {<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>      } catch (ExecutionException e) {<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>        throw new IOException(e.getCause());<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      } finally {<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>        if (!allStoresOpened) {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>          // something went wrong, close all opened stores<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>          for (HStore store : this.stores.values()) {<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>            try {<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>              store.close();<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>            } catch (IOException e) {<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>              LOG.warn("close store failed", e);<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>            }<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>      }<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>    }<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>  }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span><a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>    // Initialize all the HStores<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>    status.setStatus("Warming up all the Stores");<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>    try {<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>      initializeStores(reporter, status);<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>    } finally {<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>      status.markComplete("Done warming up.");<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>    }<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>  }<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span><a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>  /**<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>   * @return Map of StoreFiles by column family<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>   */<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>    for (HStore store : stores.values()) {<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>      if (storeFiles == null) {<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>        continue;<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span>      }<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>        storeFileNames.add(storeFile.getPath());<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>      }<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>    }<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>    return allStoreFiles;<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>  }<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span><a name="line.1128"></a>
+<span class="sourceLineNo">1129</span>  @VisibleForTesting<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>        mvcc);<a name="line.1136"></a>
 <span class="sourceLineNo">1137</span>  }<a name="line.1137"></a>
 <span class="sourceLineNo">1138</span><a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>  /**<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>   * @return True if this region has references.<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>   */<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>  public boolean hasReferences() {<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<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>  public void blockUpdates() {<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>    this.updatesLock.writeLock().lock();<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>  }<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span><a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>  public void unblockUpdates() {<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>    this.updatesLock.writeLock().unlock();<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>  }<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span><a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>    return hdfsBlocksDistribution;<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>  }<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span><a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>  /**<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>   * @param conf configuration<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>   * @param regionInfo encoded name of the region<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>   * @throws IOException<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>   */<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>  }<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span><a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>  /**<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>   * @param conf configuration<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>   * @param regionInfo encoded name of the region<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>   * @param tablePath the table directory<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>   * @throws IOException<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>   */<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1186"></a>
-<span class="sourceLineNo">1187</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1188"></a>
-<span class="sourceLineNo">1189</span><a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span>      if (locatedFileStatusList == null) {<a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>        continue;<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>      }<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span><a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>        Path p = status.getPath();<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>          // creation<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>              status.getBlockLocations());<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span>        } else {<a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>          throw new IOException("path=" + p<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>              + " doesn't look like a valid StoreFile");<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>        }<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>      }<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>    }<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>    return hdfsBlocksDistribution;<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>   * Increase the size of mem store in this region and the size of global mem<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>   * store<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>   */<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>  }<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span><a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>    if (this.rsAccounting != null) {<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>    }<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>    long dataSize =<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1234"></a>
+<span class="sourceLineNo">1139</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span>        mvcc);<a name="line.1145"></a>
+<span class="sourceLineNo">1146</span><a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>    // Store SeqId in HDFS when a region closes<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>    // table is still online<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span>        mvcc.getReadPoint());<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>    }<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>  }<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span><a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>  /**<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>   * @return True if this region has references.<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>   */<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>  public boolean hasReferences() {<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>  }<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span><a name="line.1162"></a>
+<span class="sourceLineNo">1163</span>  public void blockUpdates() {<a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>    this.updatesLock.writeLock().lock();<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>  }<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span><a name="line.1166"></a>
+<span class="sourceLineNo">1167</span>  public void unblockUpdates() {<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>    this.updatesLock.writeLock().unlock();<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>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1172"></a>
+<span class="sourceLineNo">1173</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1174"></a>
+<span class="sourceLineNo">1175</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>    return hdfsBlocksDistribution;<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span>  }<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span><a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>  /**<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>   * @param conf configuration<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1182"></a>
+<span class="sourceLineNo">1183</span>   * @param regionInfo encoded name of the region<a name="line.1183"></a>
+<span class="sourceLineNo">1184</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1184"></a>
+<span class="sourceLineNo">1185</span>   * @throws IOException<a name="line.1185"></a>
+<span class="sourceLineNo">1186</span>   */<a name="line.1186"></a>
+<span class="sourceLineNo">1187</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1187"></a>
+<span class="sourceLineNo">1188</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1188"></a>
+<span class="sourceLineNo">1189</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1189"></a>
+<span class="sourceLineNo">1190</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1190"></a>
+<span class="sourceLineNo">1191</span>  }<a name="line.1191"></a>
+<span class="sourceLineNo">1192</span><a name="line.1192"></a>
+<span class="sourceLineNo">1193</span>  /**<a name="line.1193"></a>
+<span class="sourceLineNo">1194</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1194"></a>
+<span class="sourceLineNo">1195</span>   * @param conf configuration<a name="line.1195"></a>
+<span class="sourceLineNo">1196</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1196"></a>
+<span class="sourceLineNo">1197</span>   * @param regionInfo encoded name of the region<a name="line.1197"></a>
+<span class="sourceLineNo">1198</span>   * @param tablePath the table directory<a name="line.1198"></a>
+<span class="sourceLineNo">1199</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1199"></a>
+<span class="sourceLineNo">1200</span>   * @throws IOException<a name="line.1200"></a>
+<span class="sourceLineNo">1201</span>   */<a name="line.1201"></a>
+<span class="sourceLineNo">1202</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1202"></a>
+<span class="sourceLineNo">1203</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1203"></a>
+<span class="sourceLineNo">1204</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1204"></a>
+<span class="sourceLineNo">1205</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1205"></a>
+<span class="sourceLineNo">1206</span><a name="line.1206"></a>
+<span class="sourceLineNo">1207</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1207"></a>
+<span class="sourceLineNo">1208</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1208"></a>
+<span class="sourceLineNo">1209</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1209"></a>
+<span class="sourceLineNo">1210</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1210"></a>
+<span class="sourceLineNo">1211</span>      if (locatedFileStatusList == null) {<a name="line.1211"></a>
+<span class="sourceLineNo">1212</span>        continue;<a name="line.1212"></a>
+<span class="sourceLineNo">1213</span>      }<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span><a name="line.1214"></a>
+<span class="sourceLineNo">1215</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1215"></a>
+<span class="sourceLineNo">1216</span>        Path p = status.getPath();<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1217"></a>
+<span class="sourceLineNo">1218</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span>          // creation<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1224"></a>
+<span class="sourceLineNo">1225</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1225"></a>
+<span class="sourceLineNo">1226</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1226"></a>
+<span class="sourceLineNo">1227</span>              status.getBlockLocations());<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span>        } else {<a name="line.1228"></a>
+<span class="sourceLineNo">1229</span>          throw new IOException("path=" + p<a name="line.1229"></a>
+<span class="sourceLineNo">1230</span>              + " doesn't look like a valid StoreFile");<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>    }<a name="line.1233"></a>
+<span class="sourceLineNo">1234</span>    return hdfsBlocksDistribution;<a name="line.1234"></a>
 <span class="sourceLineNo">1235</span>  }<a name="line.1235"></a>
 <span class="sourceLineNo">1236</span><a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>  }<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span><a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>    if (this.rsAccounting != null) {<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>    }<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>    long dataSize =<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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 checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    if (memStoreDataSize &lt; 0) {<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>    }<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>  }<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span><a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>  @Override<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>  public RegionInfo getRegionInfo() {<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>    return this.fs.getRegionInfo();<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>  }<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span><a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>  /**<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>   * @return Instance of {@link RegionServerServices} used by this HRegion.<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>   * Can be null.<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>   */<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>  RegionServerServices getRegionServerServices() {<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>    return this.rsServices;<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>  }<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span><a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>  @Override<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>  public long getReadRequestsCount() {<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>    return readRequestsCount.sum();<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>  }<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span><a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>  @Override<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>  public long getCpRequestsCount() {<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>    return cpRequestsCount.sum();<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>  @Override<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>  public long getFilteredReadRequestsCount() {<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>    return filteredReadRequestsCount.sum();<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>  @Override<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>  public long getWriteRequestsCount() {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    return writeRequestsCount.sum();<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>  }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>  @Override<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>  public long getMemStoreDataSize() {<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>    return memStoreSizing.getDataSize();<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>  @Override<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>  public long getMemStoreHeapSize() {<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>    return memStoreSizing.getHeapSize();<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>  }<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span><a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>  @Override<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>  public long getMemStoreOffHeapSize() {<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>    return memStoreSizing.getOffHeapSize();<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>  }<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span><a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>  /** @return store services for this region, to access services required by store level needs */<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>  public RegionServicesForStores getRegionServicesForStores() {<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>    return regionServicesForStores;<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>  @Override<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>  public long getNumMutationsWithoutWAL() {<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>    return numMutationsWithoutWAL.sum();<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>  @Override<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>  public long getDataInMemoryWithoutWAL() {<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>    return dataInMemoryWithoutWAL.sum();<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>  }<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span><a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>  @Override<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>  public long getBlockedRequestsCount() {<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>    return blockedRequestsCount.sum();<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>  }<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span><a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>  @Override<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>  public long getCheckAndMutateChecksPassed() {<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>    return checkAndMutateChecksPassed.sum();<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 long getCheckAndMutateChecksFailed() {<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    return checkAndMutateChecksFailed.sum();<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>  // TODO Needs to check whether we should expose our metrics system to CPs. If CPs themselves doing<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>  // the op and bypassing the core, this might be needed? Should be stop supporting the bypass<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>  // feature?<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>  public MetricsRegion getMetrics() {<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>    return metricsRegion;<a name="line.1342"></a>
+<span class="sourceLineNo">1237</span>  /**<a name="line.1237"></a>
+<span class="sourceLineNo">1238</span>   * Increase the size of mem store in this region and the size of global mem<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span>   * store<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span>   */<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>  }<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span><a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>    if (this.rsAccounting != null) {<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>    }<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>    long dataSize =<a name="line.1249"></a>
+<span class="sourceLineNo">1250</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1250"></a>
+<span class="sourceLineNo">1251</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>  }<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span><a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span>  }<a name="line.1256"></a>
+<span class="sourceLineNo">1257</span><a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>    if (this.rsAccounting != null) {<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>    }<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>    long dataSize =<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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>  private void checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>    if (memStoreDataSize &lt; 0) {<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>    }<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>  }<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span><a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>  @Override<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>  public RegionInfo getRegionInfo() {<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>    return this.fs.getRegionInfo();<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>  }<a name="line.1280"></a>
+<span class="sourceLineNo">1281</span><a name="line.1281"></a>
+<span class="sourceLineNo">1282</span>

<TRUNCATED>

[51/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

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


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

Branch: refs/heads/asf-site
Commit: 1ff05a186ce60edd330e9bb51fc9401476910a20
Parents: 88e0d1a
Author: jenkins <bu...@apache.org>
Authored: Thu Aug 23 14:47:06 2018 +0000
Committer: jenkins <bu...@apache.org>
Committed: Thu Aug 23 14:47:06 2018 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |     4 +-
 apache_hbase_reference_guide.pdf                |     4 +-
 book.html                                       |     2 +-
 bulk-loads.html                                 |     4 +-
 checkstyle-aggregate.html                       | 35802 +++++++++--------
 checkstyle.rss                                  |    34 +-
 coc.html                                        |     4 +-
 dependencies.html                               |     4 +-
 dependency-convergence.html                     |     4 +-
 dependency-info.html                            |     4 +-
 dependency-management.html                      |     4 +-
 devapidocs/constant-values.html                 |    34 +-
 devapidocs/index-all.html                       |    56 +-
 .../hadoop/hbase/backup/package-tree.html       |     2 +-
 .../hadoop/hbase/class-use/CellComparator.html  |    76 +-
 .../hadoop/hbase/client/package-tree.html       |    20 +-
 .../hadoop/hbase/coprocessor/package-tree.html  |     2 +-
 .../hadoop/hbase/filter/package-tree.html       |    12 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     8 +-
 .../apache/hadoop/hbase/ipc/package-tree.html   |     4 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |     4 +-
 .../hbase/master/MetricsMasterSource.html       |   104 +-
 .../hbase/master/MetricsMasterSourceImpl.html   |    22 +-
 .../hbase/master/MetricsMasterWrapper.html      |    72 +-
 .../hbase/master/MetricsMasterWrapperImpl.html  |    81 +-
 .../hbase/master/balancer/package-tree.html     |     2 +-
 .../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   |     6 +-
 .../hadoop/hbase/quotas/package-tree.html       |     6 +-
 .../hbase/regionserver/AbstractMemStore.html    |    97 +-
 .../regionserver/CSLMImmutableSegment.html      |    12 +-
 .../regionserver/ChunkCreator.ChunkType.html    |     4 +-
 ...tingMemStore.InMemoryCompactionRunnable.html |     6 +-
 .../CompactingMemStore.IndexType.html           |     8 +-
 .../hbase/regionserver/CompactingMemStore.html  |   131 +-
 .../hbase/regionserver/CompactionPipeline.html  |    36 +-
 .../hbase/regionserver/DefaultMemStore.html     |    57 +-
 .../HRegion.BatchOperation.Visitor.html         |     4 +-
 .../regionserver/HRegion.BatchOperation.html    |    78 +-
 .../regionserver/HRegion.BulkLoadListener.html  |     8 +-
 .../HRegion.FlushResult.Result.html             |    10 +-
 .../hbase/regionserver/HRegion.FlushResult.html |     8 +-
 .../HRegion.MutationBatchOperation.html         |    44 +-
 .../regionserver/HRegion.RegionScannerImpl.html |    90 +-
 .../HRegion.ReplayBatchOperation.html           |    32 +-
 .../regionserver/HRegion.RowLockContext.html    |    28 +-
 .../hbase/regionserver/HRegion.RowLockImpl.html |    16 +-
 .../hadoop/hbase/regionserver/HRegion.html      |   977 +-
 .../regionserver/HStore.StoreFlusherImpl.html   |    34 +-
 .../hadoop/hbase/regionserver/HStore.html       |   294 +-
 .../hbase/regionserver/MutableSegment.html      |    20 +-
 .../regionserver/RegionServerAccounting.html    |   162 +-
 .../hbase/regionserver/SegmentFactory.html      |    57 +-
 .../hbase/regionserver/class-use/CellSet.html   |     5 +-
 .../class-use/ImmutableSegment.html             |     8 +-
 .../regionserver/class-use/MemStoreLAB.html     |    10 +-
 .../regionserver/class-use/MemStoreSize.html    |    69 +-
 .../regionserver/class-use/MemStoreSizing.html  |    76 +-
 .../regionserver/class-use/MutableSegment.html  |    13 +-
 .../class-use/RegionServicesForStores.html      |    18 +-
 .../hbase/regionserver/class-use/Segment.html   |     3 +-
 ...RegionHandler.PostOpenDeployTasksThread.html |    20 +-
 .../regionserver/handler/OpenRegionHandler.html |    32 +-
 .../hadoop/hbase/regionserver/package-tree.html |    18 +-
 .../hbase/regionserver/wal/package-tree.html    |     2 +-
 .../hadoop/hbase/rest/ScannerResource.html      |    20 +-
 .../hadoop/hbase/rest/model/package-tree.html   |     2 +-
 .../hbase/security/access/package-tree.html     |     2 +-
 .../hadoop/hbase/security/package-tree.html     |     2 +-
 .../util/class-use/CancelableProgressable.html  |     2 +-
 .../hbase/util/class-use/PairOfSameType.html    |    28 +
 .../apache/hadoop/hbase/util/package-tree.html  |    10 +-
 .../apache/hadoop/hbase/util/package-use.html   |     7 +-
 .../org/apache/hadoop/hbase/Version.html        |     6 +-
 .../hbase/master/MetricsMasterSource.html       |    68 +-
 .../hbase/master/MetricsMasterSourceImpl.html   |   212 +-
 .../hbase/master/MetricsMasterWrapper.html      |   252 +-
 .../hbase/master/MetricsMasterWrapperImpl.html  |   293 +-
 .../hbase/regionserver/AbstractMemStore.html    |   656 +-
 .../regionserver/CSLMImmutableSegment.html      |    27 +-
 ...tingMemStore.InMemoryCompactionRunnable.html |  1123 +-
 .../CompactingMemStore.IndexType.html           |  1123 +-
 .../hbase/regionserver/CompactingMemStore.html  |  1123 +-
 .../hbase/regionserver/CompactionPipeline.html  |   539 +-
 .../hbase/regionserver/DefaultMemStore.html     |   303 +-
 .../HRegion.BatchOperation.Visitor.html         | 15309 +++----
 .../regionserver/HRegion.BatchOperation.html    | 15309 +++----
 .../regionserver/HRegion.BulkLoadListener.html  | 15309 +++----
 .../HRegion.FlushResult.Result.html             | 15309 +++----
 .../hbase/regionserver/HRegion.FlushResult.html | 15309 +++----
 .../regionserver/HRegion.FlushResultImpl.html   | 15309 +++----
 .../HRegion.MutationBatchOperation.html         | 15309 +++----
 .../HRegion.ObservedExceptionsInBatch.html      | 15309 +++----
 .../HRegion.PrepareFlushResult.html             | 15309 +++----
 .../regionserver/HRegion.RegionScannerImpl.html | 15309 +++----
 .../HRegion.ReplayBatchOperation.html           | 15309 +++----
 .../regionserver/HRegion.RowLockContext.html    | 15309 +++----
 .../hbase/regionserver/HRegion.RowLockImpl.html | 15309 +++----
 .../hbase/regionserver/HRegion.WriteState.html  | 15309 +++----
 .../hadoop/hbase/regionserver/HRegion.html      | 15309 +++----
 .../regionserver/HStore.StoreFlusherImpl.html   |  4717 +--
 .../hadoop/hbase/regionserver/HStore.html       |  4717 +--
 .../hbase/regionserver/MutableSegment.html      |   160 +-
 .../regionserver/RegionServerAccounting.html    |   420 +-
 .../hbase/regionserver/SegmentFactory.html      |   190 +-
 ...RegionHandler.PostOpenDeployTasksThread.html |   596 +-
 .../regionserver/handler/OpenRegionHandler.html |   596 +-
 .../hadoop/hbase/rest/ScannerResource.html      |   246 +-
 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            |     2 +
 testdevapidocs/allclasses-noframe.html          |     2 +
 testdevapidocs/constant-values.html             |    26 +
 testdevapidocs/index-all.html                   |    80 +-
 ...cing.BlockCompactionsInCompletionRegion.html |     2 +-
 ...tIOFencing.BlockCompactionsInPrepRegion.html |     2 +-
 .../TestIOFencing.CompactionBlockerRegion.html  |     2 +-
 .../hbase/class-use/HBaseClassTestRule.html     |   248 +-
 .../hbase/class-use/HBaseTestingUtility.html    |   166 +-
 ...stFromClientSideScanExcpetion.MyHRegion.html |     2 +-
 ...ook.CompactionCompletionNotifyingRegion.html |     2 +-
 ...FilesEndpoint.HRegionForRefreshHFilesEP.html |     2 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     2 +-
 .../hbase/master/TestMasterMetricsWrapper.html  |    45 +-
 ...edure.CreateTableProcedureOnHDFSFailure.html |    14 +-
 .../procedure/TestCreateTableProcedure.html     |    79 +-
 ...TestCreateTableProcedureMuitipleRegions.html |   396 +
 ...stDeleteColumnFamilyProcedureFromClient.html |     4 +-
 ...TestCreateTableProcedureMuitipleRegions.html |   125 +
 .../hbase/master/procedure/package-frame.html   |     1 +
 .../hbase/master/procedure/package-summary.html |    68 +-
 .../hbase/master/procedure/package-tree.html    |     1 +
 .../org/apache/hadoop/hbase/package-tree.html   |    10 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     2 +-
 .../TestAtomicOperation.MockHRegion.html        |     2 +-
 ...CompactingMemStore.MyCompactingMemStore.html |     2 +-
 .../regionserver/TestHRegion.Appender.html      |    18 +-
 .../regionserver/TestHRegion.FlushThread.html   |    16 +-
 .../TestHRegion.GetTillDoneOrException.html     |    14 +-
 .../TestHRegion.HRegionForTesting.html          |    10 +-
 .../TestHRegion.HRegionWithSeqId.html           |     8 +-
 .../TestHRegion.HStoreForTesting.html           |     6 +-
 .../regionserver/TestHRegion.Incrementer.html   |    18 +-
 .../TestHRegion.IsFlushWALMarker.html           |    10 +-
 .../regionserver/TestHRegion.PutThread.html     |    24 +-
 .../hadoop/hbase/regionserver/TestHRegion.html  |   407 +-
 .../TestHRegionWithInMemoryFlush.html           |    35 +-
 .../TestHStore.MyCompactingMemStore.html        |     2 +-
 ...MyCompactingMemStoreWithCustomCompactor.html |     2 +-
 ...emoryManager.RegionServerAccountingStub.html |     2 +-
 ...penSeqNumUnexpectedIncrease.MockHRegion.html |     2 +-
 .../hbase/regionserver/TestRecoveredEdits.html  |     4 +-
 .../TestRecoveredEditsReplayAndAbort.html       |   495 +
 .../regionserver/TestRegionFavoredNodes.html    |     4 +-
 ...tRegionServerAbort.ErrorThrowingHRegion.html |     2 +-
 ...annerHeartbeatMessages.HeartbeatHRegion.html |     2 +-
 .../TestRecoveredEditsReplayAndAbort.html       |   125 +
 .../hbase/regionserver/package-frame.html       |     1 +
 .../hbase/regionserver/package-summary.html     |   216 +-
 .../hadoop/hbase/regionserver/package-tree.html |     7 +-
 .../hbase/rest/model/TestScannerModel.html      |   126 +-
 .../apache/hadoop/hbase/test/package-tree.html  |     4 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     2 +-
 testdevapidocs/overview-tree.html               |     2 +
 .../hbase/master/TestMasterMetricsWrapper.html  |   232 +-
 ...edure.CreateTableProcedureOnHDFSFailure.html |   469 +-
 .../procedure/TestCreateTableProcedure.html     |   469 +-
 ...TestCreateTableProcedureMuitipleRegions.html |   138 +
 ...ure.TruncateTableProcedureOnHDFSFailure.html |    41 +-
 .../procedure/TestTruncateTableProcedure.html   |    41 +-
 .../regionserver/TestHRegion.Appender.html      | 12062 +++---
 .../regionserver/TestHRegion.FlushThread.html   | 12062 +++---
 .../TestHRegion.GetTillDoneOrException.html     | 12062 +++---
 .../TestHRegion.HRegionForTesting.html          | 12062 +++---
 .../TestHRegion.HRegionWithSeqId.html           | 12062 +++---
 .../TestHRegion.HStoreForTesting.html           | 12062 +++---
 .../regionserver/TestHRegion.Incrementer.html   | 12062 +++---
 .../TestHRegion.IsFlushWALMarker.html           | 12062 +++---
 .../regionserver/TestHRegion.PutThread.html     | 12062 +++---
 .../hadoop/hbase/regionserver/TestHRegion.html  | 12062 +++---
 .../TestHRegionWithInMemoryFlush.html           |   111 +-
 .../TestRecoveredEditsReplayAndAbort.html       |   286 +
 .../hbase/rest/model/TestScannerModel.html      |   228 +-
 205 files changed, 207280 insertions(+), 204261 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index 5068056..ac520dd 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index de32215..4b6abc6 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:20180822142953+00'00')
-/CreationDate (D:20180822144337+00'00')
+/ModDate (D:20180823142957+00'00')
+/CreationDate (D:20180823144348+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index bdba766..e7f46a7 100644
--- a/book.html
+++ b/book.html
@@ -41151,7 +41151,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-08-22 14:29:53 UTC
+Last updated 2018-08-23 14:29:57 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index 9327fb2..3576db7 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 


[04/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html
index edfb4bf..8b112b5 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":9,"i5":9,"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":9,"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,"i48":10,"i49":10,"i50":9,"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":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":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":9,"i129":10};
+var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":9,"i5":9,"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":9,"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,"i48":10,"i49":10,"i50":9,"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":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":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":9,"i130":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";
@@ -644,235 +644,241 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr id="i60" class="altColor">
 <td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testFlushAndMemstoreSizeCounting--">testFlushAndMemstoreSizeCounting</a></span>()</code>
+<div class="block">A test case of HBASE-21041</div>
+</td>
+</tr>
+<tr id="i61" class="rowColor">
+<td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testFlushCacheWhileScanning--">testFlushCacheWhileScanning</a></span>()</code>
 <div class="block">Flushes the cache in a thread while scanning.</div>
 </td>
 </tr>
-<tr id="i61" class="rowColor">
+<tr id="i62" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testFlushedFileWithNoTags--">testFlushedFileWithNoTags</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i62" class="altColor">
+<tr id="i63" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testFlushMarkers--">testFlushMarkers</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i63" class="rowColor">
+<tr id="i64" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testFlushMarkersWALFail--">testFlushMarkersWALFail</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i64" class="altColor">
+<tr id="i65" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testFlushResult--">testFlushResult</a></span>()</code>
 <div class="block">Test that we get the expected flush results back</div>
 </td>
 </tr>
-<tr id="i65" class="rowColor">
+<tr id="i66" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testFlushSizeAccounting--">testFlushSizeAccounting</a></span>()</code>
 <div class="block">Test we do not lose data if we fail a flush and then close.</div>
 </td>
 </tr>
-<tr id="i66" class="altColor">
+<tr id="i67" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testGet_Basic--">testGet_Basic</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i67" class="rowColor">
+<tr id="i68" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testGet_Empty--">testGet_Empty</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i68" class="altColor">
+<tr id="i69" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testGet_FamilyChecker--">testGet_FamilyChecker</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i69" class="rowColor">
+<tr id="i70" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testgetHDFSBlocksDistribution--">testgetHDFSBlocksDistribution</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i70" class="altColor">
+<tr id="i71" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testGetScanner_WithNoFamilies--">testGetScanner_WithNoFamilies</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i71" class="rowColor">
+<tr id="i72" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testGetScanner_WithNotOkFamilies--">testGetScanner_WithNotOkFamilies</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i72" class="altColor">
+<tr id="i73" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testGetScanner_WithOkFamilies--">testGetScanner_WithOkFamilies</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i73" class="rowColor">
+<tr id="i74" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testGetScanner_WithRegionClosed--">testGetScanner_WithRegionClosed</a></span>()</code>
 <div class="block">This method tests https://issues.apache.org/jira/browse/HBASE-2516.</div>
 </td>
 </tr>
-<tr id="i74" class="altColor">
+<tr id="i75" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testGetWhileRegionClose--">testGetWhileRegionClose</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i75" class="rowColor">
+<tr id="i76" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testGetWithFilter--">testGetWithFilter</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i76" class="altColor">
+<tr id="i77" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testHolesInMeta--">testHolesInMeta</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i77" class="rowColor">
+<tr id="i78" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testIncrementTimestampsAreMonotonic--">testIncrementTimestampsAreMonotonic</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i78" class="altColor">
+<tr id="i79" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testIncrWithReadOnlyTable--">testIncrWithReadOnlyTable</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i79" class="rowColor">
+<tr id="i80" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testIndexesScanWithOneDeletedRow--">testIndexesScanWithOneDeletedRow</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i80" class="altColor">
+<tr id="i81" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testLongQualifier--">testLongQualifier</a></span>()</code>
 <div class="block">Write an HFile block full with Cells whose qualifier that are identical between
  0 and Short.MAX_VALUE.</div>
 </td>
 </tr>
-<tr id="i81" class="rowColor">
+<tr id="i82" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testMemstoreSizeAccountingWithFailedPostBatchMutate--">testMemstoreSizeAccountingWithFailedPostBatchMutate</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i82" class="altColor">
+<tr id="i83" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testMemstoreSnapshotSize--">testMemstoreSnapshotSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i83" class="rowColor">
+<tr id="i84" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testMutateRow_WriteRequestCount--">testMutateRow_WriteRequestCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i84" class="altColor">
+<tr id="i85" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testOpenRegionWrittenToWAL--">testOpenRegionWrittenToWAL</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i85" class="rowColor">
+<tr id="i86" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testParallelAppendWithMemStoreFlush--">testParallelAppendWithMemStoreFlush</a></span>()</code>
 <div class="block">Test case to check append function with memstore flushing</div>
 </td>
 </tr>
-<tr id="i86" class="altColor">
+<tr id="i87" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testParallelIncrementWithMemStoreFlush--">testParallelIncrementWithMemStoreFlush</a></span>()</code>
 <div class="block">Test case to check increment function with memstore flushing</div>
 </td>
 </tr>
-<tr id="i87" class="rowColor">
+<tr id="i88" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testPutWithLatestTS--">testPutWithLatestTS</a></span>()</code>
 <div class="block">Tests that the special LATEST_TIMESTAMP option for puts gets replaced by
  the actual timestamp</div>
 </td>
 </tr>
-<tr id="i88" class="altColor">
+<tr id="i89" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testPutWithMemStoreFlush--">testPutWithMemStoreFlush</a></span>()</code>
 <div class="block">Test case to check put function with memstore flushing for same row, same ts</div>
 </td>
 </tr>
-<tr id="i89" class="rowColor">
+<tr id="i90" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testPutWithTsSlop--">testPutWithTsSlop</a></span>()</code>
 <div class="block">Tests that there is server-side filtering for invalid timestamp upper
  bound.</div>
 </td>
 </tr>
-<tr id="i90" class="altColor">
+<tr id="i91" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testRecoveredEditsReplayCompaction--">testRecoveredEditsReplayCompaction</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i91" class="rowColor">
+<tr id="i92" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testRecoveredEditsReplayCompaction-boolean-">testRecoveredEditsReplayCompaction</a></span>(boolean&nbsp;mismatchedRegionName)</code>&nbsp;</td>
 </tr>
-<tr id="i92" class="altColor">
+<tr id="i93" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testRegionInfoFileCreation--">testRegionInfoFileCreation</a></span>()</code>
 <div class="block">Verifies that the .regioninfo file is written on region creation and that
  is recreated if missing during region opening.</div>
 </td>
 </tr>
-<tr id="i93" class="rowColor">
+<tr id="i94" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testRegionReplicaSecondary--">testRegionReplicaSecondary</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i94" class="altColor">
+<tr id="i95" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testRegionReplicaSecondaryIsReadOnly--">testRegionReplicaSecondaryIsReadOnly</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i95" class="rowColor">
+<tr id="i96" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testRegionScanner_Next--">testRegionScanner_Next</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i96" class="altColor">
+<tr id="i97" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testRegionTooBusy--">testRegionTooBusy</a></span>()</code>
 <div class="block">Test RegionTooBusyException thrown when region is busy</div>
 </td>
 </tr>
-<tr id="i97" class="rowColor">
+<tr id="i98" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testReverseScanner_FromMemStore_SingleCF_FullScan--">testReverseScanner_FromMemStore_SingleCF_FullScan</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i98" class="altColor">
+<tr id="i99" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testReverseScanner_FromMemStore_SingleCF_LargerKey--">testReverseScanner_FromMemStore_SingleCF_LargerKey</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i99" class="rowColor">
+<tr id="i100" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testReverseScanner_FromMemStore_SingleCF_Normal--">testReverseScanner_FromMemStore_SingleCF_Normal</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i100" class="altColor">
+<tr id="i101" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testReverseScanner_FromMemStoreAndHFiles_MultiCFs1--">testReverseScanner_FromMemStoreAndHFiles_MultiCFs1</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i101" class="rowColor">
+<tr id="i102" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testReverseScanner_FromMemStoreAndHFiles_MultiCFs2--">testReverseScanner_FromMemStoreAndHFiles_MultiCFs2</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i102" class="altColor">
+<tr id="i103" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testReverseScanner_moreRowsMayExistAfter--">testReverseScanner_moreRowsMayExistAfter</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i103" class="rowColor">
+<tr id="i104" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testReverseScanner_smaller_blocksize--">testReverseScanner_smaller_blocksize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i104" class="altColor">
+<tr id="i105" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testReverseScanner_StackOverflow--">testReverseScanner_StackOverflow</a></span>()</code>
 <div class="block">Test for HBASE-14497: Reverse Scan threw StackOverflow caused by readPt checking</div>
 </td>
 </tr>
-<tr id="i105" class="rowColor">
+<tr id="i106" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testReverseScanShouldNotScanMemstoreIfReadPtLesser--">testReverseScanShouldNotScanMemstoreIfReadPtLesser</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i106" class="altColor">
+<tr id="i107" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testScanner_DeleteOneFamilyNotAnother--">testScanner_DeleteOneFamilyNotAnother</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i107" class="rowColor">
+<tr id="i108" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testScanner_ExplicitColumns_FromFilesOnly_EnforceVersions--">testScanner_ExplicitColumns_FromFilesOnly_EnforceVersions</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i108" class="altColor">
+<tr id="i109" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testScanner_ExplicitColumns_FromMemStore_EnforceVersions--">testScanner_ExplicitColumns_FromMemStore_EnforceVersions</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i109" class="rowColor">
+<tr id="i110" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testScanner_ExplicitColumns_FromMemStoreAndFiles_EnforceVersions--">testScanner_ExplicitColumns_FromMemStoreAndFiles_EnforceVersions</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i110" class="altColor">
+<tr id="i111" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testScanner_JoinedScanners--">testScanner_JoinedScanners</a></span>()</code>
 <div class="block">Added for HBASE-5416
@@ -881,7 +887,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
  conditions.</div>
 </td>
 </tr>
-<tr id="i111" class="rowColor">
+<tr id="i112" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testScanner_JoinedScannersWithLimits--">testScanner_JoinedScannersWithLimits</a></span>()</code>
 <div class="block">HBASE-5416
@@ -889,82 +895,82 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
  Test case when scan limits amount of KVs returned on each next() call.</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/TestHRegion.html#testScanner_StopRow1542--">testScanner_StopRow1542</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i113" class="rowColor">
+<tr id="i114" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testScanner_Wildcard_FromFilesOnly_EnforceVersions--">testScanner_Wildcard_FromFilesOnly_EnforceVersions</a></span>()</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/TestHRegion.html#testScanner_Wildcard_FromMemStore_EnforceVersions--">testScanner_Wildcard_FromMemStore_EnforceVersions</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i115" class="rowColor">
+<tr id="i116" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testScanner_Wildcard_FromMemStoreAndFiles_EnforceVersions--">testScanner_Wildcard_FromMemStoreAndFiles_EnforceVersions</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i116" class="altColor">
+<tr id="i117" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testSequenceId--">testSequenceId</a></span>()</code>
 <div class="block">Test that I can use the max flushed sequence id after the close.</div>
 </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/TestHRegion.html#testSkipRecoveredEditsReplay--">testSkipRecoveredEditsReplay</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i118" class="altColor">
+<tr id="i119" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testSkipRecoveredEditsReplayAllIgnored--">testSkipRecoveredEditsReplayAllIgnored</a></span>()</code>&nbsp;</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/TestHRegion.html#testSkipRecoveredEditsReplaySomeIgnored--">testSkipRecoveredEditsReplaySomeIgnored</a></span>()</code>&nbsp;</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/TestHRegion.html#testSkipRecoveredEditsReplayTheLastFileIgnored--">testSkipRecoveredEditsReplayTheLastFileIgnored</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i121" class="rowColor">
+<tr id="i122" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testStatusSettingToAbortIfAnyExceptionDuringRegionInitilization--">testStatusSettingToAbortIfAnyExceptionDuringRegionInitilization</a></span>()</code>
 <div class="block">Testcase to check state of region initialization task set to ABORTED or not
  if any exceptions during initialization</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/TestHRegion.html#testToShowNPEOnRegionScannerReseek--">testToShowNPEOnRegionScannerReseek</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i123" class="rowColor">
+<tr id="i124" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testWeirdCacheBehaviour--">testWeirdCacheBehaviour</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i124" class="altColor">
+<tr id="i125" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testWriteRequestsCounter--">testWriteRequestsCounter</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i125" class="rowColor">
+<tr id="i126" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testWritesWhileGetting--">testWritesWhileGetting</a></span>()</code>
 <div class="block">Writes very wide records and gets the latest row every time..</div>
 </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/TestHRegion.html#testWritesWhileRollWriter--">testWritesWhileRollWriter</a></span>()</code>
 <div class="block">HBASE-16429 Make sure no stuck if roll writer when ring buffer is filled with appends</div>
 </td>
 </tr>
-<tr id="i127" class="rowColor">
+<tr id="i128" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testWritesWhileScanning--">testWritesWhileScanning</a></span>()</code>
 <div class="block">Writes very wide records and scans for the latest every time..</div>
 </td>
 </tr>
-<tr id="i128" class="altColor">
+<tr id="i129" class="rowColor">
 <td class="colFirst"><code>(package private) static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#verifyData-org.apache.hadoop.hbase.regionserver.HRegion-int-int-byte:A-byte:A...-">verifyData</a></span>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;newReg,
           int&nbsp;startRow,
@@ -972,7 +978,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
           byte[]&nbsp;qf,
           byte[]...&nbsp;families)</code>&nbsp;</td>
 </tr>
-<tr id="i129" class="rowColor">
+<tr id="i130" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#waitForCounter-org.apache.hadoop.hbase.regionserver.wal.MetricsWALSource-java.lang.String-long-">waitForCounter</a></span>(org.apache.hadoop.hbase.regionserver.wal.MetricsWALSource&nbsp;source,
               <a href="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;metricName,
@@ -1354,13 +1360,28 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
+<a name="testFlushAndMemstoreSizeCounting--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testFlushAndMemstoreSizeCounting</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.431">testFlushAndMemstoreSizeCounting</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>
+<div class="block">A test case of HBASE-21041</div>
+<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> - Exception</dd>
+</dl>
+</li>
+</ul>
 <a name="testFlushSizeAccounting--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>testFlushSizeAccounting</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.442">testFlushSizeAccounting</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.472">testFlushSizeAccounting</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>
 <div class="block">Test we do not lose data if we fail a flush and then close.
  Part of HBase-10466.  Tests the following from the issue description:
@@ -1386,7 +1407,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testCloseWithFailingFlush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.507">testCloseWithFailingFlush</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.537">testCloseWithFailingFlush</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>
@@ -1400,7 +1421,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testCompactionAffectedByScanners</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.562">testCompactionAffectedByScanners</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.592">testCompactionAffectedByScanners</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>
@@ -1414,7 +1435,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testToShowNPEOnRegionScannerReseek</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.610">testToShowNPEOnRegionScannerReseek</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.640">testToShowNPEOnRegionScannerReseek</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>
@@ -1428,7 +1449,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testSkipRecoveredEditsReplay</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.640">testSkipRecoveredEditsReplay</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.670">testSkipRecoveredEditsReplay</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>
@@ -1442,7 +1463,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testSkipRecoveredEditsReplaySomeIgnored</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.691">testSkipRecoveredEditsReplaySomeIgnored</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.721">testSkipRecoveredEditsReplaySomeIgnored</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>
@@ -1456,7 +1477,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testSkipRecoveredEditsReplayAllIgnored</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.747">testSkipRecoveredEditsReplayAllIgnored</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.777">testSkipRecoveredEditsReplayAllIgnored</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>
@@ -1470,7 +1491,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testSkipRecoveredEditsReplayTheLastFileIgnored</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.779">testSkipRecoveredEditsReplayTheLastFileIgnored</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.809">testSkipRecoveredEditsReplayTheLastFileIgnored</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>
@@ -1484,7 +1505,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testRecoveredEditsReplayCompaction</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.842">testRecoveredEditsReplayCompaction</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.872">testRecoveredEditsReplayCompaction</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>
@@ -1498,7 +1519,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testRecoveredEditsReplayCompaction</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.847">testRecoveredEditsReplayCompaction</a>(boolean&nbsp;mismatchedRegionName)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.877">testRecoveredEditsReplayCompaction</a>(boolean&nbsp;mismatchedRegionName)
                                         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>
@@ -1512,7 +1533,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testFlushMarkers</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.956">testFlushMarkers</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.986">testFlushMarkers</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>
@@ -1526,7 +1547,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testFlushMarkersWALFail</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1108">testFlushMarkersWALFail</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1138">testFlushMarkersWALFail</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>
@@ -1540,7 +1561,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetWhileRegionClose</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1225">testGetWhileRegionClose</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1255">testGetWhileRegionClose</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>
@@ -1554,7 +1575,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testWeirdCacheBehaviour</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1315">testWeirdCacheBehaviour</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1345">testWeirdCacheBehaviour</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>
@@ -1568,7 +1589,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testAppendWithReadOnlyTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1358">testAppendWithReadOnlyTable</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1388">testAppendWithReadOnlyTable</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>
@@ -1582,7 +1603,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testIncrWithReadOnlyTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1378">testIncrWithReadOnlyTable</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1408">testIncrWithReadOnlyTable</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>
@@ -1596,7 +1617,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteColumns</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1396">deleteColumns</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1426">deleteColumns</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
                            <a href="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;value,
                            <a href="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;keyPrefix)
                     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>
@@ -1612,7 +1633,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumberOfRows</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1415">getNumberOfRows</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;keyPrefix,
+<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1445">getNumberOfRows</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;keyPrefix,
                             <a href="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;value,
                             org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r)
                      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>
@@ -1628,7 +1649,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>buildScanner</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.InternalScanner&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1434">buildScanner</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;keyPrefix,
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.InternalScanner&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1464">buildScanner</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;keyPrefix,
                                                                           <a href="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;value,
                                                                           org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r)
                                                                    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>
@@ -1644,7 +1665,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>putRows</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1454">putRows</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1484">putRows</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
                      int&nbsp;numRows,
                      <a href="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;value,
                      <a href="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;key)
@@ -1661,7 +1682,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testFamilyWithAndWithoutColon</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1470">testFamilyWithAndWithoutColon</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1500">testFamilyWithAndWithoutColon</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>
@@ -1675,7 +1696,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testBatchPut_whileNoRowLocksHeld</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1491">testBatchPut_whileNoRowLocksHeld</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1521">testBatchPut_whileNoRowLocksHeld</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>
@@ -1689,7 +1710,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testBatchPut_whileMultipleRowLocksHeld</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1521">testBatchPut_whileMultipleRowLocksHeld</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1551">testBatchPut_whileMultipleRowLocksHeld</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>
@@ -1703,7 +1724,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>waitForCounter</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1599">waitForCounter</a>(org.apache.hadoop.hbase.regionserver.wal.MetricsWALSource&nbsp;source,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1629">waitForCounter</a>(org.apache.hadoop.hbase.regionserver.wal.MetricsWALSource&nbsp;source,
                             <a href="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;metricName,
                             long&nbsp;expectedCount)
                      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>
@@ -1719,7 +1740,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testAtomicBatchPut</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1613">testAtomicBatchPut</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1643">testAtomicBatchPut</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>
@@ -1733,7 +1754,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testBatchPutWithTsSlop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1682">testBatchPutWithTsSlop</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1712">testBatchPutWithTsSlop</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>
@@ -1747,7 +1768,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>prepareRegionForBachPut</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1706">prepareRegionForBachPut</a>(org.apache.hadoop.hbase.client.Put[]&nbsp;puts,
+<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1736">prepareRegionForBachPut</a>(org.apache.hadoop.hbase.client.Put[]&nbsp;puts,
                                      org.apache.hadoop.hbase.regionserver.wal.MetricsWALSource&nbsp;source,
                                      boolean&nbsp;slop)
                               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>
@@ -1765,7 +1786,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testCheckAndMutate_WithEmptyRowValue</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1726">testCheckAndMutate_WithEmptyRowValue</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1756">testCheckAndMutate_WithEmptyRowValue</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>
@@ -1779,7 +1800,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testCheckAndMutate_WithWrongValue</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1800">testCheckAndMutate_WithWrongValue</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1830">testCheckAndMutate_WithWrongValue</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>
@@ -1793,7 +1814,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testCheckAndMutate_WithCorrectValue</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1854">testCheckAndMutate_WithCorrectValue</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1884">testCheckAndMutate_WithCorrectValue</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>
@@ -1807,7 +1828,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testCheckAndMutate_WithNonEqualCompareOp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1906">testCheckAndMutate_WithNonEqualCompareOp</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1936">testCheckAndMutate_WithNonEqualCompareOp</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>
@@ -1821,7 +1842,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testCheckAndPut_ThatPutWasWritten</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2000">testCheckAndPut_ThatPutWasWritten</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2030">testCheckAndPut_ThatPutWasWritten</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>
@@ -1835,7 +1856,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testCheckAndPut_wrongRowInPut</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2046">testCheckAndPut_wrongRowInPut</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2076">testCheckAndPut_wrongRowInPut</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>
@@ -1849,7 +1870,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testCheckAndDelete_ThatDeleteWasWritten</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2065">testCheckAndDelete_ThatDeleteWasWritten</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2095">testCheckAndDelete_ThatDeleteWasWritten</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>
@@ -1863,7 +1884,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDelete_multiDeleteColumn</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2144">testDelete_multiDeleteColumn</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2174">testDelete_multiDeleteColumn</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>
@@ -1877,7 +1898,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDelete_CheckFamily</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2175">testDelete_CheckFamily</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2205">testDelete_CheckFamily</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>
@@ -1891,7 +1912,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDelete_mixed</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2216">testDelete_mixed</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2246">testDelete_mixed</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>
@@ -1907,7 +1928,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDeleteRowWithFutureTs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2283">testDeleteRowWithFutureTs</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2313">testDeleteRowWithFutureTs</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>
@@ -1921,7 +1942,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testPutWithLatestTS</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2325">testPutWithLatestTS</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2355">testPutWithLatestTS</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 that the special LATEST_TIMESTAMP option for puts gets replaced by
  the actual timestamp</div>
@@ -1937,7 +1958,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testPutWithTsSlop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2376">testPutWithTsSlop</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2406">testPutWithTsSlop</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 that there is server-side filtering for invalid timestamp upper
  bound. Note that the timestamp lower bound is automatically handled for us
@@ -1954,7 +1975,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanner_DeleteOneFamilyNotAnother</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2404">testScanner_DeleteOneFamilyNotAnother</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2434">testScanner_DeleteOneFamilyNotAnother</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>
@@ -1968,7 +1989,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDataInMemoryWithoutWAL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2446">testDataInMemoryWithoutWAL</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2476">testDataInMemoryWithoutWAL</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>
@@ -1982,7 +2003,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDataInMemoryWithoutWAL</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2495">testDataInMemoryWithoutWAL</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2525">testDataInMemoryWithoutWAL</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
                                                org.apache.hadoop.hbase.client.Put&nbsp;originalPut,
                                                org.apache.hadoop.hbase.client.Put&nbsp;addPut,
                                                long&nbsp;delta)
@@ -1999,7 +2020,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDeleteColumns_PostInsert</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2520">testDeleteColumns_PostInsert</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2550">testDeleteColumns_PostInsert</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>
@@ -2015,7 +2036,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testaddFamily_PostInsert</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2527">testaddFamily_PostInsert</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2557">testaddFamily_PostInsert</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>
@@ -2031,7 +2052,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>doTestDelete_AndPostInsert</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2533">doTestDelete_AndPostInsert</a>(org.apache.hadoop.hbase.client.Delete&nbsp;delete)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2563">doTestDelete_AndPostInsert</a>(org.apache.hadoop.hbase.client.Delete&nbsp;delete)
                                 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>
@@ -2047,7 +2068,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDelete_CheckTimestampUpdated</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2578">testDelete_CheckTimestampUpdated</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2608">testDelete_CheckTimestampUpdated</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>
@@ -2061,7 +2082,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGet_FamilyChecker</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2618">testGet_FamilyChecker</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2648">testGet_FamilyChecker</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>
@@ -2075,7 +2096,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGet_Basic</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2645">testGet_Basic</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2675">testGet_Basic</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>
@@ -2089,7 +2110,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGet_Empty</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2696">testGet_Empty</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2726">testGet_Empty</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>
@@ -2103,7 +2124,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetWithFilter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2714">testGetWithFilter</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2744">testGetWithFilter</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>
@@ -2119,7 +2140,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetScanner_WithOkFamilies</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2779">testGetScanner_WithOkFamilies</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2809">testGetScanner_WithOkFamilies</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>
@@ -2133,7 +2154,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetScanner_WithNotOkFamilies</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2803">testGetScanner_WithNotOkFamilies</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2833">testGetScanner_WithNotOkFamilies</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>
@@ -2147,7 +2168,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetScanner_WithNoFamilies</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2828">testGetScanner_WithNoFamilies</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2858">testGetScanner_WithNoFamilies</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>
@@ -2161,7 +2182,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetScanner_WithRegionClosed</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2876">testGetScanner_WithRegionClosed</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2906">testGetScanner_WithRegionClosed</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">This method tests https://issues.apache.org/jira/browse/HBASE-2516.</div>
 <dl>
@@ -2176,7 +2197,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testRegionScanner_Next</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2908">testRegionScanner_Next</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2938">testRegionScanner_Next</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 +2211,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanner_ExplicitColumns_FromMemStore_EnforceVersions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2973">testScanner_ExplicitColumns_FromMemStore_EnforceVersions</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3003">testScanner_ExplicitColumns_FromMemStore_EnforceVersions</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>
@@ -2204,7 +2225,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanner_ExplicitColumns_FromFilesOnly_EnforceVersions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3031">testScanner_ExplicitColumns_FromFilesOnly_EnforceVersions</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3061">testScanner_ExplicitColumns_FromFilesOnly_EnforceVersions</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>
@@ -2218,7 +2239,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanner_ExplicitColumns_FromMemStoreAndFiles_EnforceVersions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3093">testScanner_ExplicitColumns_FromMemStoreAndFiles_EnforceVersions</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3123">testScanner_ExplicitColumns_FromMemStoreAndFiles_EnforceVersions</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>
@@ -2232,7 +2253,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanner_Wildcard_FromMemStore_EnforceVersions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3175">testScanner_Wildcard_FromMemStore_EnforceVersions</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3205">testScanner_Wildcard_FromMemStore_EnforceVersions</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>
@@ -2246,7 +2267,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanner_Wildcard_FromFilesOnly_EnforceVersions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3235">testScanner_Wildcard_FromFilesOnly_EnforceVersions</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3265">testScanner_Wildcard_FromFilesOnly_EnforceVersions</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>
@@ -2260,7 +2281,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanner_StopRow1542</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3295">testScanner_StopRow1542</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3325">testScanner_StopRow1542</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>
@@ -2274,7 +2295,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanner_Wildcard_FromMemStoreAndFiles_EnforceVersions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3343">testScanner_Wildcard_FromMemStoreAndFiles_EnforceVersions</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3373">testScanner_Wildcard_FromMemStoreAndFiles_EnforceVersions</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>
@@ -2288,7 +2309,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanner_JoinedScanners</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3427">testScanner_JoinedScanners</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3457">testScanner_JoinedScanners</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">Added for HBASE-5416
 
@@ -2306,7 +2327,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanner_JoinedScannersWithLimits</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3495">testScanner_JoinedScannersWithLimits</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3525">testScanner_JoinedScannersWithLimits</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">HBASE-5416
 
@@ -2323,7 +2344,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testLongQualifier</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3594">testLongQualifier</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3624">testLongQualifier</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>
 <div class="block">Write an HFile block full with Cells whose qualifier that are identical between
  0 and Short.MAX_VALUE. See HBASE-13329.</div>
@@ -2339,7 +2360,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testFlushCacheWhileScanning</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3622">testFlushCacheWhileScanning</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3652">testFlushCacheWhileScanning</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">Flushes the cache in a thread while scanning. The tests verify that the
@@ -2358,7 +2379,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testWritesWhileScanning</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3753">testWritesWhileScanning</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3783">testWritesWhileScanning</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">Writes very wide records and scans for the latest every time.. Flushes and
@@ -2376,7 +2397,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testWritesWhileGetting</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3930">testWritesWhileGetting</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3960">testWritesWhileGetting</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>
 <div class="block">Writes very wide records and gets the latest row every time.. Flushes and
  compacts the region aggressivly to catch issues.</div>
@@ -2394,7 +2415,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockL

<TRUNCATED>

[21/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
index db8431b..a8cb7c4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
@@ -885,7766 +885,7797 @@
 <span class="sourceLineNo">877</span>   * @return What the next sequence (edit) id should be.<a name="line.877"></a>
 <span class="sourceLineNo">878</span>   * @throws IOException e<a name="line.878"></a>
 <span class="sourceLineNo">879</span>   */<a name="line.879"></a>
-<span class="sourceLineNo">880</span>  private long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.880"></a>
-<span class="sourceLineNo">881</span><a name="line.881"></a>
-<span class="sourceLineNo">882</span>    //Refuse to open the region if there is no column family in the table<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.884"></a>
-<span class="sourceLineNo">885</span>          " should have at least one column family.");<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    long nextSeqId = -1;<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    try {<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.891"></a>
-<span class="sourceLineNo">892</span>      return nextSeqId;<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    } finally {<a name="line.893"></a>
-<span class="sourceLineNo">894</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      // At least it will be 0 otherwise.<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      if (nextSeqId == -1) {<a name="line.896"></a>
-<span class="sourceLineNo">897</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.897"></a>
-<span class="sourceLineNo">898</span>          " initialization.");<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      }<a name="line.899"></a>
-<span class="sourceLineNo">900</span>    }<a name="line.900"></a>
-<span class="sourceLineNo">901</span>  }<a name="line.901"></a>
-<span class="sourceLineNo">902</span><a name="line.902"></a>
-<span class="sourceLineNo">903</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.903"></a>
-<span class="sourceLineNo">904</span>      final MonitoredTask status) throws IOException {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    if (coprocessorHost != null) {<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      coprocessorHost.preOpen();<a name="line.907"></a>
-<span class="sourceLineNo">908</span>    }<a name="line.908"></a>
-<span class="sourceLineNo">909</span><a name="line.909"></a>
-<span class="sourceLineNo">910</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.910"></a>
-<span class="sourceLineNo">911</span>    // Only the primary replica should write .regioninfo<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      status.setStatus("Writing region info on filesystem");<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      fs.checkRegionInfoOnFilesystem();<a name="line.914"></a>
-<span class="sourceLineNo">915</span>    }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>    // Initialize all the HStores<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    status.setStatus("Initializing all the Stores");<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.920"></a>
-<span class="sourceLineNo">921</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.922"></a>
-<span class="sourceLineNo">923</span>      try {<a name="line.923"></a>
-<span class="sourceLineNo">924</span>        // update the stores that we are replaying<a name="line.924"></a>
-<span class="sourceLineNo">925</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        // Recover any edits if available.<a name="line.927"></a>
-<span class="sourceLineNo">928</span>        maxSeqId = Math.max(maxSeqId,<a name="line.928"></a>
-<span class="sourceLineNo">929</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        // Make sure mvcc is up to max.<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      } finally {<a name="line.932"></a>
-<span class="sourceLineNo">933</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        // update the stores that we are done replaying<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        stores.forEach(HStore::stopReplayingFromWAL);<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>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    this.writestate.flushRequested = false;<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    this.writestate.compacting.set(0);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>    if (this.writestate.writesEnabled) {<a name="line.944"></a>
-<span class="sourceLineNo">945</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      // Remove temporary data left over from old regions<a name="line.946"></a>
-<span class="sourceLineNo">947</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.947"></a>
-<span class="sourceLineNo">948</span>      fs.cleanupTempDir();<a name="line.948"></a>
-<span class="sourceLineNo">949</span>    }<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>    if (this.writestate.writesEnabled) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      // these directories here on open.  We may be opening a region that was<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      // being split but we crashed in the middle of it all.<a name="line.955"></a>
-<span class="sourceLineNo">956</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      fs.cleanupAnySplitDetritus();<a name="line.957"></a>
-<span class="sourceLineNo">958</span>      fs.cleanupMergesDir();<a name="line.958"></a>
-<span class="sourceLineNo">959</span>    }<a name="line.959"></a>
+<span class="sourceLineNo">880</span>  @VisibleForTesting<a name="line.880"></a>
+<span class="sourceLineNo">881</span>  long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>    //Refuse to open the region if there is no column family in the table<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.885"></a>
+<span class="sourceLineNo">886</span>          " should have at least one column family.");<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    }<a name="line.887"></a>
+<span class="sourceLineNo">888</span><a name="line.888"></a>
+<span class="sourceLineNo">889</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>    long nextSeqId = -1;<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    try {<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      return nextSeqId;<a name="line.893"></a>
+<span class="sourceLineNo">894</span>    } catch (IOException e) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      LOG.warn("Failed initialize of region= {}, starting to roll back memstore",<a name="line.895"></a>
+<span class="sourceLineNo">896</span>          getRegionInfo().getRegionNameAsString(), e);<a name="line.896"></a>
+<span class="sourceLineNo">897</span>      // global memstore size will be decreased when dropping memstore<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      try {<a name="line.898"></a>
+<span class="sourceLineNo">899</span>        //drop the memory used by memstore if open region fails<a name="line.899"></a>
+<span class="sourceLineNo">900</span>        dropMemStoreContents();<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      } catch (IOException ioE) {<a name="line.901"></a>
+<span class="sourceLineNo">902</span>        if (conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {<a name="line.902"></a>
+<span class="sourceLineNo">903</span>          LOG.warn("Failed drop memstore of region= {}, "<a name="line.903"></a>
+<span class="sourceLineNo">904</span>                  + "some chunks may not released forever since MSLAB is enabled",<a name="line.904"></a>
+<span class="sourceLineNo">905</span>              getRegionInfo().getRegionNameAsString());<a name="line.905"></a>
+<span class="sourceLineNo">906</span>        }<a name="line.906"></a>
+<span class="sourceLineNo">907</span><a name="line.907"></a>
+<span class="sourceLineNo">908</span>      }<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      throw e;<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    } finally {<a name="line.910"></a>
+<span class="sourceLineNo">911</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      // At least it will be 0 otherwise.<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      if (nextSeqId == -1) {<a name="line.913"></a>
+<span class="sourceLineNo">914</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.914"></a>
+<span class="sourceLineNo">915</span>          " initialization.");<a name="line.915"></a>
+<span class="sourceLineNo">916</span>      }<a name="line.916"></a>
+<span class="sourceLineNo">917</span>    }<a name="line.917"></a>
+<span class="sourceLineNo">918</span>  }<a name="line.918"></a>
+<span class="sourceLineNo">919</span><a name="line.919"></a>
+<span class="sourceLineNo">920</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.920"></a>
+<span class="sourceLineNo">921</span>      final MonitoredTask status) throws IOException {<a name="line.921"></a>
+<span class="sourceLineNo">922</span>    if (coprocessorHost != null) {<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.923"></a>
+<span class="sourceLineNo">924</span>      coprocessorHost.preOpen();<a name="line.924"></a>
+<span class="sourceLineNo">925</span>    }<a name="line.925"></a>
+<span class="sourceLineNo">926</span><a name="line.926"></a>
+<span class="sourceLineNo">927</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.927"></a>
+<span class="sourceLineNo">928</span>    // Only the primary replica should write .regioninfo<a name="line.928"></a>
+<span class="sourceLineNo">929</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>      status.setStatus("Writing region info on filesystem");<a name="line.930"></a>
+<span class="sourceLineNo">931</span>      fs.checkRegionInfoOnFilesystem();<a name="line.931"></a>
+<span class="sourceLineNo">932</span>    }<a name="line.932"></a>
+<span class="sourceLineNo">933</span><a name="line.933"></a>
+<span class="sourceLineNo">934</span>    // Initialize all the HStores<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    status.setStatus("Initializing all the Stores");<a name="line.935"></a>
+<span class="sourceLineNo">936</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.937"></a>
+<span class="sourceLineNo">938</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.938"></a>
+<span class="sourceLineNo">939</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.939"></a>
+<span class="sourceLineNo">940</span>      try {<a name="line.940"></a>
+<span class="sourceLineNo">941</span>        // update the stores that we are replaying<a name="line.941"></a>
+<span class="sourceLineNo">942</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.942"></a>
+<span class="sourceLineNo">943</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.943"></a>
+<span class="sourceLineNo">944</span>        // Recover any edits if available.<a name="line.944"></a>
+<span class="sourceLineNo">945</span>        maxSeqId = Math.max(maxSeqId,<a name="line.945"></a>
+<span class="sourceLineNo">946</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.946"></a>
+<span class="sourceLineNo">947</span>        // Make sure mvcc is up to max.<a name="line.947"></a>
+<span class="sourceLineNo">948</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      } finally {<a name="line.949"></a>
+<span class="sourceLineNo">950</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        // update the stores that we are done replaying<a name="line.951"></a>
+<span class="sourceLineNo">952</span>        stores.forEach(HStore::stopReplayingFromWAL);<a name="line.952"></a>
+<span class="sourceLineNo">953</span>      }<a name="line.953"></a>
+<span class="sourceLineNo">954</span>    }<a name="line.954"></a>
+<span class="sourceLineNo">955</span>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.955"></a>
+<span class="sourceLineNo">956</span><a name="line.956"></a>
+<span class="sourceLineNo">957</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.957"></a>
+<span class="sourceLineNo">958</span>    this.writestate.flushRequested = false;<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    this.writestate.compacting.set(0);<a name="line.959"></a>
 <span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>    // Initialize split policy<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.962"></a>
-<span class="sourceLineNo">963</span><a name="line.963"></a>
-<span class="sourceLineNo">964</span>    // Initialize flush policy<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.965"></a>
-<span class="sourceLineNo">966</span><a name="line.966"></a>
-<span class="sourceLineNo">967</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    for (HStore store: stores.values()) {<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<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>    // Use maximum of log sequenceid or that which was found in stores<a name="line.972"></a>
-<span class="sourceLineNo">973</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.973"></a>
-<span class="sourceLineNo">974</span>    long maxSeqIdFromFile =<a name="line.974"></a>
-<span class="sourceLineNo">975</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.975"></a>
-<span class="sourceLineNo">976</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.976"></a>
-<span class="sourceLineNo">977</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    // the max sequence id file.<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.985"></a>
-<span class="sourceLineNo">986</span><a name="line.986"></a>
-<span class="sourceLineNo">987</span>    // A region can be reopened if failed a split; reset flags<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    this.closing.set(false);<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    this.closed.set(false);<a name="line.989"></a>
-<span class="sourceLineNo">990</span><a name="line.990"></a>
-<span class="sourceLineNo">991</span>    if (coprocessorHost != null) {<a name="line.991"></a>
-<span class="sourceLineNo">992</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.992"></a>
-<span class="sourceLineNo">993</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.993"></a>
-<span class="sourceLineNo">994</span>      coprocessorHost.postOpen();<a name="line.994"></a>
-<span class="sourceLineNo">995</span>    }<a name="line.995"></a>
-<span class="sourceLineNo">996</span><a name="line.996"></a>
-<span class="sourceLineNo">997</span>    status.markComplete("Region opened successfully");<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    return nextSeqId;<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>   * Open all Stores.<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>   * @param reporter<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   * @param status<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>   * @return Highest sequenceId found out in a Store.<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * @throws IOException<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   */<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      throws IOException {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>    // Load in all the HStores.<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    long maxSeqId = -1;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    long maxMemstoreTS = -1;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span><a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span><a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      // initialize each store in parallel<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>          @Override<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>          public HStore call() throws IOException {<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>            return instantiateHStore(family);<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          }<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>        });<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      }<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>      boolean allStoresOpened = false;<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>      boolean hasSloppyStores = false;<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>      try {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>          HStore store = future.get();<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>          if (store.isSloppyMemStore()) {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            hasSloppyStores = true;<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>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>              storeMaxSequenceId);<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            maxSeqId = storeMaxSequenceId;<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>          }<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>          }<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>        }<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>        allStoresOpened = true;<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>        if(hasSloppyStores) {<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>                  .build();<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        }<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>      } catch (InterruptedException e) {<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>      } catch (ExecutionException e) {<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        throw new IOException(e.getCause());<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>      } finally {<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        if (!allStoresOpened) {<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>          // something went wrong, close all opened stores<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>          for (HStore store : this.stores.values()) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>            try {<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>              store.close();<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>            } catch (IOException e) {<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>              LOG.warn("close store failed", e);<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>            }<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          }<a name="line.1075"></a>
+<span class="sourceLineNo">961</span>    if (this.writestate.writesEnabled) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      // Remove temporary data left over from old regions<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      fs.cleanupTempDir();<a name="line.965"></a>
+<span class="sourceLineNo">966</span>    }<a name="line.966"></a>
+<span class="sourceLineNo">967</span><a name="line.967"></a>
+<span class="sourceLineNo">968</span>    if (this.writestate.writesEnabled) {<a name="line.968"></a>
+<span class="sourceLineNo">969</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.969"></a>
+<span class="sourceLineNo">970</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.970"></a>
+<span class="sourceLineNo">971</span>      // these directories here on open.  We may be opening a region that was<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      // being split but we crashed in the middle of it all.<a name="line.972"></a>
+<span class="sourceLineNo">973</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.973"></a>
+<span class="sourceLineNo">974</span>      fs.cleanupAnySplitDetritus();<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      fs.cleanupMergesDir();<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    }<a name="line.976"></a>
+<span class="sourceLineNo">977</span><a name="line.977"></a>
+<span class="sourceLineNo">978</span>    // Initialize split policy<a name="line.978"></a>
+<span class="sourceLineNo">979</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.979"></a>
+<span class="sourceLineNo">980</span><a name="line.980"></a>
+<span class="sourceLineNo">981</span>    // Initialize flush policy<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.982"></a>
+<span class="sourceLineNo">983</span><a name="line.983"></a>
+<span class="sourceLineNo">984</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.984"></a>
+<span class="sourceLineNo">985</span>    for (HStore store: stores.values()) {<a name="line.985"></a>
+<span class="sourceLineNo">986</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<a name="line.986"></a>
+<span class="sourceLineNo">987</span>    }<a name="line.987"></a>
+<span class="sourceLineNo">988</span><a name="line.988"></a>
+<span class="sourceLineNo">989</span>    // Use maximum of log sequenceid or that which was found in stores<a name="line.989"></a>
+<span class="sourceLineNo">990</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.990"></a>
+<span class="sourceLineNo">991</span>    long maxSeqIdFromFile =<a name="line.991"></a>
+<span class="sourceLineNo">992</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.994"></a>
+<span class="sourceLineNo">995</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.995"></a>
+<span class="sourceLineNo">996</span>    // the max sequence id file.<a name="line.996"></a>
+<span class="sourceLineNo">997</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.997"></a>
+<span class="sourceLineNo">998</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.998"></a>
+<span class="sourceLineNo">999</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<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>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span><a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>    // A region can be reopened if failed a split; reset flags<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>    this.closing.set(false);<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    this.closed.set(false);<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span><a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>    if (coprocessorHost != null) {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>      coprocessorHost.postOpen();<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>    }<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span><a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>    status.markComplete("Region opened successfully");<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>    return nextSeqId;<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>  }<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span><a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>  /**<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>   * Open all Stores.<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>   * @param reporter<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>   * @param status<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>   * @return Highest sequenceId found out in a Store.<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>   * @throws IOException<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>   */<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>      throws IOException {<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    // Load in all the HStores.<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>    long maxSeqId = -1;<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>    long maxMemstoreTS = -1;<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span><a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>      // initialize each store in parallel<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>          @Override<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>          public HStore call() throws IOException {<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>            return instantiateHStore(family);<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>          }<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>        });<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>      }<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>      boolean allStoresOpened = false;<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>      boolean hasSloppyStores = false;<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>      try {<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>          HStore store = future.get();<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>          if (store.isSloppyMemStore()) {<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>            hasSloppyStores = true;<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>          }<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span><a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>              storeMaxSequenceId);<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>            maxSeqId = storeMaxSequenceId;<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>          }<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>          }<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span>        }<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>        allStoresOpened = true;<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>        if(hasSloppyStores) {<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>                  .build();<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1075"></a>
 <span class="sourceLineNo">1076</span>        }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      }<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    }<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>  }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span><a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>    // Initialize all the HStores<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>    status.setStatus("Warming up all the Stores");<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    try {<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>      initializeStores(reporter, status);<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>    } finally {<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>      status.markComplete("Done warming up.");<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>    }<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>  }<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>   * @return Map of StoreFiles by column family<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>   */<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    for (HStore store : stores.values()) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      if (storeFiles == null) {<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>        continue;<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>        storeFileNames.add(storeFile.getPath());<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      }<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>    }<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>    return allStoreFiles;<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>  }<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span><a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>  @VisibleForTesting<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>        mvcc);<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  }<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span><a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>        mvcc);<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span><a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>    // Store SeqId in HDFS when a region closes<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    // table is still online<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>        mvcc.getReadPoint());<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>    }<a name="line.1136"></a>
+<span class="sourceLineNo">1077</span>      } catch (InterruptedException e) {<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>      } catch (ExecutionException e) {<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>        throw new IOException(e.getCause());<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      } finally {<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>        if (!allStoresOpened) {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>          // something went wrong, close all opened stores<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>          for (HStore store : this.stores.values()) {<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>            try {<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>              store.close();<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>            } catch (IOException e) {<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>              LOG.warn("close store failed", e);<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>            }<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>      }<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>    }<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>  }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span><a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>    // Initialize all the HStores<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>    status.setStatus("Warming up all the Stores");<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>    try {<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>      initializeStores(reporter, status);<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>    } finally {<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>      status.markComplete("Done warming up.");<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>    }<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>  }<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span><a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>  /**<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>   * @return Map of StoreFiles by column family<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>   */<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>    for (HStore store : stores.values()) {<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>      if (storeFiles == null) {<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>        continue;<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span>      }<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>        storeFileNames.add(storeFile.getPath());<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>      }<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>    }<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>    return allStoreFiles;<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>  }<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span><a name="line.1128"></a>
+<span class="sourceLineNo">1129</span>  @VisibleForTesting<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>        mvcc);<a name="line.1136"></a>
 <span class="sourceLineNo">1137</span>  }<a name="line.1137"></a>
 <span class="sourceLineNo">1138</span><a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>  /**<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>   * @return True if this region has references.<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>   */<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>  public boolean hasReferences() {<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<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>  public void blockUpdates() {<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>    this.updatesLock.writeLock().lock();<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>  }<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span><a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>  public void unblockUpdates() {<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>    this.updatesLock.writeLock().unlock();<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>  }<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span><a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>    return hdfsBlocksDistribution;<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>  }<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span><a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>  /**<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>   * @param conf configuration<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>   * @param regionInfo encoded name of the region<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>   * @throws IOException<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>   */<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>  }<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span><a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>  /**<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>   * @param conf configuration<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>   * @param regionInfo encoded name of the region<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>   * @param tablePath the table directory<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>   * @throws IOException<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>   */<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1186"></a>
-<span class="sourceLineNo">1187</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1188"></a>
-<span class="sourceLineNo">1189</span><a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span>      if (locatedFileStatusList == null) {<a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>        continue;<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>      }<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span><a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>        Path p = status.getPath();<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>          // creation<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>              status.getBlockLocations());<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span>        } else {<a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>          throw new IOException("path=" + p<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>              + " doesn't look like a valid StoreFile");<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>        }<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>      }<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>    }<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>    return hdfsBlocksDistribution;<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>   * Increase the size of mem store in this region and the size of global mem<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>   * store<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>   */<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>  }<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span><a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>    if (this.rsAccounting != null) {<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>    }<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>    long dataSize =<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1234"></a>
+<span class="sourceLineNo">1139</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span>        mvcc);<a name="line.1145"></a>
+<span class="sourceLineNo">1146</span><a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>    // Store SeqId in HDFS when a region closes<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>    // table is still online<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span>        mvcc.getReadPoint());<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>    }<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>  }<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span><a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>  /**<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>   * @return True if this region has references.<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>   */<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>  public boolean hasReferences() {<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>  }<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span><a name="line.1162"></a>
+<span class="sourceLineNo">1163</span>  public void blockUpdates() {<a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>    this.updatesLock.writeLock().lock();<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>  }<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span><a name="line.1166"></a>
+<span class="sourceLineNo">1167</span>  public void unblockUpdates() {<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>    this.updatesLock.writeLock().unlock();<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>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1172"></a>
+<span class="sourceLineNo">1173</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1174"></a>
+<span class="sourceLineNo">1175</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>    return hdfsBlocksDistribution;<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span>  }<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span><a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>  /**<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>   * @param conf configuration<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1182"></a>
+<span class="sourceLineNo">1183</span>   * @param regionInfo encoded name of the region<a name="line.1183"></a>
+<span class="sourceLineNo">1184</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1184"></a>
+<span class="sourceLineNo">1185</span>   * @throws IOException<a name="line.1185"></a>
+<span class="sourceLineNo">1186</span>   */<a name="line.1186"></a>
+<span class="sourceLineNo">1187</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1187"></a>
+<span class="sourceLineNo">1188</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1188"></a>
+<span class="sourceLineNo">1189</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1189"></a>
+<span class="sourceLineNo">1190</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1190"></a>
+<span class="sourceLineNo">1191</span>  }<a name="line.1191"></a>
+<span class="sourceLineNo">1192</span><a name="line.1192"></a>
+<span class="sourceLineNo">1193</span>  /**<a name="line.1193"></a>
+<span class="sourceLineNo">1194</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1194"></a>
+<span class="sourceLineNo">1195</span>   * @param conf configuration<a name="line.1195"></a>
+<span class="sourceLineNo">1196</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1196"></a>
+<span class="sourceLineNo">1197</span>   * @param regionInfo encoded name of the region<a name="line.1197"></a>
+<span class="sourceLineNo">1198</span>   * @param tablePath the table directory<a name="line.1198"></a>
+<span class="sourceLineNo">1199</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1199"></a>
+<span class="sourceLineNo">1200</span>   * @throws IOException<a name="line.1200"></a>
+<span class="sourceLineNo">1201</span>   */<a name="line.1201"></a>
+<span class="sourceLineNo">1202</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1202"></a>
+<span class="sourceLineNo">1203</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1203"></a>
+<span class="sourceLineNo">1204</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1204"></a>
+<span class="sourceLineNo">1205</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1205"></a>
+<span class="sourceLineNo">1206</span><a name="line.1206"></a>
+<span class="sourceLineNo">1207</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1207"></a>
+<span class="sourceLineNo">1208</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1208"></a>
+<span class="sourceLineNo">1209</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1209"></a>
+<span class="sourceLineNo">1210</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1210"></a>
+<span class="sourceLineNo">1211</span>      if (locatedFileStatusList == null) {<a name="line.1211"></a>
+<span class="sourceLineNo">1212</span>        continue;<a name="line.1212"></a>
+<span class="sourceLineNo">1213</span>      }<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span><a name="line.1214"></a>
+<span class="sourceLineNo">1215</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1215"></a>
+<span class="sourceLineNo">1216</span>        Path p = status.getPath();<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1217"></a>
+<span class="sourceLineNo">1218</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span>          // creation<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1224"></a>
+<span class="sourceLineNo">1225</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1225"></a>
+<span class="sourceLineNo">1226</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1226"></a>
+<span class="sourceLineNo">1227</span>              status.getBlockLocations());<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span>        } else {<a name="line.1228"></a>
+<span class="sourceLineNo">1229</span>          throw new IOException("path=" + p<a name="line.1229"></a>
+<span class="sourceLineNo">1230</span>              + " doesn't look like a valid StoreFile");<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>    }<a name="line.1233"></a>
+<span class="sourceLineNo">1234</span>    return hdfsBlocksDistribution;<a name="line.1234"></a>
 <span class="sourceLineNo">1235</span>  }<a name="line.1235"></a>
 <span class="sourceLineNo">1236</span><a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>  }<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span><a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>    if (this.rsAccounting != null) {<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>    }<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>    long dataSize =<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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 checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    if (memStoreDataSize &lt; 0) {<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>    }<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>  }<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span><a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>  @Override<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>  public RegionInfo getRegionInfo() {<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>    return this.fs.getRegionInfo();<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>  }<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span><a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>  /**<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>   * @return Instance of {@link RegionServerServices} used by this HRegion.<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>   * Can be null.<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>   */<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>  RegionServerServices getRegionServerServices() {<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>    return this.rsServices;<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>  }<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span><a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>  @Override<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>  public long getReadRequestsCount() {<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>    return readRequestsCount.sum();<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>  }<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span><a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>  @Override<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>  public long getCpRequestsCount() {<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>    return cpRequestsCount.sum();<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>  @Override<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>  public long getFilteredReadRequestsCount() {<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>    return filteredReadRequestsCount.sum();<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>  @Override<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>  public long getWriteRequestsCount() {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    return writeRequestsCount.sum();<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>  }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>  @Override<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>  public long getMemStoreDataSize() {<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>    return memStoreSizing.getDataSize();<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>  @Override<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>  public long getMemStoreHeapSize() {<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>    return memStoreSizing.getHeapSize();<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>  }<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span><a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>  @Override<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>  public long getMemStoreOffHeapSize() {<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>    return memStoreSizing.getOffHeapSize();<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>  }<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span><a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>  /** @return store services for this region, to access services required by store level needs */<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>  public RegionServicesForStores getRegionServicesForStores() {<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>    return regionServicesForStores;<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>  @Override<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>  public long getNumMutationsWithoutWAL() {<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>    return numMutationsWithoutWAL.sum();<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>  @Override<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>  public long getDataInMemoryWithoutWAL() {<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>    return dataInMemoryWithoutWAL.sum();<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>  }<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span><a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>  @Override<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>  public long getBlockedRequestsCount() {<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>    return blockedRequestsCount.sum();<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>  }<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span><a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>  @Override<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>  public long getCheckAndMutateChecksPassed() {<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>    return checkAndMutateChecksPassed.sum();<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 long getCheckAndMutateChecksFailed() {<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    return checkAndMutateChecksFailed.sum();<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>  // TODO Needs to check whether we should expose our metrics system to CPs. If CPs themselves doing<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>  // the op and bypassing the core, this might be needed? Should be stop supporting the bypass<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>  // feature?<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>  public MetricsRegion getMetrics() {<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>    return metricsRegion;<a name="line.1342"></a>
+<span class="sourceLineNo">1237</span>  /**<a name="line.1237"></a>
+<span class="sourceLineNo">1238</span>   * Increase the size of mem store in this region and the size of global mem<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span>   * store<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span>   */<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>  }<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span><a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>    if (this.rsAccounting != null) {<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>    }<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>    long dataSize =<a name="line.1249"></a>
+<span class="sourceLineNo">1250</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1250"></a>
+<span class="sourceLineNo">1251</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>  }<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span><a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span>  }<a name="line.1256"></a>
+<span class="sourceLineNo">1257</span><a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>    if (this.rsAccounting != null) {<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>    }<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>    long dataSize =<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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>  private void checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>    if (memStoreDataSize &lt; 0) {<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>    }<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>  }<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span><a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>  @Override<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>  public RegionInfo getRegionInfo() {<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>    return this.fs.getRegionInfo();<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>  }<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 cla

<TRUNCATED>

[39/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/MutableSegment.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/MutableSegment.html b/devapidocs/org/apache/hadoop/hbase/regionserver/MutableSegment.html
index c15731a..504d784 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/MutableSegment.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/MutableSegment.html
@@ -179,9 +179,10 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.htm
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>protected </code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#MutableSegment-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-">MutableSegment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;cellSet,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#MutableSegment-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">MutableSegment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;cellSet,
               <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
-              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB)</code>&nbsp;</td>
+              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB,
+              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -290,7 +291,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.htm
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="MutableSegment-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-">
+<a name="MutableSegment-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
 <!--   -->
 </a>
 <ul class="blockListLast">
@@ -298,7 +299,8 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.htm
 <h4>MutableSegment</h4>
 <pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.50">MutableSegment</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;cellSet,
                          <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
-                         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB)</pre>
+                         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB,
+                         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 </li>
 </ul>
 </li>
@@ -315,7 +317,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.60">add</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.64">add</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                 boolean&nbsp;mslabUsed,
                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memStoreSizing,
                 boolean&nbsp;sizeAddedPreOperation)</pre>
@@ -333,7 +335,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>upsert</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.65">upsert</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.69">upsert</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                    long&nbsp;readpoint,
                    <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memStoreSizing,
                    boolean&nbsp;sizeAddedPreOperation)</pre>
@@ -345,7 +347,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>setInMemoryFlushed</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.115">setInMemoryFlushed</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.119">setInMemoryFlushed</a>()</pre>
 </li>
 </ul>
 <a name="first--">
@@ -354,7 +356,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>first</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.124">first</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.128">first</a>()</pre>
 <div class="block">Returns the first cell in the segment</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -368,7 +370,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.htm
 <ul class="blockListLast">
 <li class="blockList">
 <h4>indexEntrySize</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.128">indexEntrySize</a>()</pre>
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.132">indexEntrySize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntrySize--">indexEntrySize</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html b/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html
index 0a18af7..0758f66 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.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};
+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};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.38">RegionServerAccounting</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.35">RegionServerAccounting</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">RegionServerAccounting keeps record of some basic real time information about
  the Region Server. Currently, it keeps record the global memstore size and global memstore
@@ -169,10 +169,6 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/management/MemoryType.html?is-external=true" title="class or interface in java.lang.management">MemoryType</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#memType">memType</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/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;byte[],<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&gt;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#replayEditsPerRegion">replayEditsPerRegion</a></span></code>&nbsp;</td>
-</tr>
 </table>
 </li>
 </ul>
@@ -207,89 +203,69 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </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/RegionServerAccounting.html#addRegionReplayEditsSize-byte:A-org.apache.hadoop.hbase.regionserver.MemStoreSize-">addRegionReplayEditsSize</a></span>(byte[]&nbsp;regionName,
-                        <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;memStoreSize)</code>
-<div class="block">Add memStoreSize to replayEditsPerRegion.</div>
-</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/RegionServerAccounting.html#clearRegionReplayEditsSize-byte:A-">clearRegionReplayEditsSize</a></span>(byte[]&nbsp;regionName)</code>
-<div class="block">Clear a region from replayEditsPerRegion.</div>
-</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/RegionServerAccounting.html#decGlobalMemStoreSize-long-long-long-">decGlobalMemStoreSize</a></span>(long&nbsp;dataSizeDelta,
                      long&nbsp;heapSizeDelta,
                      long&nbsp;offHeapSizeDelta)</code>&nbsp;</td>
 </tr>
-<tr id="i3" class="rowColor">
+<tr id="i1" class="rowColor">
 <td class="colFirst"><code>double</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#getFlushPressure--">getFlushPressure</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i4" class="altColor">
+<tr id="i2" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#getGlobalMemStoreDataSize--">getGlobalMemStoreDataSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#getGlobalMemStoreHeapSize--">getGlobalMemStoreHeapSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i4" 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/RegionServerAccounting.html#getGlobalMemStoreLimit--">getGlobalMemStoreLimit</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code>(package private) long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#getGlobalMemStoreLimitLowMark--">getGlobalMemStoreLimitLowMark</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code>(package private) float</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#getGlobalMemStoreLimitLowMarkPercent--">getGlobalMemStoreLimitLowMarkPercent</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#getGlobalMemStoreOffHeapSize--">getGlobalMemStoreOffHeapSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i8" 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/RegionServerAccounting.html#getGlobalOnHeapMemStoreLimit--">getGlobalOnHeapMemStoreLimit</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i11" class="rowColor">
+<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/regionserver/RegionServerAccounting.html#incGlobalMemStoreSize-long-long-long-">incGlobalMemStoreSize</a></span>(long&nbsp;dataSizeDelta,
                      long&nbsp;heapSizeDelta,
                      long&nbsp;offHeapSizeDelta)</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i10" 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/RegionServerAccounting.html#incGlobalMemStoreSize-org.apache.hadoop.hbase.regionserver.MemStoreSize-">incGlobalMemStoreSize</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;mss)</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver">FlushType</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#isAboveHighWaterMark--">isAboveHighWaterMark</a></span>()</code>
 <div class="block">Return true if we are above the memstore high water mark</div>
 </td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver">FlushType</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#isAboveLowWaterMark--">isAboveLowWaterMark</a></span>()</code>
 <div class="block">Return true if we're above the low watermark</div>
 </td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>(package private) boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#isOffheap--">isOffheap</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i16" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#rollbackRegionReplayEditsSize-byte:A-">rollbackRegionReplayEditsSize</a></span>(byte[]&nbsp;regionName)</code>
-<div class="block">Roll back the global MemStore size for a specified region when this region
- can't be opened.</div>
-</td>
-</tr>
-<tr id="i17" class="rowColor">
+<tr id="i14" 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/RegionServerAccounting.html#setGlobalMemStoreLimits-long-">setGlobalMemStoreLimits</a></span>(long&nbsp;newGlobalMemstoreLimit)</code>&nbsp;</td>
 </tr>
@@ -321,7 +297,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>globalMemStoreDataSize</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/LongAdder.html?is-external=true" title="class or interface in java.util.concurrent.atomic">LongAdder</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.40">globalMemStoreDataSize</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/LongAdder.html?is-external=true" title="class or interface in java.util.concurrent.atomic">LongAdder</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.37">globalMemStoreDataSize</a></pre>
 </li>
 </ul>
 <a name="globalMemStoreHeapSize">
@@ -330,7 +306,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>globalMemStoreHeapSize</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/LongAdder.html?is-external=true" title="class or interface in java.util.concurrent.atomic">LongAdder</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.42">globalMemStoreHeapSize</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/LongAdder.html?is-external=true" title="class or interface in java.util.concurrent.atomic">LongAdder</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.39">globalMemStoreHeapSize</a></pre>
 </li>
 </ul>
 <a name="globalMemStoreOffHeapSize">
@@ -339,16 +315,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>globalMemStoreOffHeapSize</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/LongAdder.html?is-external=true" title="class or interface in java.util.concurrent.atomic">LongAdder</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.44">globalMemStoreOffHeapSize</a></pre>
-</li>
-</ul>
-<a name="replayEditsPerRegion">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>replayEditsPerRegion</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;byte[],<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.48">replayEditsPerRegion</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/LongAdder.html?is-external=true" title="class or interface in java.util.concurrent.atomic">LongAdder</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.41">globalMemStoreOffHeapSize</a></pre>
 </li>
 </ul>
 <a name="globalMemStoreLimit">
@@ -357,7 +324,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>globalMemStoreLimit</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.51">globalMemStoreLimit</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.43">globalMemStoreLimit</a></pre>
 </li>
 </ul>
 <a name="globalMemStoreLimitLowMarkPercent">
@@ -366,7 +333,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>globalMemStoreLimitLowMarkPercent</h4>
-<pre>private final&nbsp;float <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.52">globalMemStoreLimitLowMarkPercent</a></pre>
+<pre>private final&nbsp;float <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.44">globalMemStoreLimitLowMarkPercent</a></pre>
 </li>
 </ul>
 <a name="globalMemStoreLimitLowMark">
@@ -375,7 +342,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>globalMemStoreLimitLowMark</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.53">globalMemStoreLimitLowMark</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.45">globalMemStoreLimitLowMark</a></pre>
 </li>
 </ul>
 <a name="memType">
@@ -384,7 +351,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>memType</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/management/MemoryType.html?is-external=true" title="class or interface in java.lang.management">MemoryType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.54">memType</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/management/MemoryType.html?is-external=true" title="class or interface in java.lang.management">MemoryType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.46">memType</a></pre>
 </li>
 </ul>
 <a name="globalOnHeapMemstoreLimit">
@@ -393,7 +360,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>globalOnHeapMemstoreLimit</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.55">globalOnHeapMemstoreLimit</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.47">globalOnHeapMemstoreLimit</a></pre>
 </li>
 </ul>
 <a name="globalOnHeapMemstoreLimitLowMark">
@@ -402,7 +369,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>globalOnHeapMemstoreLimitLowMark</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.56">globalOnHeapMemstoreLimitLowMark</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.48">globalOnHeapMemstoreLimitLowMark</a></pre>
 </li>
 </ul>
 </li>
@@ -419,7 +386,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RegionServerAccounting</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.58">RegionServerAccounting</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.50">RegionServerAccounting</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 </li>
@@ -436,7 +403,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getGlobalMemStoreLimit</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.80">getGlobalMemStoreLimit</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.72">getGlobalMemStoreLimit</a>()</pre>
 </li>
 </ul>
 <a name="getGlobalOnHeapMemStoreLimit--">
@@ -445,7 +412,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getGlobalOnHeapMemStoreLimit</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.84">getGlobalOnHeapMemStoreLimit</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.76">getGlobalOnHeapMemStoreLimit</a>()</pre>
 </li>
 </ul>
 <a name="setGlobalMemStoreLimits-long-">
@@ -454,7 +421,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setGlobalMemStoreLimits</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.89">setGlobalMemStoreLimits</a>(long&nbsp;newGlobalMemstoreLimit)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.81">setGlobalMemStoreLimits</a>(long&nbsp;newGlobalMemstoreLimit)</pre>
 </li>
 </ul>
 <a name="isOffheap--">
@@ -463,7 +430,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isOffheap</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.101">isOffheap</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.93">isOffheap</a>()</pre>
 </li>
 </ul>
 <a name="getGlobalMemStoreLimitLowMark--">
@@ -472,7 +439,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getGlobalMemStoreLimitLowMark</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.105">getGlobalMemStoreLimitLowMark</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.97">getGlobalMemStoreLimitLowMark</a>()</pre>
 </li>
 </ul>
 <a name="getGlobalMemStoreLimitLowMarkPercent--">
@@ -481,7 +448,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getGlobalMemStoreLimitLowMarkPercent</h4>
-<pre>float&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.109">getGlobalMemStoreLimitLowMarkPercent</a>()</pre>
+<pre>float&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.101">getGlobalMemStoreLimitLowMarkPercent</a>()</pre>
 </li>
 </ul>
 <a name="getGlobalMemStoreDataSize--">
@@ -490,7 +457,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getGlobalMemStoreDataSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.116">getGlobalMemStoreDataSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.108">getGlobalMemStoreDataSize</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the global Memstore data size in the RegionServer</dd>
@@ -503,7 +470,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getGlobalMemStoreHeapSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.123">getGlobalMemStoreHeapSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.115">getGlobalMemStoreHeapSize</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the global memstore heap size in the RegionServer</dd>
@@ -516,7 +483,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getGlobalMemStoreOffHeapSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.130">getGlobalMemStoreOffHeapSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.122">getGlobalMemStoreOffHeapSize</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the global memstore heap size in the RegionServer</dd>
@@ -529,7 +496,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>incGlobalMemStoreSize</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.134">incGlobalMemStoreSize</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;mss)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.126">incGlobalMemStoreSize</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;mss)</pre>
 </li>
 </ul>
 <a name="incGlobalMemStoreSize-long-long-long-">
@@ -538,7 +505,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>incGlobalMemStoreSize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.138">incGlobalMemStoreSize</a>(long&nbsp;dataSizeDelta,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.130">incGlobalMemStoreSize</a>(long&nbsp;dataSizeDelta,
                                   long&nbsp;heapSizeDelta,
                                   long&nbsp;offHeapSizeDelta)</pre>
 </li>
@@ -549,7 +516,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>decGlobalMemStoreSize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.144">decGlobalMemStoreSize</a>(long&nbsp;dataSizeDelta,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.136">decGlobalMemStoreSize</a>(long&nbsp;dataSizeDelta,
                                   long&nbsp;heapSizeDelta,
                                   long&nbsp;offHeapSizeDelta)</pre>
 </li>
@@ -560,7 +527,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isAboveHighWaterMark</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver">FlushType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.154">isAboveHighWaterMark</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver">FlushType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.146">isAboveHighWaterMark</a>()</pre>
 <div class="block">Return true if we are above the memstore high water mark</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -574,17 +541,17 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isAboveLowWaterMark</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver">FlushType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.185">isAboveLowWaterMark</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver">FlushType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.177">isAboveLowWaterMark</a>()</pre>
 <div class="block">Return true if we're above the low watermark</div>
 </li>
 </ul>
 <a name="getFlushPressure--">
 <!--   -->
 </a>
-<ul class="blockList">
+<ul class="blockListLast">
 <li class="blockList">
 <h4>getFlushPressure</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.211">getFlushPressure</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.203">getFlushPressure</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the flush pressure of all stores on this regionserver. The value should be greater than
@@ -593,51 +560,6 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
-<a name="addRegionReplayEditsSize-byte:A-org.apache.hadoop.hbase.regionserver.MemStoreSize-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>addRegionReplayEditsSize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.226">addRegionReplayEditsSize</a>(byte[]&nbsp;regionName,
-                                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;memStoreSize)</pre>
-<div class="block">Add memStoreSize to replayEditsPerRegion.</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>regionName</code> - region name.</dd>
-<dd><code>memStoreSize</code> - the Memstore size will be added to replayEditsPerRegion.</dd>
-</dl>
-</li>
-</ul>
-<a name="rollbackRegionReplayEditsSize-byte:A-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>rollbackRegionReplayEditsSize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.246">rollbackRegionReplayEditsSize</a>(byte[]&nbsp;regionName)</pre>
-<div class="block">Roll back the global MemStore size for a specified region when this region
- can't be opened.</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>regionName</code> - the region which could not open.</dd>
-</dl>
-</li>
-</ul>
-<a name="clearRegionReplayEditsSize-byte:A-">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>clearRegionReplayEditsSize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#line.260">clearRegionReplayEditsSize</a>(byte[]&nbsp;regionName)</pre>
-<div class="block">Clear a region from replayEditsPerRegion.</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>regionName</code> - region name.</dd>
-</dl>
-</li>
-</ul>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/SegmentFactory.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/SegmentFactory.html b/devapidocs/org/apache/hadoop/hbase/regionserver/SegmentFactory.html
index 0457d33..d1e3486 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/SegmentFactory.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/SegmentFactory.html
@@ -177,7 +177,10 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr id="i1" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createImmutableSegment-org.apache.hadoop.hbase.CellComparator-">createImmutableSegment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createImmutableSegment-org.apache.hadoop.hbase.CellComparator-">createImmutableSegment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>
+<div class="block">create empty immutable segment for initializations
+ This ImmutableSegment is used as a place holder for snapshot in Memstore.</div>
+</td>
 </tr>
 <tr id="i2" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a></code></td>
@@ -191,7 +194,8 @@ 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="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createImmutableSegment-org.apache.hadoop.hbase.regionserver.MutableSegment-">createImmutableSegment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;segment)</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createImmutableSegment-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">createImmutableSegment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;segment,
+                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
 <tr id="i4" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a></code></td>
@@ -221,14 +225,16 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr id="i7" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-">createMutableSegment</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
-                    <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">createMutableSegment</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                    <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
+                    <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
 <tr id="i8" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#generateMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-">generateMutableSegment</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#generateMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">generateMutableSegment</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                       <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
-                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB)</code>&nbsp;</td>
+                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB,
+                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
 <tr id="i9" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a></code></td>
@@ -339,26 +345,38 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>createImmutableSegment</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/SegmentFactory.html#line.65">createImmutableSegment</a>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/SegmentFactory.html#line.71">createImmutableSegment</a>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</pre>
+<div class="block">create empty immutable segment for initializations
+ This ImmutableSegment is used as a place holder for snapshot in Memstore.
+ It won't flush later, So it is not necessary to record the initial size
+ for it.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>comparator</code> - comparator</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>ImmutableSegment</dd>
+</dl>
 </li>
 </ul>
-<a name="createImmutableSegment-org.apache.hadoop.hbase.regionserver.MutableSegment-">
+<a name="createImmutableSegment-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>createImmutableSegment</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/SegmentFactory.html#line.71">createImmutableSegment</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;segment)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/SegmentFactory.html#line.77">createImmutableSegment</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;segment,
+                                               <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 </li>
 </ul>
-<a name="createMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-">
+<a name="createMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>createMutableSegment</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/SegmentFactory.html#line.76">createMutableSegment</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
-                                           <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/SegmentFactory.html#line.83">createMutableSegment</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                                           <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
+                                           <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 </li>
 </ul>
 <a name="createImmutableSegmentByMerge-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreSegmentsIterator-int-java.util.List-org.apache.hadoop.hbase.regionserver.CompactingMemStore.IndexType-org.apache.hadoop.hbase.regionserver.MemStoreCompactionStrategy.Action-">
@@ -367,7 +385,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>createImmutableSegmentByMerge</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/SegmentFactory.html#line.83">createImmutableSegmentByMerge</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/SegmentFactory.html#line.91">createImmutableSegmentByMerge</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                       <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
                                                       <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSegmentsIterator</a>&nbsp;iterator,
                                                       int&nbsp;numOfCells,
@@ -387,7 +405,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>createImmutableSegmentByFlattening</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/SegmentFactory.html#line.98">createImmutableSegmentByFlattening</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">CSLMImmutableSegment</a>&nbsp;segment,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/SegmentFactory.html#line.106">createImmutableSegmentByFlattening</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">CSLMImmutableSegment</a>&nbsp;segment,
                                                            <a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a>&nbsp;idxType,
                                                            <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
                                                            <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)</pre>
@@ -399,7 +417,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>createImmutableSegment</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/SegmentFactory.html#line.118">createImmutableSegment</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/SegmentFactory.html#line.126">createImmutableSegment</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                 <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
                                                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSegmentsIterator</a>&nbsp;iterator,
                                                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB,
@@ -408,15 +426,16 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
                                                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a>&nbsp;idxType)</pre>
 </li>
 </ul>
-<a name="generateMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-">
+<a name="generateMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>generateMutableSegment</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/SegmentFactory.html#line.137">generateMutableSegment</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/SegmentFactory.html#line.145">generateMutableSegment</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                               <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
-                                              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB)</pre>
+                                              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB,
+                                              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 </li>
 </ul>
 <a name="getMergedMemStoreLAB-org.apache.hadoop.conf.Configuration-java.util.List-">
@@ -425,7 +444,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getMergedMemStoreLAB</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/SegmentFactory.html#line.144">getMergedMemStoreLAB</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/SegmentFactory.html#line.152">getMergedMemStoreLAB</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                          <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/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&gt;&nbsp;segments)</pre>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/CellSet.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/CellSet.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/CellSet.html
index 9654ae2..84df775 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/CellSet.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/CellSet.html
@@ -180,9 +180,10 @@
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#MutableSegment-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-">MutableSegment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;cellSet,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#MutableSegment-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">MutableSegment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;cellSet,
               <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
-              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB)</code>&nbsp;</td>
+              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB,
+              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#Segment-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-org.apache.hadoop.hbase.regionserver.TimeRangeTracker-">Segment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;cellSet,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/ImmutableSegment.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/ImmutableSegment.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/ImmutableSegment.html
index 32aeb42..2c324ab 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/ImmutableSegment.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/ImmutableSegment.html
@@ -183,7 +183,10 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a></code></td>
-<td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createImmutableSegment-org.apache.hadoop.hbase.CellComparator-">createImmutableSegment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createImmutableSegment-org.apache.hadoop.hbase.CellComparator-">createImmutableSegment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>
+<div class="block">create empty immutable segment for initializations
+ This ImmutableSegment is used as a place holder for snapshot in Memstore.</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a></code></td>
@@ -197,7 +200,8 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a></code></td>
-<td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createImmutableSegment-org.apache.hadoop.hbase.regionserver.MutableSegment-">createImmutableSegment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;segment)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createImmutableSegment-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">createImmutableSegment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;segment,
+                      <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a></code></td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreLAB.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreLAB.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreLAB.html
index 2b10331..5f235f4 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreLAB.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreLAB.html
@@ -183,9 +183,10 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a></code></td>
-<td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#generateMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-">generateMutableSegment</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#generateMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">generateMutableSegment</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                       <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
-                      <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB)</code>&nbsp;</td>
+                      <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB,
+                      <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
 </tbody>
 </table>
@@ -226,9 +227,10 @@
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#MutableSegment-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-">MutableSegment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;cellSet,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#MutableSegment-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">MutableSegment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;cellSet,
               <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
-              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB)</code>&nbsp;</td>
+              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB,
+              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#Segment-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-org.apache.hadoop.hbase.regionserver.TimeRangeTracker-">Segment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;cellSet,


[48/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/master/MetricsMasterSource.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/MetricsMasterSource.html b/devapidocs/org/apache/hadoop/hbase/master/MetricsMasterSource.html
index f62c8ef..85c869c 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/MetricsMasterSource.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/MetricsMasterSource.html
@@ -249,6 +249,22 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html"
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="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/master/MetricsMasterSource.html#OFFLINE_REGION_COUNT_DESC">OFFLINE_REGION_COUNT_DESC</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="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/master/MetricsMasterSource.html#OFFLINE_REGION_COUNT_NAME">OFFLINE_REGION_COUNT_NAME</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="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/master/MetricsMasterSource.html#ONLINE_REGION_COUNT_DESC">ONLINE_REGION_COUNT_DESC</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="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/master/MetricsMasterSource.html#ONLINE_REGION_COUNT_NAME">ONLINE_REGION_COUNT_NAME</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="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/master/MetricsMasterSource.html#SERVER_CRASH_METRIC_PREFIX">SERVER_CRASH_METRIC_PREFIX</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
@@ -567,13 +583,39 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html"
 </dl>
 </li>
 </ul>
+<a name="ONLINE_REGION_COUNT_NAME">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ONLINE_REGION_COUNT_NAME</h4>
+<pre>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/MetricsMasterSource.html#line.66">ONLINE_REGION_COUNT_NAME</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.MetricsMasterSource.ONLINE_REGION_COUNT_NAME">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="OFFLINE_REGION_COUNT_NAME">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>OFFLINE_REGION_COUNT_NAME</h4>
+<pre>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/MetricsMasterSource.html#line.67">OFFLINE_REGION_COUNT_NAME</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.MetricsMasterSource.OFFLINE_REGION_COUNT_NAME">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
 <a name="CLUSTER_REQUESTS_NAME">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>CLUSTER_REQUESTS_NAME</h4>
-<pre>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/MetricsMasterSource.html#line.67">CLUSTER_REQUESTS_NAME</a></pre>
+<pre>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/MetricsMasterSource.html#line.69">CLUSTER_REQUESTS_NAME</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.MetricsMasterSource.CLUSTER_REQUESTS_NAME">Constant Field Values</a></dd>
@@ -586,7 +628,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>MASTER_ACTIVE_TIME_DESC</h4>
-<pre>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/MetricsMasterSource.html#line.68">MASTER_ACTIVE_TIME_DESC</a></pre>
+<pre>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/MetricsMasterSource.html#line.70">MASTER_ACTIVE_TIME_DESC</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.MetricsMasterSource.MASTER_ACTIVE_TIME_DESC">Constant Field Values</a></dd>
@@ -599,7 +641,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>MASTER_START_TIME_DESC</h4>
-<pre>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/MetricsMasterSource.html#line.69">MASTER_START_TIME_DESC</a></pre>
+<pre>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/MetricsMasterSource.html#line.71">MASTER_START_TIME_DESC</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.MetricsMasterSource.MASTER_START_TIME_DESC">Constant Field Values</a></dd>
@@ -612,7 +654,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>MASTER_FINISHED_INITIALIZATION_TIME_DESC</h4>
-<pre>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/MetricsMasterSource.html#line.70">MASTER_FINISHED_INITIALIZATION_TIME_DESC</a></pre>
+<pre>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/MetricsMasterSource.html#line.72">MASTER_FINISHED_INITIALIZATION_TIME_DESC</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.MetricsMasterSource.MASTER_FINISHED_INITIALIZATION_TIME_DESC">Constant Field Values</a></dd>
@@ -625,7 +667,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>AVERAGE_LOAD_DESC</h4>
-<pre>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/MetricsMasterSource.html#line.72">AVERAGE_LOAD_DESC</a></pre>
+<pre>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/MetricsMasterSource.html#line.74">AVERAGE_LOAD_DESC</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.MetricsMasterSource.AVERAGE_LOAD_DESC">Constant Field Values</a></dd>
@@ -638,7 +680,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>LIVE_REGION_SERVERS_DESC</h4>
-<pre>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/MetricsMasterSource.html#line.73">LIVE_REGION_SERVERS_DESC</a></pre>
+<pre>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/MetricsMasterSource.html#line.75">LIVE_REGION_SERVERS_DESC</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.MetricsMasterSource.LIVE_REGION_SERVERS_DESC">Constant Field Values</a></dd>
@@ -651,7 +693,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>NUMBER_OF_REGION_SERVERS_DESC</h4>
-<pre>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/MetricsMasterSource.html#line.74">NUMBER_OF_REGION_SERVERS_DESC</a></pre>
+<pre>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/MetricsMasterSource.html#line.76">NUMBER_OF_REGION_SERVERS_DESC</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.MetricsMasterSource.NUMBER_OF_REGION_SERVERS_DESC">Constant Field Values</a></dd>
@@ -664,7 +706,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>DEAD_REGION_SERVERS_DESC</h4>
-<pre>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/MetricsMasterSource.html#line.75">DEAD_REGION_SERVERS_DESC</a></pre>
+<pre>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/MetricsMasterSource.html#line.77">DEAD_REGION_SERVERS_DESC</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.MetricsMasterSource.DEAD_REGION_SERVERS_DESC">Constant Field Values</a></dd>
@@ -677,7 +719,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>NUMBER_OF_DEAD_REGION_SERVERS_DESC</h4>
-<pre>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/MetricsMasterSource.html#line.76">NUMBER_OF_DEAD_REGION_SERVERS_DESC</a></pre>
+<pre>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/MetricsMasterSource.html#line.78">NUMBER_OF_DEAD_REGION_SERVERS_DESC</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.MetricsMasterSource.NUMBER_OF_DEAD_REGION_SERVERS_DESC">Constant Field Values</a></dd>
@@ -690,7 +732,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>ZOOKEEPER_QUORUM_DESC</h4>
-<pre>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/MetricsMasterSource.html#line.77">ZOOKEEPER_QUORUM_DESC</a></pre>
+<pre>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/MetricsMasterSource.html#line.79">ZOOKEEPER_QUORUM_DESC</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.MetricsMasterSource.ZOOKEEPER_QUORUM_DESC">Constant Field Values</a></dd>
@@ -703,7 +745,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>SERVER_NAME_DESC</h4>
-<pre>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/MetricsMasterSource.html#line.78">SERVER_NAME_DESC</a></pre>
+<pre>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/MetricsMasterSource.html#line.80">SERVER_NAME_DESC</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.MetricsMasterSource.SERVER_NAME_DESC">Constant Field Values</a></dd>
@@ -716,7 +758,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>CLUSTER_ID_DESC</h4>
-<pre>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/MetricsMasterSource.html#line.79">CLUSTER_ID_DESC</a></pre>
+<pre>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/MetricsMasterSource.html#line.81">CLUSTER_ID_DESC</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.MetricsMasterSource.CLUSTER_ID_DESC">Constant Field Values</a></dd>
@@ -729,7 +771,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>IS_ACTIVE_MASTER_DESC</h4>
-<pre>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/MetricsMasterSource.html#line.80">IS_ACTIVE_MASTER_DESC</a></pre>
+<pre>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/MetricsMasterSource.html#line.82">IS_ACTIVE_MASTER_DESC</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.MetricsMasterSource.IS_ACTIVE_MASTER_DESC">Constant Field Values</a></dd>
@@ -742,7 +784,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>SPLIT_PLAN_COUNT_DESC</h4>
-<pre>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/MetricsMasterSource.html#line.81">SPLIT_PLAN_COUNT_DESC</a></pre>
+<pre>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/MetricsMasterSource.html#line.83">SPLIT_PLAN_COUNT_DESC</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.MetricsMasterSource.SPLIT_PLAN_COUNT_DESC">Constant Field Values</a></dd>
@@ -755,20 +797,46 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>MERGE_PLAN_COUNT_DESC</h4>
-<pre>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/MetricsMasterSource.html#line.82">MERGE_PLAN_COUNT_DESC</a></pre>
+<pre>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/MetricsMasterSource.html#line.84">MERGE_PLAN_COUNT_DESC</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.MetricsMasterSource.MERGE_PLAN_COUNT_DESC">Constant Field Values</a></dd>
 </dl>
 </li>
 </ul>
+<a name="ONLINE_REGION_COUNT_DESC">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ONLINE_REGION_COUNT_DESC</h4>
+<pre>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/MetricsMasterSource.html#line.85">ONLINE_REGION_COUNT_DESC</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.MetricsMasterSource.ONLINE_REGION_COUNT_DESC">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="OFFLINE_REGION_COUNT_DESC">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>OFFLINE_REGION_COUNT_DESC</h4>
+<pre>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/MetricsMasterSource.html#line.86">OFFLINE_REGION_COUNT_DESC</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.MetricsMasterSource.OFFLINE_REGION_COUNT_DESC">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
 <a name="SERVER_CRASH_METRIC_PREFIX">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SERVER_CRASH_METRIC_PREFIX</h4>
-<pre>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/MetricsMasterSource.html#line.84">SERVER_CRASH_METRIC_PREFIX</a></pre>
+<pre>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/MetricsMasterSource.html#line.88">SERVER_CRASH_METRIC_PREFIX</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.MetricsMasterSource.SERVER_CRASH_METRIC_PREFIX">Constant Field Values</a></dd>
@@ -789,7 +857,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>incRequests</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSource.html#line.91">incRequests</a>(long&nbsp;inc)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSource.html#line.95">incRequests</a>(long&nbsp;inc)</pre>
 <div class="block">Increment the number of requests the cluster has seen.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -803,7 +871,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html"
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getServerCrashMetrics</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/metrics/OperationMetrics.html" title="class in org.apache.hadoop.hbase.metrics">OperationMetrics</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSource.html#line.96">getServerCrashMetrics</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/metrics/OperationMetrics.html" title="class in org.apache.hadoop.hbase.metrics">OperationMetrics</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSource.html#line.100">getServerCrashMetrics</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd><a href="../../../../../org/apache/hadoop/hbase/metrics/OperationMetrics.html" title="class in org.apache.hadoop.hbase.metrics"><code>OperationMetrics</code></a> containing common metrics for server crash operation</dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html b/devapidocs/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html
index a08f831..37d0b73 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html
@@ -119,7 +119,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html#line.35">MetricsMasterSourceImpl</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html#line.36">MetricsMasterSourceImpl</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/metrics/BaseSourceImpl.html" title="class in org.apache.hadoop.hbase.metrics">BaseSourceImpl</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html" title="interface in org.apache.hadoop.hbase.master">MetricsMasterSource</a></pre>
 <div class="block">Hadoop2 implementation of MetricsMasterSource.
@@ -168,7 +168,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterS
 <!--   -->
 </a>
 <h3>Fields inherited from interface&nbsp;org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html" title="interface in org.apache.hadoop.hbase.master">MetricsMasterSource</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#AVERAGE_LOAD_DESC">AVERAGE_LOAD_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#AVERAGE_LOAD_NAME">AVERAGE_LOAD_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#CLUSTER_ID_DESC">CLUSTER_ID_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#CLUSTER_ID_NAME">CLUSTER_ID_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#CLUSTER_REQUESTS_NAME">CLUSTER_REQUESTS_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#DEAD_REGION_SERVERS_DESC">DEAD_REGION_SERVERS_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#DEAD_REGION_SERVERS_NAME">DEAD_REGION_SERVERS_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#IS_ACTIVE_MASTER_DESC">IS_ACT
 IVE_MASTER_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#IS_ACTIVE_MASTER_NAME">IS_ACTIVE_MASTER_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#LIVE_REGION_SERVERS_DESC">LIVE_REGION_SERVERS_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#LIVE_REGION_SERVERS_NAME">LIVE_REGION_SERVERS_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#MASTER_ACTIVE_TIME_DESC">MASTER_ACTIVE_TIME_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#MASTER_ACTIVE_TIME_NAME">MASTER_ACTIVE_TIME_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#MASTER_FINISHED_INITIALIZATION_TIME_DESC">MASTER_FINISHED_INITIALIZATION_TIME_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#MASTER_FINISHED_INITIALIZATION_TIME_NAME">MASTER_FINISHED_
 INITIALIZATION_TIME_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#MASTER_START_TIME_DESC">MASTER_START_TIME_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#MASTER_START_TIME_NAME">MASTER_START_TIME_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#MERGE_PLAN_COUNT_DESC">MERGE_PLAN_COUNT_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#MERGE_PLAN_COUNT_NAME">MERGE_PLAN_COUNT_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#METRICS_CONTEXT">METRICS_CONTEXT</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#METRICS_DESCRIPTION">METRICS_DESCRIPTION</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#METRICS_JMX_CONTEXT">METRICS_JMX_CONTEXT</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSourc
 e.html#METRICS_NAME">METRICS_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#NUM_DEAD_REGION_SERVERS_NAME">NUM_DEAD_REGION_SERVERS_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#NUM_REGION_SERVERS_NAME">NUM_REGION_SERVERS_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#NUMBER_OF_DEAD_REGION_SERVERS_DESC">NUMBER_OF_DEAD_REGION_SERVERS_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#NUMBER_OF_REGION_SERVERS_DESC">NUMBER_OF_REGION_SERVERS_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#SERVER_CRASH_METRIC_PREFIX">SERVER_CRASH_METRIC_PREFIX</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#SERVER_NAME_DESC">SERVER_NAME_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#SERVER_NAME_NAME">SERVER_NAME_NAME</a>
 , <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#SPLIT_PLAN_COUNT_DESC">SPLIT_PLAN_COUNT_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#SPLIT_PLAN_COUNT_NAME">SPLIT_PLAN_COUNT_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#ZOOKEEPER_QUORUM_DESC">ZOOKEEPER_QUORUM_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#ZOOKEEPER_QUORUM_NAME">ZOOKEEPER_QUORUM_NAME</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#AVERAGE_LOAD_DESC">AVERAGE_LOAD_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#AVERAGE_LOAD_NAME">AVERAGE_LOAD_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#CLUSTER_ID_DESC">CLUSTER_ID_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#CLUSTER_ID_NAME">CLUSTER_ID_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#CLUSTER_REQUESTS_NAME">CLUSTER_REQUESTS_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#DEAD_REGION_SERVERS_DESC">DEAD_REGION_SERVERS_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#DEAD_REGION_SERVERS_NAME">DEAD_REGION_SERVERS_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#IS_ACTIVE_MASTER_DESC">IS_ACT
 IVE_MASTER_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#IS_ACTIVE_MASTER_NAME">IS_ACTIVE_MASTER_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#LIVE_REGION_SERVERS_DESC">LIVE_REGION_SERVERS_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#LIVE_REGION_SERVERS_NAME">LIVE_REGION_SERVERS_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#MASTER_ACTIVE_TIME_DESC">MASTER_ACTIVE_TIME_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#MASTER_ACTIVE_TIME_NAME">MASTER_ACTIVE_TIME_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#MASTER_FINISHED_INITIALIZATION_TIME_DESC">MASTER_FINISHED_INITIALIZATION_TIME_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#MASTER_FINISHED_INITIALIZATION_TIME_NAME">MASTER_FINISHED_
 INITIALIZATION_TIME_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#MASTER_START_TIME_DESC">MASTER_START_TIME_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#MASTER_START_TIME_NAME">MASTER_START_TIME_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#MERGE_PLAN_COUNT_DESC">MERGE_PLAN_COUNT_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#MERGE_PLAN_COUNT_NAME">MERGE_PLAN_COUNT_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#METRICS_CONTEXT">METRICS_CONTEXT</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#METRICS_DESCRIPTION">METRICS_DESCRIPTION</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#METRICS_JMX_CONTEXT">METRICS_JMX_CONTEXT</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSourc
 e.html#METRICS_NAME">METRICS_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#NUM_DEAD_REGION_SERVERS_NAME">NUM_DEAD_REGION_SERVERS_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#NUM_REGION_SERVERS_NAME">NUM_REGION_SERVERS_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#NUMBER_OF_DEAD_REGION_SERVERS_DESC">NUMBER_OF_DEAD_REGION_SERVERS_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#NUMBER_OF_REGION_SERVERS_DESC">NUMBER_OF_REGION_SERVERS_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#OFFLINE_REGION_COUNT_DESC">OFFLINE_REGION_COUNT_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#OFFLINE_REGION_COUNT_NAME">OFFLINE_REGION_COUNT_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#ONLINE_REGION_COUNT_DE
 SC">ONLINE_REGION_COUNT_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#ONLINE_REGION_COUNT_NAME">ONLINE_REGION_COUNT_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#SERVER_CRASH_METRIC_PREFIX">SERVER_CRASH_METRIC_PREFIX</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#SERVER_NAME_DESC">SERVER_NAME_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#SERVER_NAME_NAME">SERVER_NAME_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#SPLIT_PLAN_COUNT_DESC">SPLIT_PLAN_COUNT_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#SPLIT_PLAN_COUNT_NAME">SPLIT_PLAN_COUNT_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#ZOOKEEPER_QUORUM_DESC">ZOOKEEPER_QUORUM_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/master/Me
 tricsMasterSource.html#ZOOKEEPER_QUORUM_NAME">ZOOKEEPER_QUORUM_NAME</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.metrics.BaseSource">
@@ -278,7 +278,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterS
 <ul class="blockList">
 <li class="blockList">
 <h4>masterWrapper</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html" title="interface in org.apache.hadoop.hbase.master">MetricsMasterWrapper</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html#line.38">masterWrapper</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html" title="interface in org.apache.hadoop.hbase.master">MetricsMasterWrapper</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html#line.39">masterWrapper</a></pre>
 </li>
 </ul>
 <a name="clusterRequestsCounter">
@@ -287,7 +287,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterS
 <ul class="blockList">
 <li class="blockList">
 <h4>clusterRequestsCounter</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/metrics2/lib/MutableFastCounter.html" title="class in org.apache.hadoop.metrics2.lib">MutableFastCounter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html#line.39">clusterRequestsCounter</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/metrics2/lib/MutableFastCounter.html" title="class in org.apache.hadoop.metrics2.lib">MutableFastCounter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html#line.40">clusterRequestsCounter</a></pre>
 </li>
 </ul>
 <a name="serverCrashMetrics">
@@ -296,7 +296,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterS
 <ul class="blockListLast">
 <li class="blockList">
 <h4>serverCrashMetrics</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/metrics/OperationMetrics.html" title="class in org.apache.hadoop.hbase.metrics">OperationMetrics</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html#line.41">serverCrashMetrics</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/metrics/OperationMetrics.html" title="class in org.apache.hadoop.hbase.metrics">OperationMetrics</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html#line.42">serverCrashMetrics</a></pre>
 </li>
 </ul>
 </li>
@@ -313,7 +313,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterS
 <ul class="blockList">
 <li class="blockList">
 <h4>MetricsMasterSourceImpl</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html#line.43">MetricsMasterSourceImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html" title="interface in org.apache.hadoop.hbase.master">MetricsMasterWrapper</a>&nbsp;masterWrapper)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html#line.44">MetricsMasterSourceImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html" title="interface in org.apache.hadoop.hbase.master">MetricsMasterWrapper</a>&nbsp;masterWrapper)</pre>
 </li>
 </ul>
 <a name="MetricsMasterSourceImpl-java.lang.String-java.lang.String-java.lang.String-java.lang.String-org.apache.hadoop.hbase.master.MetricsMasterWrapper-">
@@ -322,7 +322,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterS
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MetricsMasterSourceImpl</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html#line.51">MetricsMasterSourceImpl</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;metricsName,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html#line.52">MetricsMasterSourceImpl</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;metricsName,
                                <a href="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;metricsDescription,
                                <a href="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;metricsContext,
                                <a href="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;metricsJmxContext,
@@ -343,7 +343,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterS
 <ul class="blockList">
 <li class="blockList">
 <h4>init</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html#line.62">init</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html#line.63">init</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html#init--">BaseSource</a></code></span></div>
 <div class="block">Clear out the metrics and re-prepare the source.</div>
 <dl>
@@ -360,7 +360,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterS
 <ul class="blockList">
 <li class="blockList">
 <h4>incRequests</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html#line.75">incRequests</a>(long&nbsp;inc)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html#line.76">incRequests</a>(long&nbsp;inc)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#incRequests-long-">MetricsMasterSource</a></code></span></div>
 <div class="block">Increment the number of requests the cluster has seen.</div>
 <dl>
@@ -377,7 +377,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterS
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetrics</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html#line.80">getMetrics</a>(org.apache.hadoop.metrics2.MetricsCollector&nbsp;metricsCollector,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html#line.81">getMetrics</a>(org.apache.hadoop.metrics2.MetricsCollector&nbsp;metricsCollector,
                        boolean&nbsp;all)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -393,7 +393,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterS
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getServerCrashMetrics</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/metrics/OperationMetrics.html" title="class in org.apache.hadoop.hbase.metrics">OperationMetrics</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html#line.122">getServerCrashMetrics</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/metrics/OperationMetrics.html" title="class in org.apache.hadoop.hbase.metrics">OperationMetrics</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html#line.130">getServerCrashMetrics</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html#getServerCrashMetrics--">getServerCrashMetrics</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSource.html" title="interface in org.apache.hadoop.hbase.master">MetricsMasterSource</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html b/devapidocs/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html
index ec7b9ad..22c105f 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6};
+var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6,"i18":6};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -106,7 +106,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.30">MetricsMasterWrapper</a></pre>
+public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.31">MetricsMasterWrapper</a></pre>
 <div class="block">This is the interface that will expose information to hadoop1/hadoop2 implementations of the
  MetricsMasterSource.</div>
 </li>
@@ -200,36 +200,42 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master
 </td>
 </tr>
 <tr id="i12" class="altColor">
+<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/util/PairOfSameType.html" title="class in org.apache.hadoop.hbase.util">PairOfSameType</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>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getRegionCounts--">getRegionCounts</a></span>()</code>
+<div class="block">Get the online and offline region counts</div>
+</td>
+</tr>
+<tr id="i13" 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/master/MetricsMasterWrapper.html#getRegionServers--">getRegionServers</a></span>()</code>
 <div class="block">Get the live region servers</div>
 </td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" 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/master/MetricsMasterWrapper.html#getServerName--">getServerName</a></span>()</code>
 <div class="block">Get ServerName</div>
 </td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getSplitPlanCount--">getSplitPlanCount</a></span>()</code>
 <div class="block">Get the number of region split plans executed.</div>
 </td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getStartTime--">getStartTime</a></span>()</code>
 <div class="block">Get hbase master start time</div>
 </td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" 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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getTableSpaceUtilization--">getTableSpaceUtilization</a></span>()</code>
 <div class="block">Gets the space usage and limit for each table.</div>
 </td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" 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/master/MetricsMasterWrapper.html#getZookeeperQuorum--">getZookeeperQuorum</a></span>()</code>
 <div class="block">Get the ZooKeeper Quorum Info</div>
@@ -256,7 +262,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerName</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.35">getServerName</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.36">getServerName</a>()</pre>
 <div class="block">Get ServerName</div>
 </li>
 </ul>
@@ -266,7 +272,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master
 <ul class="blockList">
 <li class="blockList">
 <h4>getAverageLoad</h4>
-<pre>double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.42">getAverageLoad</a>()</pre>
+<pre>double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.43">getAverageLoad</a>()</pre>
 <div class="block">Get Average Load</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -280,7 +286,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master
 <ul class="blockList">
 <li class="blockList">
 <h4>getClusterId</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.49">getClusterId</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.50">getClusterId</a>()</pre>
 <div class="block">Get the Cluster ID</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -294,7 +300,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master
 <ul class="blockList">
 <li class="blockList">
 <h4>getZookeeperQuorum</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.56">getZookeeperQuorum</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.57">getZookeeperQuorum</a>()</pre>
 <div class="block">Get the ZooKeeper Quorum Info</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -308,7 +314,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master
 <ul class="blockList">
 <li class="blockList">
 <h4>getCoprocessors</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.63">getCoprocessors</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.64">getCoprocessors</a>()</pre>
 <div class="block">Get the co-processors</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -322,7 +328,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master
 <ul class="blockList">
 <li class="blockList">
 <h4>getStartTime</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.70">getStartTime</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.71">getStartTime</a>()</pre>
 <div class="block">Get hbase master start time</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -336,7 +342,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master
 <ul class="blockList">
 <li class="blockList">
 <h4>getActiveTime</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.77">getActiveTime</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.78">getActiveTime</a>()</pre>
 <div class="block">Get the hbase master active time</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -350,7 +356,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master
 <ul class="blockList">
 <li class="blockList">
 <h4>getIsActiveMaster</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.84">getIsActiveMaster</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.85">getIsActiveMaster</a>()</pre>
 <div class="block">Whether this master is the active master</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -364,7 +370,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionServers</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.91">getRegionServers</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.92">getRegionServers</a>()</pre>
 <div class="block">Get the live region servers</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -378,7 +384,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumRegionServers</h4>
-<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.99">getNumRegionServers</a>()</pre>
+<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.100">getNumRegionServers</a>()</pre>
 <div class="block">Get the number of live region servers</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -392,7 +398,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master
 <ul class="blockList">
 <li class="blockList">
 <h4>getDeadRegionServers</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.106">getDeadRegionServers</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.107">getDeadRegionServers</a>()</pre>
 <div class="block">Get the dead region servers</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -406,7 +412,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumDeadRegionServers</h4>
-<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.113">getNumDeadRegionServers</a>()</pre>
+<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.114">getNumDeadRegionServers</a>()</pre>
 <div class="block">Get the number of dead region servers</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -420,7 +426,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumWALFiles</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.118">getNumWALFiles</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.119">getNumWALFiles</a>()</pre>
 <div class="block">Get the number of master WAL files.</div>
 </li>
 </ul>
@@ -430,7 +436,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master
 <ul class="blockList">
 <li class="blockList">
 <h4>getSplitPlanCount</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.123">getSplitPlanCount</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.124">getSplitPlanCount</a>()</pre>
 <div class="block">Get the number of region split plans executed.</div>
 </li>
 </ul>
@@ -440,7 +446,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master
 <ul class="blockList">
 <li class="blockList">
 <h4>getMergePlanCount</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.128">getMergePlanCount</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.129">getMergePlanCount</a>()</pre>
 <div class="block">Get the number of region merge plans executed.</div>
 </li>
 </ul>
@@ -450,7 +456,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableSpaceUtilization</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>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.133">getTableSpaceUtilization</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>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.134">getTableSpaceUtilization</a>()</pre>
 <div class="block">Gets the space usage and limit for each table.</div>
 </li>
 </ul>
@@ -460,20 +466,34 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master
 <ul class="blockList">
 <li class="blockList">
 <h4>getNamespaceSpaceUtilization</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>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.138">getNamespaceSpaceUtilization</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>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.139">getNamespaceSpaceUtilization</a>()</pre>
 <div class="block">Gets the space usage and limit for each namespace.</div>
 </li>
 </ul>
 <a name="getMasterInitializationTime--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>getMasterInitializationTime</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.143">getMasterInitializationTime</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.144">getMasterInitializationTime</a>()</pre>
 <div class="block">Get the time in Millis when the master finished initializing/becoming the active master</div>
 </li>
 </ul>
+<a name="getRegionCounts--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getRegionCounts</h4>
+<pre><a href="../../../../../org/apache/hadoop/hbase/util/PairOfSameType.html" title="class in org.apache.hadoop.hbase.util">PairOfSameType</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>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#line.151">getRegionCounts</a>()</pre>
+<div class="block">Get the online and offline region counts</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>pair of count for online regions and offline regions</dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 </li>


[47/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html b/devapidocs/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html
index 018d145..f8393cb 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.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};
+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};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.38">MetricsMasterWrapperImpl</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.43">MetricsMasterWrapperImpl</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/master/MetricsMasterWrapper.html" title="interface in org.apache.hadoop.hbase.master">MetricsMasterWrapper</a></pre>
 <div class="block">Impl for exposing HMaster Information through JMX</div>
@@ -249,36 +249,42 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterW
 </td>
 </tr>
 <tr id="i13" class="rowColor">
+<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/util/PairOfSameType.html" title="class in org.apache.hadoop.hbase.util">PairOfSameType</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>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#getRegionCounts--">getRegionCounts</a></span>()</code>
+<div class="block">Get the online and offline region counts</div>
+</td>
+</tr>
+<tr id="i14" 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/master/MetricsMasterWrapperImpl.html#getRegionServers--">getRegionServers</a></span>()</code>
 <div class="block">Get the live region servers</div>
 </td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" 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/master/MetricsMasterWrapperImpl.html#getServerName--">getServerName</a></span>()</code>
 <div class="block">Get ServerName</div>
 </td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#getSplitPlanCount--">getSplitPlanCount</a></span>()</code>
 <div class="block">Get the number of region split plans executed.</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/master/MetricsMasterWrapperImpl.html#getStartTime--">getStartTime</a></span>()</code>
 <div class="block">Get hbase master start time</div>
 </td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
 <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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#getTableSpaceUtilization--">getTableSpaceUtilization</a></span>()</code>
 <div class="block">Gets the space usage and limit for each table.</div>
 </td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i19" 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/master/MetricsMasterWrapperImpl.html#getZookeeperQuorum--">getZookeeperQuorum</a></span>()</code>
 <div class="block">Get the ZooKeeper Quorum Info</div>
@@ -312,7 +318,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterW
 <ul class="blockListLast">
 <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/MetricsMasterWrapperImpl.html#line.40">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/MetricsMasterWrapperImpl.html#line.45">master</a></pre>
 </li>
 </ul>
 </li>
@@ -329,7 +335,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterW
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MetricsMasterWrapperImpl</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.42">MetricsMasterWrapperImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.47">MetricsMasterWrapperImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master)</pre>
 </li>
 </ul>
 </li>
@@ -346,7 +352,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterW
 <ul class="blockList">
 <li class="blockList">
 <h4>getAverageLoad</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.47">getAverageLoad</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.52">getAverageLoad</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getAverageLoad--">MetricsMasterWrapper</a></code></span></div>
 <div class="block">Get Average Load</div>
 <dl>
@@ -363,7 +369,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterW
 <ul class="blockList">
 <li class="blockList">
 <h4>getSplitPlanCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.52">getSplitPlanCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.57">getSplitPlanCount</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getSplitPlanCount--">MetricsMasterWrapper</a></code></span></div>
 <div class="block">Get the number of region split plans executed.</div>
 <dl>
@@ -378,7 +384,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterW
 <ul class="blockList">
 <li class="blockList">
 <h4>getMergePlanCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.57">getMergePlanCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.62">getMergePlanCount</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getMergePlanCount--">MetricsMasterWrapper</a></code></span></div>
 <div class="block">Get the number of region merge plans executed.</div>
 <dl>
@@ -393,7 +399,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterW
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterInitializationTime</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.62">getMasterInitializationTime</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.67">getMasterInitializationTime</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getMasterInitializationTime--">MetricsMasterWrapper</a></code></span></div>
 <div class="block">Get the time in Millis when the master finished initializing/becoming the active master</div>
 <dl>
@@ -408,7 +414,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterW
 <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/master/MetricsMasterWrapperImpl.html#line.67">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/master/MetricsMasterWrapperImpl.html#line.72">getClusterId</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getClusterId--">MetricsMasterWrapper</a></code></span></div>
 <div class="block">Get the Cluster ID</div>
 <dl>
@@ -425,7 +431,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterW
 <ul class="blockList">
 <li class="blockList">
 <h4>getZookeeperQuorum</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/master/MetricsMasterWrapperImpl.html#line.72">getZookeeperQuorum</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/master/MetricsMasterWrapperImpl.html#line.77">getZookeeperQuorum</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getZookeeperQuorum--">MetricsMasterWrapper</a></code></span></div>
 <div class="block">Get the ZooKeeper Quorum Info</div>
 <dl>
@@ -442,7 +448,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterW
 <ul class="blockList">
 <li class="blockList">
 <h4>getCoprocessors</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/master/MetricsMasterWrapperImpl.html#line.81">getCoprocessors</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/master/MetricsMasterWrapperImpl.html#line.86">getCoprocessors</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getCoprocessors--">MetricsMasterWrapper</a></code></span></div>
 <div class="block">Get the co-processors</div>
 <dl>
@@ -459,7 +465,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterW
 <ul class="blockList">
 <li class="blockList">
 <h4>getStartTime</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.86">getStartTime</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.91">getStartTime</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getStartTime--">MetricsMasterWrapper</a></code></span></div>
 <div class="block">Get hbase master start time</div>
 <dl>
@@ -476,7 +482,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterW
 <ul class="blockList">
 <li class="blockList">
 <h4>getActiveTime</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.91">getActiveTime</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.96">getActiveTime</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getActiveTime--">MetricsMasterWrapper</a></code></span></div>
 <div class="block">Get the hbase master active time</div>
 <dl>
@@ -493,7 +499,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterW
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionServers</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/master/MetricsMasterWrapperImpl.html#line.96">getRegionServers</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/master/MetricsMasterWrapperImpl.html#line.101">getRegionServers</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getRegionServers--">MetricsMasterWrapper</a></code></span></div>
 <div class="block">Get the live region servers</div>
 <dl>
@@ -510,7 +516,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterW
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumRegionServers</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.105">getNumRegionServers</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.110">getNumRegionServers</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getNumRegionServers--">MetricsMasterWrapper</a></code></span></div>
 <div class="block">Get the number of live region servers</div>
 <dl>
@@ -527,7 +533,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterW
 <ul class="blockList">
 <li class="blockList">
 <h4>getDeadRegionServers</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/master/MetricsMasterWrapperImpl.html#line.114">getDeadRegionServers</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/master/MetricsMasterWrapperImpl.html#line.119">getDeadRegionServers</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getDeadRegionServers--">MetricsMasterWrapper</a></code></span></div>
 <div class="block">Get the dead region servers</div>
 <dl>
@@ -544,7 +550,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterW
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumDeadRegionServers</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.124">getNumDeadRegionServers</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.129">getNumDeadRegionServers</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getNumDeadRegionServers--">MetricsMasterWrapper</a></code></span></div>
 <div class="block">Get the number of dead region servers</div>
 <dl>
@@ -561,7 +567,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterW
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerName</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/master/MetricsMasterWrapperImpl.html#line.133">getServerName</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/master/MetricsMasterWrapperImpl.html#line.138">getServerName</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getServerName--">MetricsMasterWrapper</a></code></span></div>
 <div class="block">Get ServerName</div>
 <dl>
@@ -576,7 +582,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterW
 <ul class="blockList">
 <li class="blockList">
 <h4>getIsActiveMaster</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.142">getIsActiveMaster</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.147">getIsActiveMaster</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getIsActiveMaster--">MetricsMasterWrapper</a></code></span></div>
 <div class="block">Whether this master is the active master</div>
 <dl>
@@ -593,7 +599,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterW
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumWALFiles</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.147">getNumWALFiles</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.152">getNumWALFiles</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getNumWALFiles--">MetricsMasterWrapper</a></code></span></div>
 <div class="block">Get the number of master WAL files.</div>
 <dl>
@@ -608,7 +614,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterW
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableSpaceUtilization</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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.152">getTableSpaceUtilization</a>()</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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.157">getTableSpaceUtilization</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getTableSpaceUtilization--">MetricsMasterWrapper</a></code></span></div>
 <div class="block">Gets the space usage and limit for each table.</div>
 <dl>
@@ -623,7 +629,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterW
 <ul class="blockList">
 <li class="blockList">
 <h4>getNamespaceSpaceUtilization</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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.166">getNamespaceSpaceUtilization</a>()</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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.171">getNamespaceSpaceUtilization</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getNamespaceSpaceUtilization--">MetricsMasterWrapper</a></code></span></div>
 <div class="block">Gets the space usage and limit for each namespace.</div>
 <dl>
@@ -635,10 +641,27 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterW
 <a name="convertSnapshot-org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot-">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>convertSnapshot</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.179">convertSnapshot</a>(<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshot.html" title="class in org.apache.hadoop.hbase.quotas">SpaceQuotaSnapshot</a>&nbsp;snapshot)</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.184">convertSnapshot</a>(<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshot.html" title="class in org.apache.hadoop.hbase.quotas">SpaceQuotaSnapshot</a>&nbsp;snapshot)</pre>
+</li>
+</ul>
+<a name="getRegionCounts--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getRegionCounts</h4>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/PairOfSameType.html" title="class in org.apache.hadoop.hbase.util">PairOfSameType</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>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#line.189">getRegionCounts</a>()</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getRegionCounts--">MetricsMasterWrapper</a></code></span></div>
+<div class="block">Get the online and offline region counts</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getRegionCounts--">getRegionCounts</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html" title="interface in org.apache.hadoop.hbase.master">MetricsMasterWrapper</a></code></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>pair of count for online regions and offline regions</dd>
+</dl>
 </li>
 </ul>
 </li>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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 f445670..0445bee 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -347,11 +347,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.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/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.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/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>
-<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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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 71e02ff..d02e7c6 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/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/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/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/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/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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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 24487e3..bb6fe5d 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -437,19 +437,19 @@
 <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/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/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/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/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/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/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/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/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/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/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/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/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/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/HealthChecker.HealthCheckerExitStatus.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HealthChecker.HealthCheckerExitStatus</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MetaTableAccessor.QueryType</span></a></li>
+<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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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 22decce..b3e04df 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/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/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/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/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>
-<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/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">StateMachineProcedure.Flow</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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 f767f0e..6e8e22f 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
@@ -229,13 +229,13 @@
 <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/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/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/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/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/QuotaType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">OperationQuota.OperationType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html b/devapidocs/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html
index be0991b..d1482da 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html
@@ -165,14 +165,18 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#NO_SNAPSHOT_ID">NO_SNAPSHOT_ID</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#regionServices">regionServices</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#snapshot">snapshot</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#snapshotId">snapshotId</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#timeOfOldestEdit">timeOfOldestEdit</a></span></code>&nbsp;</td>
 </tr>
@@ -193,8 +197,9 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>protected </code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#AbstractMemStore-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-">AbstractMemStore</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
-                <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;c)</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#AbstractMemStore-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.RegionServicesForStores-">AbstractMemStore</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;c,
+                <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a>&nbsp;regionServices)</code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -483,13 +488,22 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.55">timeOfOldestEdit</a></pre>
 </li>
 </ul>
+<a name="regionServices">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>regionServices</h4>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.57">regionServices</a></pre>
+</li>
+</ul>
 <a name="FIXED_OVERHEAD">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>FIXED_OVERHEAD</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.57">FIXED_OVERHEAD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.59">FIXED_OVERHEAD</a></pre>
 </li>
 </ul>
 <a name="DEEP_OVERHEAD">
@@ -498,7 +512,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DEEP_OVERHEAD</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.61">DEEP_OVERHEAD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.63">DEEP_OVERHEAD</a></pre>
 </li>
 </ul>
 </li>
@@ -509,14 +523,15 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="AbstractMemStore-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-">
+<a name="AbstractMemStore-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.RegionServicesForStores-">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>AbstractMemStore</h4>
-<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.75">AbstractMemStore</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
-                           <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;c)</pre>
+<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.77">AbstractMemStore</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                           <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;c,
+                           <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a>&nbsp;regionServices)</pre>
 </li>
 </ul>
 </li>
@@ -533,7 +548,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>addToScanners</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.63">addToScanners</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/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;segments,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.65">addToScanners</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/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;segments,
                                  long&nbsp;readPt,
                                  <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;scanners)</pre>
 </li>
@@ -544,7 +559,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>addToScanners</h4>
-<pre>protected static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.70">addToScanners</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&nbsp;segment,
+<pre>protected static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.72">addToScanners</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&nbsp;segment,
                                     long&nbsp;readPt,
                                     <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;scanners)</pre>
 </li>
@@ -555,7 +570,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>resetActive</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.83">resetActive</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.87">resetActive</a>()</pre>
 </li>
 </ul>
 <a name="updateLowestUnflushedSequenceIdInWAL-boolean-">
@@ -564,7 +579,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>updateLowestUnflushedSequenceIdInWAL</h4>
-<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.94">updateLowestUnflushedSequenceIdInWAL</a>(boolean&nbsp;onlyIfMoreRecent)</pre>
+<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.106">updateLowestUnflushedSequenceIdInWAL</a>(boolean&nbsp;onlyIfMoreRecent)</pre>
 <div class="block">Updates the wal with the lowest sequence id (oldest entry) that is still in memory</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -579,7 +594,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.97">add</a>(<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,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.109">add</a>(<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,
                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html#add-java.lang.Iterable-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">MemStore</a></code></span></div>
 <div class="block">Write the updates</div>
@@ -597,7 +612,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.104">add</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.116">add</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html#add-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">MemStore</a></code></span></div>
 <div class="block">Write an update</div>
@@ -615,7 +630,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>upsert</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.122">upsert</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.134">upsert</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                     long&nbsp;readpoint,
                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 </li>
@@ -626,7 +641,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>doAddOrUpsert</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.126">doAddOrUpsert</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.138">doAddOrUpsert</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                            long&nbsp;readpoint,
                            <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
                            boolean&nbsp;doAdd)</pre>
@@ -638,7 +653,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>doAdd</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.144">doAdd</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.156">doAdd</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
                    <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                    <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 </li>
@@ -649,7 +664,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>doUpsert</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.162">doUpsert</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.174">doUpsert</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
                       <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                       long&nbsp;readpoint,
                       <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
@@ -661,7 +676,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>preUpdate</h4>
-<pre>protected abstract&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.186">preUpdate</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+<pre>protected abstract&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.198">preUpdate</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
                                      <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 <div class="block">Issue any synchronization and test needed before applying the update</div>
@@ -681,7 +696,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>postUpdate</h4>
-<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.193">postUpdate</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive)</pre>
+<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.205">postUpdate</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive)</pre>
 <div class="block">Issue any post update synchronization and tests</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -695,7 +710,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>deepCopyIfNeeded</h4>
-<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.195">deepCopyIfNeeded</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
+<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.207">deepCopyIfNeeded</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
 </li>
 </ul>
 <a name="upsert-java.lang.Iterable-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
@@ -704,7 +719,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>upsert</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.203">upsert</a>(<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,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.215">upsert</a>(<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,
                    <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html#upsert-java.lang.Iterable-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">MemStore</a></code></span></div>
@@ -733,7 +748,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>timeOfOldestEdit</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.213">timeOfOldestEdit</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.225">timeOfOldestEdit</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html#timeOfOldestEdit--">timeOfOldestEdit</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStore</a></code></dd>
@@ -748,7 +763,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>clearSnapshot</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.223">clearSnapshot</a>(long&nbsp;id)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.235">clearSnapshot</a>(long&nbsp;id)
                    throws <a href="../../../../../org/apache/hadoop/hbase/exceptions/UnexpectedStateException.html" title="class in org.apache.hadoop.hbase.exceptions">UnexpectedStateException</a></pre>
 <div class="block">The passed snapshot was successfully persisted; it can be let go.</div>
 <dl>
@@ -769,7 +784,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getSnapshotSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.240">getSnapshotSize</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.252">getSnapshotSize</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html#getSnapshotSize--">MemStore</a></code></span></div>
 <div class="block">Return the size of the snapshot(s) if any</div>
 <dl>
@@ -786,7 +801,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <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/AbstractMemStore.html#line.245">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/AbstractMemStore.html#line.257">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>
@@ -799,7 +814,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getConfiguration</h4>
-<pre>protected&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.259">getConfiguration</a>()</pre>
+<pre>protected&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.271">getConfiguration</a>()</pre>
 </li>
 </ul>
 <a name="dump-org.slf4j.Logger-">
@@ -808,7 +823,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>dump</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.263">dump</a>(org.slf4j.Logger&nbsp;log)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.275">dump</a>(org.slf4j.Logger&nbsp;log)</pre>
 </li>
 </ul>
 <a name="getLowest-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">
@@ -817,7 +832,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getLowest</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.274">getLowest</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;a,
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.286">getLowest</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;a,
                          <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;b)</pre>
 </li>
 </ul>
@@ -827,7 +842,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getNextRow</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.290">getNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key,
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.302">getNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key,
                           <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;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;set)</pre>
 </li>
 </ul>
@@ -837,7 +852,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>maybeCloneWithAllocator</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.320">maybeCloneWithAllocator</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.332">maybeCloneWithAllocator</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
                                      <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                                      boolean&nbsp;forceCloneOfBigCell)</pre>
 <div class="block">If the segment has a memory allocator the cell is being cloned to this space, and returned;
@@ -862,7 +877,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>internalAdd</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.334">internalAdd</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.346">internalAdd</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
                          <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;toAdd,
                          boolean&nbsp;mslabUsed,
                          <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
@@ -874,7 +889,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>sizeAddedPreOperation</h4>
-<pre>protected abstract&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.341">sizeAddedPreOperation</a>()</pre>
+<pre>protected abstract&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.353">sizeAddedPreOperation</a>()</pre>
 </li>
 </ul>
 <a name="setOldestEditTimeToNow--">
@@ -883,7 +898,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>setOldestEditTimeToNow</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.343">setOldestEditTimeToNow</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.355">setOldestEditTimeToNow</a>()</pre>
 </li>
 </ul>
 <a name="keySize--">
@@ -892,7 +907,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>keySize</h4>
-<pre>protected abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.352">keySize</a>()</pre>
+<pre>protected abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.364">keySize</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The total size of cells in this memstore. We will not consider cells in the snapshot</dd>
@@ -905,7 +920,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>heapSize</h4>
-<pre>protected abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.358">heapSize</a>()</pre>
+<pre>protected abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.370">heapSize</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The total heap size of cells in this memstore. We will not consider cells in the
@@ -919,7 +934,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getComparator</h4>
-<pre>protected&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/AbstractMemStore.html#line.360">getComparator</a>()</pre>
+<pre>protected&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/AbstractMemStore.html#line.372">getComparator</a>()</pre>
 </li>
 </ul>
 <a name="getActive--">
@@ -928,7 +943,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getActive</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.365">getActive</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.377">getActive</a>()</pre>
 </li>
 </ul>
 <a name="getSnapshot--">
@@ -937,7 +952,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getSnapshot</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.370">getSnapshot</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.382">getSnapshot</a>()</pre>
 </li>
 </ul>
 <a name="getSegments--">
@@ -946,7 +961,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getSegments</h4>
-<pre>protected abstract&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/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.377">getSegments</a>()
+<pre>protected abstract&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/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.389">getSegments</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="returnLabel">Returns:</span></dt>


[44/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
index db892a3..26066fb 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3459">HRegion.MutationBatchOperation</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3476">HRegion.MutationBatchOperation</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;</pre>
 <div class="block">Batch of mutation operations. Base class is shared with <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver"><code>HRegion.ReplayBatchOperation</code></a> as most
  of the logic is same.</div>
@@ -342,7 +342,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>nonceGroup</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3460">nonceGroup</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3477">nonceGroup</a></pre>
 </li>
 </ul>
 <a name="nonce">
@@ -351,7 +351,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>nonce</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3461">nonce</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3478">nonce</a></pre>
 </li>
 </ul>
 </li>
@@ -368,7 +368,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MutationBatchOperation</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3462">MutationBatchOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3479">MutationBatchOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
                               <a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;operations,
                               boolean&nbsp;atomic,
                               long&nbsp;nonceGroup,
@@ -389,7 +389,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getMutation</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3471">getMutation</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3488">getMutation</a>(int&nbsp;index)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getMutation-int-">getMutation</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;</code></dd>
@@ -402,7 +402,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getNonceGroup</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3476">getNonceGroup</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3493">getNonceGroup</a>(int&nbsp;index)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getNonceGroup-int-">getNonceGroup</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;</code></dd>
@@ -415,7 +415,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getNonce</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3481">getNonce</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3498">getNonce</a>(int&nbsp;index)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getNonce-int-">getNonce</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;</code></dd>
@@ -428,7 +428,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getMutationsForCoprocs</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3486">getMutationsForCoprocs</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3503">getMutationsForCoprocs</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getMutationsForCoprocs--">HRegion.BatchOperation</a></code></span></div>
 <div class="block">This method is potentially expensive and useful mostly for non-replay CP path.</div>
 <dl>
@@ -443,7 +443,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>isInReplay</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3491">isInReplay</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3508">isInReplay</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#isInReplay--">isInReplay</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;</code></dd>
@@ -456,7 +456,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getOrigLogSeqNum</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3496">getOrigLogSeqNum</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3513">getOrigLogSeqNum</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getOrigLogSeqNum--">getOrigLogSeqNum</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;</code></dd>
@@ -469,7 +469,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>startRegionOperation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3501">startRegionOperation</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3518">startRegionOperation</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="overrideSpecifyLabel">Specified by:</span></dt>
@@ -485,7 +485,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>closeRegionOperation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3506">closeRegionOperation</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3523">closeRegionOperation</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="overrideSpecifyLabel">Specified by:</span></dt>
@@ -501,7 +501,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPreparePut</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3511">checkAndPreparePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3528">checkAndPreparePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)
                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#checkAndPreparePut-org.apache.hadoop.hbase.client.Put-">HRegion.BatchOperation</a></code></span></div>
 <div class="block">Implement any Put request specific check and prepare logic here. Please refer to
@@ -520,7 +520,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPrepare</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3516">checkAndPrepare</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3533">checkAndPrepare</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 class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#checkAndPrepare--">HRegion.BatchOperation</a></code></span></div>
 <div class="block">Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs
@@ -542,7 +542,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>prepareMiniBatchOperations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3561">prepareMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3578">prepareMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                        long&nbsp;timestamp,
                                        <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/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&gt;&nbsp;acquiredRowLocks)
                                 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>
@@ -563,7 +563,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>buildWALEdits</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/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a>,<a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3597">buildWALEdits</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt
 ;&nbsp;miniBatchOp)
+<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/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a>,<a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3614">buildWALEdits</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt
 ;&nbsp;miniBatchOp)
                                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#buildWALEdits-org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress-">HRegion.BatchOperation</a></code></span></div>
 <div class="block">Builds separate WALEdit per nonce by applying input mutations. If WALEdits from CP are
@@ -582,7 +582,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>writeMiniBatchOperationsToMemStore</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3608">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3625">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                                                                     @Nullable
                                                                                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;writeEntry)
                                                                              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>
@@ -602,7 +602,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>completeMiniBatchOperations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3619">completeMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3636">completeMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;writeEntry)
                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#completeMiniBatchOperations-org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress-org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry-">HRegion.BatchOperation</a></code></span></div>
@@ -622,7 +622,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>doPostOpCleanupForMiniBatch</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3631">doPostOpCleanupForMiniBatch</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3648">doPostOpCleanupForMiniBatch</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                         <a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;walEdit,
                                         boolean&nbsp;success)
                                  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>
@@ -640,7 +640,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>callPreMutateCPHook</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3680">callPreMutateCPHook</a>(int&nbsp;index,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3697">callPreMutateCPHook</a>(int&nbsp;index,
                                  <a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;walEdit,
                                  int[]&nbsp;metrics)
                           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>
@@ -659,7 +659,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndMergeCPMutations</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3717">checkAndMergeCPMutations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3734">checkAndMergeCPMutations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                       <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/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&gt;&nbsp;acquiredRowLocks,
                                       long&nbsp;timestamp)
                                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>
@@ -675,7 +675,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>mergeFamilyMaps</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3752">mergeFamilyMaps</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;familyMap,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3769">mergeFamilyMaps</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;familyMap,
                              <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[],<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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;toBeMerged)</pre>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
index 4b8e3c2..b6f0498 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
@@ -121,7 +121,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.6221">HRegion.RegionScannerImpl</a>
+<pre>class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.6252">HRegion.RegionScannerImpl</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/RegionScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Shipper.html" title="interface in org.apache.hadoop.hbase.regionserver">Shipper</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcCallback.html" title="interface in org.apache.hadoop.hbase.ipc">RpcCallback</a></pre>
 <div class="block">RegionScannerImpl is used to combine scanners from multiple Stores (aka column families).</div>
@@ -425,7 +425,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>storeHeap</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6224">storeHeap</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6255">storeHeap</a></pre>
 </li>
 </ul>
 <a name="joinedHeap">
@@ -434,7 +434,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>joinedHeap</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6227">joinedHeap</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6258">joinedHeap</a></pre>
 <div class="block">Heap of key-values that are not essential for the provided filters and are thus read
  on demand, if on-demand column family loading is enabled.</div>
 </li>
@@ -445,7 +445,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>joinedContinuationRow</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6231">joinedContinuationRow</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6262">joinedContinuationRow</a></pre>
 <div class="block">If the joined heap data gathering is interrupted due to scan limits, this will
  contain the row for which we are populating the values.</div>
 </li>
@@ -456,7 +456,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>filterClosed</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6232">filterClosed</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6263">filterClosed</a></pre>
 </li>
 </ul>
 <a name="stopRow">
@@ -465,7 +465,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>stopRow</h4>
-<pre>protected final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6234">stopRow</a></pre>
+<pre>protected final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6265">stopRow</a></pre>
 </li>
 </ul>
 <a name="includeStopRow">
@@ -474,7 +474,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>includeStopRow</h4>
-<pre>protected final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6235">includeStopRow</a></pre>
+<pre>protected final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6266">includeStopRow</a></pre>
 </li>
 </ul>
 <a name="region">
@@ -483,7 +483,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>region</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6236">region</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6267">region</a></pre>
 </li>
 </ul>
 <a name="comparator">
@@ -492,7 +492,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>comparator</h4>
-<pre>protected final&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/HRegion.RegionScannerImpl.html#line.6237">comparator</a></pre>
+<pre>protected final&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/HRegion.RegionScannerImpl.html#line.6268">comparator</a></pre>
 </li>
 </ul>
 <a name="readPt">
@@ -501,7 +501,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>readPt</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6239">readPt</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6270">readPt</a></pre>
 </li>
 </ul>
 <a name="maxResultSize">
@@ -510,7 +510,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>maxResultSize</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6240">maxResultSize</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6271">maxResultSize</a></pre>
 </li>
 </ul>
 <a name="defaultScannerContext">
@@ -519,7 +519,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>defaultScannerContext</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6241">defaultScannerContext</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6272">defaultScannerContext</a></pre>
 </li>
 </ul>
 <a name="filter">
@@ -528,7 +528,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockListLast">
 <li class="blockList">
 <h4>filter</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/filter/FilterWrapper.html" title="class in org.apache.hadoop.hbase.filter">FilterWrapper</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6242">filter</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/filter/FilterWrapper.html" title="class in org.apache.hadoop.hbase.filter">FilterWrapper</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6273">filter</a></pre>
 </li>
 </ul>
 </li>
@@ -545,7 +545,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>RegionScannerImpl</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6249">RegionScannerImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6280">RegionScannerImpl</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/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;additionalScanners,
                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&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></pre>
@@ -561,7 +561,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RegionScannerImpl</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6254">RegionScannerImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6285">RegionScannerImpl</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/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;additionalScanners,
                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
                   long&nbsp;nonceGroup,
@@ -587,7 +587,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <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/regionserver/HRegion.RegionScannerImpl.html#line.6245">getRegionInfo</a>()</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/regionserver/HRegion.RegionScannerImpl.html#line.6276">getRegionInfo</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html#getRegionInfo--">getRegionInfo</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionScanner</a></code></dd>
@@ -602,7 +602,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>initializeScanners</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6292">initializeScanners</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6323">initializeScanners</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/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;additionalScanners)
                            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>
@@ -617,7 +617,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>initializeKVHeap</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6324">initializeKVHeap</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/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6355">initializeKVHeap</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/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
                                 <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;joinedScanners,
                                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&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></pre>
@@ -633,7 +633,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>handleException</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6333">handleException</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/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;instantiatedScanners,
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6364">handleException</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/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;instantiatedScanners,
                                     <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>&nbsp;t)</pre>
 </li>
 </ul>
@@ -643,7 +643,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxResultSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6354">getMaxResultSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6385">getMaxResultSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html#getMaxResultSize--">getMaxResultSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionScanner</a></code></dd>
@@ -659,7 +659,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>getMvccReadPoint</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6359">getMvccReadPoint</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6390">getMvccReadPoint</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html#getMvccReadPoint--">getMvccReadPoint</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionScanner</a></code></dd>
@@ -674,7 +674,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>getBatch</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6364">getBatch</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6395">getBatch</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html#getBatch--">getBatch</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionScanner</a></code></dd>
@@ -690,7 +690,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>resetFilters</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6373">resetFilters</a>()
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6404">resetFilters</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">Reset both the filter and the old filter.</div>
 <dl>
@@ -705,7 +705,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>next</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6380">next</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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6411">next</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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults)
              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/InternalScanner.html#next-java.util.List-">InternalScanner</a></code></span></div>
 <div class="block">Grab the next row's worth of values.</div>
@@ -727,7 +727,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>next</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6387">next</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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6418">next</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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults,
                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)
              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/InternalScanner.html#next-java.util.List-org.apache.hadoop.hbase.regionserver.ScannerContext-">InternalScanner</a></code></span></div>
@@ -750,7 +750,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>nextRaw</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6403">nextRaw</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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6434">nextRaw</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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults)
                 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/RegionScanner.html#nextRaw-java.util.List-">RegionScanner</a></code></span></div>
 <div class="block">Grab the next row's worth of values. This is a special internal method to be called from
@@ -775,7 +775,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>nextRaw</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6409">nextRaw</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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6440">nextRaw</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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults,
                        <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)
                 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/RegionScanner.html#nextRaw-java.util.List-org.apache.hadoop.hbase.regionserver.ScannerContext-">RegionScanner</a></code></span></div>
@@ -821,7 +821,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>populateFromJoinedHeap</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6446">populateFromJoinedHeap</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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;results,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6477">populateFromJoinedHeap</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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;results,
                                        <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)
                                 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>
@@ -838,7 +838,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>populateResult</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6470">populateResult</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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;results,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6501">populateResult</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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;results,
                                <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a>&nbsp;heap,
                                <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext,
                                <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentRowCell)
@@ -863,7 +863,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>moreCellsInRow</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6511">moreCellsInRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;nextKv,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6542">moreCellsInRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;nextKv,
                                <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentRowCell)</pre>
 <div class="block">Based on the nextKv in the heap, and the current row, decide whether or not there are more
  cells to be read in the heap. If the row of the nextKv in the heap matches the current row
@@ -883,7 +883,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>isFilterDone</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6519">isFilterDone</a>()
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6550">isFilterDone</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="overrideSpecifyLabel">Specified by:</span></dt>
@@ -901,7 +901,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>isFilterDoneInternal</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6523">isFilterDoneInternal</a>()
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6554">isFilterDoneInternal</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>
@@ -915,7 +915,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>nextInternal</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6527">nextInternal</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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;results,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6558">nextInternal</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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;results,
                              <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)
                       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>
@@ -930,7 +930,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>incrementCountOfRowsFilteredMetric</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6750">incrementCountOfRowsFilteredMetric</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6781">incrementCountOfRowsFilteredMetric</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)</pre>
 </li>
 </ul>
 <a name="incrementCountOfRowsScannedMetric-org.apache.hadoop.hbase.regionserver.ScannerContext-">
@@ -939,7 +939,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>incrementCountOfRowsScannedMetric</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6758">incrementCountOfRowsScannedMetric</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6789">incrementCountOfRowsScannedMetric</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)</pre>
 </li>
 </ul>
 <a name="joinedHeapMayHaveData-org.apache.hadoop.hbase.Cell-">
@@ -948,7 +948,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>joinedHeapMayHaveData</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6769">joinedHeapMayHaveData</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentRowCell)
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6800">joinedHeapMayHaveData</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentRowCell)
                                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>
@@ -966,7 +966,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>filterRow</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6796">filterRow</a>()
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6827">filterRow</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">This function is to maintain backward compatibility for 0.94 filters. HBASE-6429 combines
  both filterRow & filterRow(<code>List&lt;KeyValue&gt; kvs</code>) functions. While 0.94 code or older,
@@ -985,7 +985,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>filterRowKey</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6803">filterRowKey</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;current)
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6834">filterRowKey</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;current)
                       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>
@@ -999,7 +999,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>nextRow</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6807">nextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6838">nextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext,
                           <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;curRowCell)
                    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>
@@ -1014,7 +1014,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>shouldStop</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6822">shouldStop</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentRowCell)</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6853">shouldStop</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentRowCell)</pre>
 </li>
 </ul>
 <a name="close--">
@@ -1023,7 +1023,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6834">close</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6865">close</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html#close--">InternalScanner</a></code></span></div>
 <div class="block">Closes the scanner and releases any resources it has allocated</div>
 <dl>
@@ -1042,7 +1042,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreHeapForTesting</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6848">getStoreHeapForTesting</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6879">getStoreHeapForTesting</a>()</pre>
 </li>
 </ul>
 <a name="reseek-byte:A-">
@@ -1051,7 +1051,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>reseek</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6853">reseek</a>(byte[]&nbsp;row)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6884">reseek</a>(byte[]&nbsp;row)
                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/RegionScanner.html#reseek-byte:A-">RegionScanner</a></code></span></div>
 <div class="block">Do a reseek to the required row. Should not be used to seek to a key which
@@ -1071,7 +1071,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>shipped</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6873">shipped</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6904">shipped</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/Shipper.html#shipped--">Shipper</a></code></span></div>
 <div class="block">Called after a batch of rows scanned and set to be returned to client. Any in between cleanup
@@ -1090,7 +1090,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6883">run</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6914">run</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/ipc/RpcCallback.html#run--">RpcCallback</a></code></span></div>
 <div class="block">Called at the end of an Rpc Call <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcCallContext.html" title="interface in org.apache.hadoop.hbase.ipc"><code>RpcCallContext</code></a></div>


[31/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html
index 16913e6..e4622c3 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html
@@ -80,272 +80,279 @@
 <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>  public boolean pushHead(MutableSegment segment) {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    ImmutableSegment immutableSegment = SegmentFactory.instance().<a name="line.75"></a>
-<span class="sourceLineNo">076</span>        createImmutableSegment(segment);<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    synchronized (pipeline){<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      boolean res = addFirst(immutableSegment);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>      readOnlyCopy = new LinkedList&lt;&gt;(pipeline);<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      return res;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    }<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  }<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>  public VersionedSegmentsList getVersionedList() {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    synchronized (pipeline){<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      return new VersionedSegmentsList(readOnlyCopy, version);<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    }<a name="line.87"></a>
-<span class="sourceLineNo">088</span>  }<a name="line.88"></a>
-<span class="sourceLineNo">089</span><a name="line.89"></a>
-<span class="sourceLineNo">090</span>  public VersionedSegmentsList getVersionedTail() {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    synchronized (pipeline){<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      List&lt;ImmutableSegment&gt; segmentList = new ArrayList&lt;&gt;();<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      if(!pipeline.isEmpty()) {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        segmentList.add(0, pipeline.getLast());<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      return new VersionedSegmentsList(segmentList, version);<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><a name="line.99"></a>
-<span class="sourceLineNo">100</span>  /**<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * Swaps the versioned list at the tail of the pipeline with a new segment.<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * Swapping only if there were no changes to the suffix of the list since the version list was<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * created.<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @param versionedList suffix of the pipeline to be replaced can be tail or all the pipeline<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   * @param segment new segment to replace the suffix. Can be null if the suffix just needs to be<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   *                removed.<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   * @param closeSuffix whether to close the suffix (to release memory), as part of swapping it out<a name="line.107"></a>
-<span class="sourceLineNo">108</span>   *        During index merge op this will be false and for compaction it will be true.<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * @param updateRegionSize whether to update the region size. Update the region size,<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   *                         when the pipeline is swapped as part of in-memory-flush and<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   *                         further merge/compaction. Don't update the region size when the<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   *                         swap is result of the snapshot (flush-to-disk).<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   * @return true iff swapped tail with new segment<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   */<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="VO_VOLATILE_INCREMENT",<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      justification="Increment is done under a synchronize block so safe")<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  public boolean swap(VersionedSegmentsList versionedList, ImmutableSegment segment,<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      boolean closeSuffix, boolean updateRegionSize) {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    if (versionedList.getVersion() != version) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return false;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    List&lt;ImmutableSegment&gt; suffix;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    synchronized (pipeline){<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      if(versionedList.getVersion() != version) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        return false;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      suffix = versionedList.getStoreSegments();<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      LOG.debug("Swapping pipeline suffix; before={}, new segment={}",<a name="line.128"></a>
-<span class="sourceLineNo">129</span>          versionedList.getStoreSegments().size(), segment);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      swapSuffix(suffix, segment, closeSuffix);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      readOnlyCopy = new LinkedList&lt;&gt;(pipeline);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      version++;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    if (updateRegionSize &amp;&amp; region != null) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      // update the global memstore size counter<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      long suffixDataSize = getSegmentsKeySize(suffix);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      long newDataSize = 0;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      if(segment != null) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>        newDataSize = segment.getDataSize();<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      }<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      long dataSizeDelta = suffixDataSize - newDataSize;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      long suffixHeapSize = getSegmentsHeapSize(suffix);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      long suffixOffHeapSize = getSegmentsOffHeapSize(suffix);<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      long newHeapSize = 0;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      long newOffHeapSize = 0;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      if(segment != null) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        newHeapSize = segment.getHeapSize();<a name="line.147"></a>
-<span class="sourceLineNo">148</span>        newOffHeapSize = segment.getOffHeapSize();<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      }<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      long offHeapSizeDelta = suffixOffHeapSize - newOffHeapSize;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      long heapSizeDelta = suffixHeapSize - newHeapSize;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      region.addMemStoreSize(-dataSizeDelta, -heapSizeDelta, -offHeapSizeDelta);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      LOG.debug("Suffix data size={}, new segment data size={}, " + "suffix heap size={},"<a name="line.153"></a>
-<span class="sourceLineNo">154</span>              + "new segment heap size={}" + "suffix off heap size={},"<a name="line.154"></a>
-<span class="sourceLineNo">155</span>              + "new segment off heap size={}", suffixDataSize, newDataSize, suffixHeapSize,<a name="line.155"></a>
-<span class="sourceLineNo">156</span>          newHeapSize, suffixOffHeapSize, newOffHeapSize);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    return true;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
-<span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  private static long getSegmentsHeapSize(List&lt;? extends Segment&gt; list) {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    long res = 0;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    for (Segment segment : list) {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      res += segment.getHeapSize();<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    return res;<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>  private static long getSegmentsOffHeapSize(List&lt;? extends Segment&gt; list) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    long res = 0;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    for (Segment segment : list) {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      res += segment.getOffHeapSize();<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    }<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    return res;<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>  private static long getSegmentsKeySize(List&lt;? extends Segment&gt; list) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    long res = 0;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    for (Segment segment : list) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      res += segment.getDataSize();<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    return res;<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>   * If the caller holds the current version, go over the the pipeline and try to flatten each<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * segment. Flattening is replacing the ConcurrentSkipListMap based CellSet to CellArrayMap based.<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * Flattening of the segment that initially is not based on ConcurrentSkipListMap has no effect.<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   * Return after one segment is successfully flatten.<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   *<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @return true iff a segment was successfully flattened<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   */<a name="line.192"></a>
-<span class="sourceLineNo">193</span>  public boolean flattenOneSegment(long requesterVersion,<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      CompactingMemStore.IndexType idxType,<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      MemStoreCompactionStrategy.Action action) {<a name="line.195"></a>
-<span class="sourceLineNo">196</span><a name="line.196"></a>
-<span class="sourceLineNo">197</span>    if(requesterVersion != version) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      LOG.warn("Segment flattening failed, because versions do not match. Requester version: "<a name="line.198"></a>
-<span class="sourceLineNo">199</span>          + requesterVersion + ", actual version: " + version);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      return false;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
-<span class="sourceLineNo">202</span><a name="line.202"></a>
-<span class="sourceLineNo">203</span>    synchronized (pipeline){<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      if(requesterVersion != version) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        LOG.warn("Segment flattening failed, because versions do not match");<a name="line.205"></a>
-<span class="sourceLineNo">206</span>        return false;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      }<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      int i = 0;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      for (ImmutableSegment s : pipeline) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        if ( s.canBeFlattened() ) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          s.waitForUpdates(); // to ensure all updates preceding s in-memory flush have completed<a name="line.211"></a>
-<span class="sourceLineNo">212</span>          // size to be updated<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          MemStoreSizing newMemstoreAccounting = new NonThreadSafeMemStoreSizing();<a name="line.213"></a>
-<span class="sourceLineNo">214</span>          ImmutableSegment newS = SegmentFactory.instance().createImmutableSegmentByFlattening(<a name="line.214"></a>
-<span class="sourceLineNo">215</span>              (CSLMImmutableSegment)s,idxType,newMemstoreAccounting,action);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>          replaceAtIndex(i,newS);<a name="line.216"></a>
-<span class="sourceLineNo">217</span>          if(region != null) {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>            // Update the global memstore size counter upon flattening there is no change in the<a name="line.218"></a>
-<span class="sourceLineNo">219</span>            // data size<a name="line.219"></a>
-<span class="sourceLineNo">220</span>            MemStoreSize mss = newMemstoreAccounting.getMemStoreSize();<a name="line.220"></a>
-<span class="sourceLineNo">221</span>            region.addMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.221"></a>
-<span class="sourceLineNo">222</span>          }<a name="line.222"></a>
-<span class="sourceLineNo">223</span>          LOG.debug("Compaction pipeline segment {} flattened", s);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>          return true;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>        }<a name="line.225"></a>
-<span class="sourceLineNo">226</span>        i++;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      }<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>    }<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // do not update the global memstore size counter and do not increase the version,<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    // because all the cells remain in place<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    return false;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  }<a name="line.233"></a>
-<span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>  public boolean isEmpty() {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    return readOnlyCopy.isEmpty();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  }<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>  public List&lt;? extends Segment&gt; getSegments() {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    return readOnlyCopy;<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>  public long size() {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    return readOnlyCopy.size();<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>  public long getMinSequenceId() {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    long minSequenceId = Long.MAX_VALUE;<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    LinkedList&lt;? extends Segment&gt; localCopy = readOnlyCopy;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    if (!localCopy.isEmpty()) {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      minSequenceId = localCopy.getLast().getMinSequenceId();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    }<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    return minSequenceId;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>  public MemStoreSize getTailSize() {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    LinkedList&lt;? extends Segment&gt; localCopy = readOnlyCopy;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    return localCopy.isEmpty()? new MemStoreSize(): localCopy.peekLast().getMemStoreSize();<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>  public MemStoreSize getPipelineSize() {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    LinkedList&lt;? extends Segment&gt; localCopy = readOnlyCopy;<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    for (Segment segment : localCopy) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      memStoreSizing.incMemStoreSize(segment.getMemStoreSize());<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    return memStoreSizing.getMemStoreSize();<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>  private void swapSuffix(List&lt;? extends Segment&gt; suffix, ImmutableSegment segment,<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      boolean closeSegmentsInSuffix) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    pipeline.removeAll(suffix);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    if(segment != null) pipeline.addLast(segment);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    // During index merge we won't be closing the segments undergoing the merge. Segment#close()<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    // will release the MSLAB chunks to pool. But in case of index merge there wont be any data copy<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    // from old MSLABs. So the new cells in new segment also refers to same chunks. In case of data<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    // compaction, we would have copied the cells data from old MSLAB chunks into a new chunk<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    // created for the result segment. So we can release the chunks associated with the compacted<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // segments.<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    if (closeSegmentsInSuffix) {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      for (Segment itemInSuffix : suffix) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        itemInSuffix.close();<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><a name="line.286"></a>
-<span class="sourceLineNo">287</span>  // replacing one segment in the pipeline with a new one exactly at the same index<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  // need to be called only within synchronized block<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="VO_VOLATILE_INCREMENT",<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      justification="replaceAtIndex is invoked under a synchronize block so safe")<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  private void replaceAtIndex(int idx, ImmutableSegment newSegment) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    pipeline.set(idx, newSegment);<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    readOnlyCopy = new LinkedList&lt;&gt;(pipeline);<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    // the version increment is indeed needed, because the swap uses removeAll() method of the<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    // linked-list that compares the objects to find what to remove.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    // The flattening changes the segment object completely (creation pattern) and so<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    // swap will not proceed correctly after concurrent flattening.<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    version++;<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>  public Segment getTail() {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    List&lt;? extends Segment&gt; localCopy = getSegments();<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    if(localCopy.isEmpty()) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      return null;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    return localCopy.get(localCopy.size() - 1);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  private boolean addFirst(ImmutableSegment segment) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    pipeline.addFirst(segment);<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>  // debug method<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  private boolean validateSuffixList(LinkedList&lt;ImmutableSegment&gt; suffix) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    if(suffix.isEmpty()) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      // empty suffix is always valid<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      return true;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    Iterator&lt;ImmutableSegment&gt; pipelineBackwardIterator = pipeline.descendingIterator();<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    Iterator&lt;ImmutableSegment&gt; suffixBackwardIterator = suffix.descendingIterator();<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    ImmutableSegment suffixCurrent;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    ImmutableSegment pipelineCurrent;<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    for( ; suffixBackwardIterator.hasNext(); ) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      if(!pipelineBackwardIterator.hasNext()) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        // a suffix longer than pipeline is invalid<a name="line.326"></a>
-<span class="sourceLineNo">327</span>        return false;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      }<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      suffixCurrent = suffixBackwardIterator.next();<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      pipelineCurrent = pipelineBackwardIterator.next();<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      if(suffixCurrent != pipelineCurrent) {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        // non-matching suffix<a name="line.332"></a>
-<span class="sourceLineNo">333</span>        return false;<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    // suffix matches pipeline suffix<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    return true;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  }<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">075</span>    // Record the ImmutableSegment' heap overhead when initialing<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    MemStoreSizing memstoreAccounting = new NonThreadSafeMemStoreSizing();<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    ImmutableSegment immutableSegment = SegmentFactory.instance().<a name="line.77"></a>
+<span class="sourceLineNo">078</span>        createImmutableSegment(segment, memstoreAccounting);<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    if (region != null) {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      region.addMemStoreSize(memstoreAccounting.getDataSize(),<a name="line.80"></a>
+<span class="sourceLineNo">081</span>          memstoreAccounting.getHeapSize(),<a name="line.81"></a>
+<span class="sourceLineNo">082</span>          memstoreAccounting.getOffHeapSize());<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    }<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    synchronized (pipeline){<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      boolean res = addFirst(immutableSegment);<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      readOnlyCopy = new LinkedList&lt;&gt;(pipeline);<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      return res;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    }<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  }<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public VersionedSegmentsList getVersionedList() {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    synchronized (pipeline){<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      return new VersionedSegmentsList(readOnlyCopy, version);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  }<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>  public VersionedSegmentsList getVersionedTail() {<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    synchronized (pipeline){<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      List&lt;ImmutableSegment&gt; segmentList = new ArrayList&lt;&gt;();<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      if(!pipeline.isEmpty()) {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>        segmentList.add(0, pipeline.getLast());<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      }<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      return new VersionedSegmentsList(segmentList, version);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    }<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  }<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  /**<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * Swaps the versioned list at the tail of the pipeline with a new segment.<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   * Swapping only if there were no changes to the suffix of the list since the version list was<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   * created.<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   * @param versionedList suffix of the pipeline to be replaced can be tail or all the pipeline<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   * @param segment new segment to replace the suffix. Can be null if the suffix just needs to be<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   *                removed.<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * @param closeSuffix whether to close the suffix (to release memory), as part of swapping it out<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   *        During index merge op this will be false and for compaction it will be true.<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   * @param updateRegionSize whether to update the region size. Update the region size,<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   *                         when the pipeline is swapped as part of in-memory-flush and<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   *                         further merge/compaction. Don't update the region size when the<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   *                         swap is result of the snapshot (flush-to-disk).<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   * @return true iff swapped tail with new segment<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="VO_VOLATILE_INCREMENT",<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      justification="Increment is done under a synchronize block so safe")<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  public boolean swap(VersionedSegmentsList versionedList, ImmutableSegment segment,<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      boolean closeSuffix, boolean updateRegionSize) {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    if (versionedList.getVersion() != version) {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      return false;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    List&lt;ImmutableSegment&gt; suffix;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    synchronized (pipeline){<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      if(versionedList.getVersion() != version) {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>        return false;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      suffix = versionedList.getStoreSegments();<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      LOG.debug("Swapping pipeline suffix; before={}, new segment={}",<a name="line.135"></a>
+<span class="sourceLineNo">136</span>          versionedList.getStoreSegments().size(), segment);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      swapSuffix(suffix, segment, closeSuffix);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      readOnlyCopy = new LinkedList&lt;&gt;(pipeline);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      version++;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    }<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    if (updateRegionSize &amp;&amp; region != null) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      // update the global memstore size counter<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      long suffixDataSize = getSegmentsKeySize(suffix);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      long newDataSize = 0;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      if(segment != null) {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>        newDataSize = segment.getDataSize();<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      }<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      long dataSizeDelta = suffixDataSize - newDataSize;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      long suffixHeapSize = getSegmentsHeapSize(suffix);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      long suffixOffHeapSize = getSegmentsOffHeapSize(suffix);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      long newHeapSize = 0;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      long newOffHeapSize = 0;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      if(segment != null) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>        newHeapSize = segment.getHeapSize();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>        newOffHeapSize = segment.getOffHeapSize();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      }<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      long offHeapSizeDelta = suffixOffHeapSize - newOffHeapSize;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      long heapSizeDelta = suffixHeapSize - newHeapSize;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      region.addMemStoreSize(-dataSizeDelta, -heapSizeDelta, -offHeapSizeDelta);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      LOG.debug("Suffix data size={}, new segment data size={}, " + "suffix heap size={},"<a name="line.160"></a>
+<span class="sourceLineNo">161</span>              + "new segment heap size={}" + "suffix off heap size={},"<a name="line.161"></a>
+<span class="sourceLineNo">162</span>              + "new segment off heap size={}", suffixDataSize, newDataSize, suffixHeapSize,<a name="line.162"></a>
+<span class="sourceLineNo">163</span>          newHeapSize, suffixOffHeapSize, newOffHeapSize);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    }<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    return true;<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>  private static long getSegmentsHeapSize(List&lt;? extends Segment&gt; list) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    long res = 0;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    for (Segment segment : list) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      res += segment.getHeapSize();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    return res;<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>  private static long getSegmentsOffHeapSize(List&lt;? extends Segment&gt; list) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    long res = 0;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    for (Segment segment : list) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      res += segment.getOffHeapSize();<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    return res;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>  private static long getSegmentsKeySize(List&lt;? extends Segment&gt; list) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    long res = 0;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    for (Segment segment : list) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      res += segment.getDataSize();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    return res;<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>   * If the caller holds the current version, go over the the pipeline and try to flatten each<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * segment. Flattening is replacing the ConcurrentSkipListMap based CellSet to CellArrayMap based.<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * Flattening of the segment that initially is not based on ConcurrentSkipListMap has no effect.<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * Return after one segment is successfully flatten.<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   *<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * @return true iff a segment was successfully flattened<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   */<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  public boolean flattenOneSegment(long requesterVersion,<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      CompactingMemStore.IndexType idxType,<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      MemStoreCompactionStrategy.Action action) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>    if(requesterVersion != version) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      LOG.warn("Segment flattening failed, because versions do not match. Requester version: "<a name="line.205"></a>
+<span class="sourceLineNo">206</span>          + requesterVersion + ", actual version: " + version);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      return false;<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>    synchronized (pipeline){<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      if(requesterVersion != version) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>        LOG.warn("Segment flattening failed, because versions do not match");<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        return false;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      }<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      int i = 0;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      for (ImmutableSegment s : pipeline) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        if ( s.canBeFlattened() ) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>          s.waitForUpdates(); // to ensure all updates preceding s in-memory flush have completed<a name="line.218"></a>
+<span class="sourceLineNo">219</span>          // size to be updated<a name="line.219"></a>
+<span class="sourceLineNo">220</span>          MemStoreSizing newMemstoreAccounting = new NonThreadSafeMemStoreSizing();<a name="line.220"></a>
+<span class="sourceLineNo">221</span>          ImmutableSegment newS = SegmentFactory.instance().createImmutableSegmentByFlattening(<a name="line.221"></a>
+<span class="sourceLineNo">222</span>              (CSLMImmutableSegment)s,idxType,newMemstoreAccounting,action);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>          replaceAtIndex(i,newS);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>          if(region != null) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>            // Update the global memstore size counter upon flattening there is no change in the<a name="line.225"></a>
+<span class="sourceLineNo">226</span>            // data size<a name="line.226"></a>
+<span class="sourceLineNo">227</span>            MemStoreSize mss = newMemstoreAccounting.getMemStoreSize();<a name="line.227"></a>
+<span class="sourceLineNo">228</span>            region.addMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.228"></a>
+<span class="sourceLineNo">229</span>          }<a name="line.229"></a>
+<span class="sourceLineNo">230</span>          LOG.debug("Compaction pipeline segment {} flattened", s);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>          return true;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>        }<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        i++;<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      }<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>    // do not update the global memstore size counter and do not increase the version,<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    // because all the cells remain in place<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    return false;<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>  public boolean isEmpty() {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    return readOnlyCopy.isEmpty();<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>  public List&lt;? extends Segment&gt; getSegments() {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    return readOnlyCopy;<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>  public long size() {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    return readOnlyCopy.size();<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>  public long getMinSequenceId() {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    long minSequenceId = Long.MAX_VALUE;<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    LinkedList&lt;? extends Segment&gt; localCopy = readOnlyCopy;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    if (!localCopy.isEmpty()) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      minSequenceId = localCopy.getLast().getMinSequenceId();<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    return minSequenceId;<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>  public MemStoreSize getTailSize() {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    LinkedList&lt;? extends Segment&gt; localCopy = readOnlyCopy;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    return localCopy.isEmpty()? new MemStoreSize(): localCopy.peekLast().getMemStoreSize();<a name="line.265"></a>
+<span class="sourceLineNo">266</span>  }<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>  public MemStoreSize getPipelineSize() {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    LinkedList&lt;? extends Segment&gt; localCopy = readOnlyCopy;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    for (Segment segment : localCopy) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      memStoreSizing.incMemStoreSize(segment.getMemStoreSize());<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    return memStoreSizing.getMemStoreSize();<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>  private void swapSuffix(List&lt;? extends Segment&gt; suffix, ImmutableSegment segment,<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      boolean closeSegmentsInSuffix) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    pipeline.removeAll(suffix);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    if(segment != null) pipeline.addLast(segment);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    // During index merge we won't be closing the segments undergoing the merge. Segment#close()<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    // will release the MSLAB chunks to pool. But in case of index merge there wont be any data copy<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    // from old MSLABs. So the new cells in new segment also refers to same chunks. In case of data<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // compaction, we would have copied the cells data from old MSLAB chunks into a new chunk<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    // created for the result segment. So we can release the chunks associated with the compacted<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    // segments.<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    if (closeSegmentsInSuffix) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      for (Segment itemInSuffix : suffix) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        itemInSuffix.close();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      }<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>  // replacing one segment in the pipeline with a new one exactly at the same index<a name="line.294"></a>
+<span class="sourceLineNo">295</span>  // need to be called only within synchronized block<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="VO_VOLATILE_INCREMENT",<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      justification="replaceAtIndex is invoked under a synchronize block so safe")<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  private void replaceAtIndex(int idx, ImmutableSegment newSegment) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    pipeline.set(idx, newSegment);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    readOnlyCopy = new LinkedList&lt;&gt;(pipeline);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    // the version increment is indeed needed, because the swap uses removeAll() method of the<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    // linked-list that compares the objects to find what to remove.<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    // The flattening changes the segment object completely (creation pattern) and so<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    // swap will not proceed correctly after concurrent flattening.<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    version++;<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 Segment getTail() {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    List&lt;? extends Segment&gt; localCopy = getSegments();<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    if(localCopy.isEmpty()) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      return null;<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    }<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    return localCopy.get(localCopy.size() - 1);<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>  private boolean addFirst(ImmutableSegment segment) {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    pipeline.addFirst(segment);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    return true;<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  }<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  // debug method<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  private boolean validateSuffixList(LinkedList&lt;ImmutableSegment&gt; suffix) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    if(suffix.isEmpty()) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      // empty suffix is always valid<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      return true;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    Iterator&lt;ImmutableSegment&gt; pipelineBackwardIterator = pipeline.descendingIterator();<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    Iterator&lt;ImmutableSegment&gt; suffixBackwardIterator = suffix.descendingIterator();<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    ImmutableSegment suffixCurrent;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    ImmutableSegment pipelineCurrent;<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    for( ; suffixBackwardIterator.hasNext(); ) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      if(!pipelineBackwardIterator.hasNext()) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>        // a suffix longer than pipeline is invalid<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        return false;<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      }<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      suffixCurrent = suffixBackwardIterator.next();<a name="line.336"></a>
+<span class="sourceLineNo">337</span>      pipelineCurrent = pipelineBackwardIterator.next();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      if(suffixCurrent != pipelineCurrent) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>        // non-matching suffix<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        return false;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>      }<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    }<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    // suffix matches pipeline suffix<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    return true;<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>}<a name="line.347"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html
index aa40786..cd6ea31 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html
@@ -71,7 +71,7 @@
 <span class="sourceLineNo">063</span>   * Default constructor. Used for tests.<a name="line.63"></a>
 <span class="sourceLineNo">064</span>   */<a name="line.64"></a>
 <span class="sourceLineNo">065</span>  public DefaultMemStore() {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    this(HBaseConfiguration.create(), CellComparator.getInstance());<a name="line.66"></a>
+<span class="sourceLineNo">066</span>    this(HBaseConfiguration.create(), CellComparator.getInstance(), null);<a name="line.66"></a>
 <span class="sourceLineNo">067</span>  }<a name="line.67"></a>
 <span class="sourceLineNo">068</span><a name="line.68"></a>
 <span class="sourceLineNo">069</span>  /**<a name="line.69"></a>
@@ -79,152 +79,169 @@
 <span class="sourceLineNo">071</span>   * @param c Comparator<a name="line.71"></a>
 <span class="sourceLineNo">072</span>   */<a name="line.72"></a>
 <span class="sourceLineNo">073</span>  public DefaultMemStore(final Configuration conf, final CellComparator c) {<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    super(conf, c);<a name="line.74"></a>
+<span class="sourceLineNo">074</span>    super(conf, c, null);<a name="line.74"></a>
 <span class="sourceLineNo">075</span>  }<a name="line.75"></a>
 <span class="sourceLineNo">076</span><a name="line.76"></a>
 <span class="sourceLineNo">077</span>  /**<a name="line.77"></a>
-<span class="sourceLineNo">078</span>   * Creates a snapshot of the current memstore.<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   * Snapshot must be cleared by call to {@link #clearSnapshot(long)}<a name="line.79"></a>
+<span class="sourceLineNo">078</span>   * Constructor.<a name="line.78"></a>
+<span class="sourceLineNo">079</span>   * @param c Comparator<a name="line.79"></a>
 <span class="sourceLineNo">080</span>   */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  @Override<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  public MemStoreSnapshot snapshot() {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    // If snapshot currently has entries, then flusher failed or didn't call<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    // cleanup.  Log a warning.<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    if (!this.snapshot.isEmpty()) {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      LOG.warn("Snapshot called again without clearing previous. " +<a name="line.86"></a>
-<span class="sourceLineNo">087</span>          "Doing nothing. Another ongoing flush or did we fail last attempt?");<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    } else {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      this.snapshotId = EnvironmentEdgeManager.currentTime();<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      if (!getActive().isEmpty()) {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>        ImmutableSegment immutableSegment = SegmentFactory.instance().<a name="line.91"></a>
-<span class="sourceLineNo">092</span>            createImmutableSegment(getActive());<a name="line.92"></a>
-<span class="sourceLineNo">093</span>        this.snapshot = immutableSegment;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        resetActive();<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    }<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    return new MemStoreSnapshot(this.snapshotId, this.snapshot);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>  @Override<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  public MemStoreSize getFlushableSize() {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    MemStoreSize mss = getSnapshotSize();<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    return mss.getDataSize() &gt; 0? mss: getActive().getMemStoreSize();<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  }<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>  @Override<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  protected long keySize() {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    return getActive().getDataSize();<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  }<a name="line.109"></a>
-<span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>  @Override<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  protected long heapSize() {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    return getActive().getHeapSize();<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  }<a name="line.114"></a>
-<span class="sourceLineNo">115</span><a name="line.115"></a>
-<span class="sourceLineNo">116</span>  @Override<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  /*<a name="line.117"></a>
-<span class="sourceLineNo">118</span>   * Scanners are ordered from 0 (oldest) to newest in increasing order.<a name="line.118"></a>
-<span class="sourceLineNo">119</span>   */<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  public List&lt;KeyValueScanner&gt; getScanners(long readPt) throws IOException {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    List&lt;KeyValueScanner&gt; list = new ArrayList&lt;&gt;();<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    addToScanners(getActive(), readPt, list);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    addToScanners(snapshot.getAllSegments(), readPt, list);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    return list;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  }<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>  @Override<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  protected List&lt;Segment&gt; getSegments() throws IOException {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    List&lt;Segment&gt; list = new ArrayList&lt;&gt;(2);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    list.add(getActive());<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    list.add(snapshot);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    return list;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  }<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  /**<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * @param cell Find the row that comes after this one.  If null, we return the<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * first.<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * @return Next row or null if none found.<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   */<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  Cell getNextRow(final Cell cell) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    return getLowest(<a name="line.141"></a>
-<span class="sourceLineNo">142</span>        getNextRow(cell, this.getActive().getCellSet()),<a name="line.142"></a>
-<span class="sourceLineNo">143</span>        getNextRow(cell, this.snapshot.getCellSet()));<a name="line.143"></a>
-<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>  @Override public void updateLowestUnflushedSequenceIdInWAL(boolean onlyIfMoreRecent) {<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>  @Override protected boolean preUpdate(MutableSegment currentActive, Cell cell,<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      MemStoreSizing memstoreSizing) {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    return true;<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 protected void postUpdate(MutableSegment currentActive) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    return;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  }<a name="line.156"></a>
-<span class="sourceLineNo">157</span><a name="line.157"></a>
-<span class="sourceLineNo">158</span>  @Override protected boolean sizeAddedPreOperation() {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    return false;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>  @Override<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  public MemStoreSize size() {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    return getActive().getMemStoreSize();<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>  @Override<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  public long preFlushSeqIDEstimation() {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    return HConstants.NO_SEQNUM;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>  @Override public boolean isSloppy() {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    return false;<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>   * Code to help figure if our approximation of object heap sizes is close<a name="line.177"></a>
-<span class="sourceLineNo">178</span>   * enough.  See hbase-900.  Fills memstores then waits so user can heap<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   * dump and bring up resultant hprof in something like jprofiler which<a name="line.179"></a>
-<span class="sourceLineNo">180</span>   * allows you get 'deep size' on objects.<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   * @param args main args<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   */<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  public static void main(String [] args) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean();<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    LOG.info("vmName=" + runtime.getVmName() + ", vmVendor=" +<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      runtime.getVmVendor() + ", vmVersion=" + runtime.getVmVersion());<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    LOG.info("vmInputArguments=" + runtime.getInputArguments());<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    DefaultMemStore memstore1 = new DefaultMemStore();<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    // TODO: x32 vs x64<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    final int count = 10000;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    byte [] fam = Bytes.toBytes("col");<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    byte [] qf = Bytes.toBytes("umn");<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    byte [] empty = new byte[0];<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    for (int i = 0; i &lt; count; i++) {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      // Give each its own ts<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      memstore1.add(new KeyValue(Bytes.toBytes(i), fam, qf, i, empty), memStoreSizing);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    LOG.info("memstore1 estimated size={}", memStoreSizing.getMemStoreSize().getDataSize() +<a name="line.199"></a>
-<span class="sourceLineNo">200</span>        memStoreSizing.getMemStoreSize().getHeapSize());<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    for (int i = 0; i &lt; count; i++) {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      memstore1.add(new KeyValue(Bytes.toBytes(i), fam, qf, i, empty), memStoreSizing);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    LOG.info("memstore1 estimated size (2nd loading of same data)={}",<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        memStoreSizing.getMemStoreSize().getDataSize() +<a name="line.205"></a>
-<span class="sourceLineNo">206</span>            memStoreSizing.getMemStoreSize().getHeapSize());<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    // Make a variably sized memstore.<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    DefaultMemStore memstore2 = new DefaultMemStore();<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    for (int i = 0; i &lt; count; i++) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      memstore2.add(new KeyValue(Bytes.toBytes(i), fam, qf, i, new byte[i]), memStoreSizing);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    LOG.info("memstore2 estimated size={}", memStoreSizing.getMemStoreSize().getDataSize() +<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        memStoreSizing.getMemStoreSize().getHeapSize());<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    final int seconds = 30;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    LOG.info("Waiting " + seconds + " seconds while heap dump is taken");<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    LOG.info("Exiting.");<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
-<span class="sourceLineNo">219</span>}<a name="line.219"></a>
+<span class="sourceLineNo">081</span>  public DefaultMemStore(final Configuration conf, final CellComparator c,<a name="line.81"></a>
+<span class="sourceLineNo">082</span>      final RegionServicesForStores regionServices) {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    super(conf, c, regionServices);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  }<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>  /**<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   * Creates a snapshot of the current memstore.<a name="line.87"></a>
+<span class="sourceLineNo">088</span>   * Snapshot must be cleared by call to {@link #clearSnapshot(long)}<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   */<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  @Override<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public MemStoreSnapshot snapshot() {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    // If snapshot currently has entries, then flusher failed or didn't call<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    // cleanup.  Log a warning.<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    if (!this.snapshot.isEmpty()) {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      LOG.warn("Snapshot called again without clearing previous. " +<a name="line.95"></a>
+<span class="sourceLineNo">096</span>          "Doing nothing. Another ongoing flush or did we fail last attempt?");<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    } else {<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      this.snapshotId = EnvironmentEdgeManager.currentTime();<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      if (!getActive().isEmpty()) {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>        // Record the ImmutableSegment' heap overhead when initialing<a name="line.100"></a>
+<span class="sourceLineNo">101</span>        MemStoreSizing memstoreAccounting = new NonThreadSafeMemStoreSizing();<a name="line.101"></a>
+<span class="sourceLineNo">102</span>        ImmutableSegment immutableSegment = SegmentFactory.instance().<a name="line.102"></a>
+<span class="sourceLineNo">103</span>            createImmutableSegment(getActive(), memstoreAccounting);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>        // regionServices can be null when testing<a name="line.104"></a>
+<span class="sourceLineNo">105</span>        if (regionServices != null) {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>          regionServices.addMemStoreSize(memstoreAccounting.getDataSize(),<a name="line.106"></a>
+<span class="sourceLineNo">107</span>              memstoreAccounting.getHeapSize(),<a name="line.107"></a>
+<span class="sourceLineNo">108</span>              memstoreAccounting.getOffHeapSize());<a name="line.108"></a>
+<span class="sourceLineNo">109</span>        }<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        this.snapshot = immutableSegment;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>        resetActive();<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      }<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    }<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    return new MemStoreSnapshot(this.snapshotId, this.snapshot);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  }<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>  @Override<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  public MemStoreSize getFlushableSize() {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    MemStoreSize mss = getSnapshotSize();<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    return mss.getDataSize() &gt; 0? mss: getActive().getMemStoreSize();<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
+<span class="sourceLineNo">122</span><a name="line.122"></a>
+<span class="sourceLineNo">123</span>  @Override<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  protected long keySize() {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    return getActive().getDataSize();<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>  @Override<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  protected long heapSize() {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    return getActive().getHeapSize();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  }<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  @Override<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  /*<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   * Scanners are ordered from 0 (oldest) to newest in increasing order.<a name="line.135"></a>
+<span class="sourceLineNo">136</span>   */<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  public List&lt;KeyValueScanner&gt; getScanners(long readPt) throws IOException {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    List&lt;KeyValueScanner&gt; list = new ArrayList&lt;&gt;();<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    addToScanners(getActive(), readPt, list);<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    addToScanners(snapshot.getAllSegments(), readPt, list);<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    return list;<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>  @Override<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  protected List&lt;Segment&gt; getSegments() throws IOException {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    List&lt;Segment&gt; list = new ArrayList&lt;&gt;(2);<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    list.add(getActive());<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    list.add(snapshot);<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    return list;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  /**<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * @param cell Find the row that comes after this one.  If null, we return the<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * first.<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   * @return Next row or null if none found.<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   */<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  Cell getNextRow(final Cell cell) {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    return getLowest(<a name="line.158"></a>
+<span class="sourceLineNo">159</span>        getNextRow(cell, this.getActive().getCellSet()),<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        getNextRow(cell, this.snapshot.getCellSet()));<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>  @Override public void updateLowestUnflushedSequenceIdInWAL(boolean onlyIfMoreRecent) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>  }<a name="line.164"></a>
+<span class="sourceLineNo">165</span><a name="line.165"></a>
+<span class="sourceLineNo">166</span>  @Override protected boolean preUpdate(MutableSegment currentActive, Cell cell,<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      MemStoreSizing memstoreSizing) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    return true;<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>  @Override protected void postUpdate(MutableSegment currentActive) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    return;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  }<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>  @Override protected boolean sizeAddedPreOperation() {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    return false;<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>  @Override<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  public MemStoreSize size() {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    return getActive().getMemStoreSize();<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>  @Override<a name="line.184"></a>
+<span class="sourceLineNo">185</span>  public long preFlushSeqIDEstimation() {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    return HConstants.NO_SEQNUM;<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>  @Override public boolean isSloppy() {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    return false;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>  /**<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * Code to help figure if our approximation of object heap sizes is close<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * enough.  See hbase-900.  Fills memstores then waits so user can heap<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * dump and bring up resultant hprof in something like jprofiler which<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * allows you get 'deep size' on objects.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * @param args main args<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   */<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  public static void main(String [] args) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean();<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    LOG.info("vmName=" + runtime.getVmName() + ", vmVendor=" +<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      runtime.getVmVendor() + ", vmVersion=" + runtime.getVmVersion());<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    LOG.info("vmInputArguments=" + runtime.getInputArguments());<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    DefaultMemStore memstore1 = new DefaultMemStore();<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    // TODO: x32 vs x64<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    final int count = 10000;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    byte [] fam = Bytes.toBytes("col");<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    byte [] qf = Bytes.toBytes("umn");<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    byte [] empty = new byte[0];<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    for (int i = 0; i &lt; count; i++) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      // Give each its own ts<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      memstore1.add(new KeyValue(Bytes.toBytes(i), fam, qf, i, empty), memStoreSizing);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    LOG.info("memstore1 estimated size={}", memStoreSizing.getMemStoreSize().getDataSize() +<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        memStoreSizing.getMemStoreSize().getHeapSize());<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    for (int i = 0; i &lt; count; i++) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      memstore1.add(new KeyValue(Bytes.toBytes(i), fam, qf, i, empty), memStoreSizing);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    LOG.info("memstore1 estimated size (2nd loading of same data)={}",<a name="line.221"></a>
+<span class="sourceLineNo">222</span>        memStoreSizing.getMemStoreSize().getDataSize() +<a name="line.222"></a>
+<span class="sourceLineNo">223</span>            memStoreSizing.getMemStoreSize().getHeapSize());<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    // Make a variably sized memstore.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    DefaultMemStore memstore2 = new DefaultMemStore();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    for (int i = 0; i &lt; count; i++) {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      memstore2.add(new KeyValue(Bytes.toBytes(i), fam, qf, i, new byte[i]), memStoreSizing);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    }<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    LOG.info("memstore2 estimated size={}", memStoreSizing.getMemStoreSize().getDataSize() +<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        memStoreSizing.getMemStoreSize().getHeapSize());<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    final int seconds = 30;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    LOG.info("Waiting " + seconds + " seconds while heap dump is taken");<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    LOG.info("Exiting.");<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>
 
 
 


[09/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.BlockCompactionsInPrepRegion.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.BlockCompactionsInPrepRegion.html b/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.BlockCompactionsInPrepRegion.html
index 501420c..ee94889 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.BlockCompactionsInPrepRegion.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.BlockCompactionsInPrepRegion.html
@@ -233,7 +233,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/TestIOFencing.CompactionBlo
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegion</h3>
-<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkReadOnly, checkReadsEnabled, checkSplit, checkTimestamps, close, close, closeRegionOperation, closeRegionOperation, compact, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, delete, deregisterChildren, equals, execService, flush, flushcache, get, get, get, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliestFlushTimeForAllStores, getEffectiveDurability, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLockedRows, getMaxFlushedSeqId, getMaxStoreSeqId, getMemStoreDataSize,
  getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNextSequenceId, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenSeqNum, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateHStore, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLoadingCfsOnDemandDefault, isMergeable, isReadO
 nly, isSplittable, mutateRow, mutateRowsWithLocks, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, refreshStoreFiles, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, reportCompactionRequestEnd, reportCompactionRequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rowIsInRange, rowIsInRange, setClosing, setCoprocessorHost, setReadsEnabled, setTimeoutForWriteLock, startRegionOperation, startRegionOperation, toString, unblockUpdates, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion, writeRegionOpenMarker</code></li>
+<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkReadOnly, checkReadsEnabled, checkSplit, checkTimestamps, close, close, closeRegionOperation, closeRegionOperation, compact, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, delete, deregisterChildren, dropMemStoreContents, equals, execService, flush, flushcache, get, get, get, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliestFlushTimeForAllStores, getEffectiveDurability, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLockedRows, getMaxFlushedSeqId, getMaxStoreSeqId
 , getMemStoreDataSize, getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNextSequenceId, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenSeqNum, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateHStore, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLoadingCfsOnDemandDefault
 , isMergeable, isReadOnly, isSplittable, mutateRow, mutateRowsWithLocks, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, refreshStoreFiles, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, reportCompactionRequestEnd, reportCompactionRequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rowIsInRange, rowIsInRange, setClosing, setCoprocessorHost, setReadsEnabled, setTimeoutForWriteLock, startRegionOperation, startRegionOperation, toString, unblockUpdates, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion, writeRegionOpenMarker</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/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.CompactionBlockerRegion.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.CompactionBlockerRegion.html b/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.CompactionBlockerRegion.html
index e2ab629..abb9e50 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.CompactionBlockerRegion.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.CompactionBlockerRegion.html
@@ -260,7 +260,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegion</h3>
-<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkReadOnly, checkReadsEnabled, checkSplit, checkTimestamps, close, close, closeRegionOperation, closeRegionOperation, compact, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, delete, deregisterChildren, doRegionCompactionPrep, equals, execService, flush, flushcache, get, get, get, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliestFlushTimeForAllStores, getEffectiveDurability, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLockedRows, getMaxFlushedSeqId, getMaxStoreSeq
 Id, getMemStoreDataSize, getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNextSequenceId, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenSeqNum, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateHStore, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLoadingCfsOnDemandDefau
 lt, isMergeable, isReadOnly, isSplittable, mutateRow, mutateRowsWithLocks, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, refreshStoreFiles, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, reportCompactionRequestEnd, reportCompactionRequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rowIsInRange, rowIsInRange, setClosing, setCoprocessorHost, setReadsEnabled, setTimeoutForWriteLock, startRegionOperation, startRegionOperation, toString, unblockUpdates, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion, writeRegionOpenMarker</code></li>
+<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkReadOnly, checkReadsEnabled, checkSplit, checkTimestamps, close, close, closeRegionOperation, closeRegionOperation, compact, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, delete, deregisterChildren, doRegionCompactionPrep, dropMemStoreContents, equals, execService, flush, flushcache, get, get, get, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliestFlushTimeForAllStores, getEffectiveDurability, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLockedRows, getMaxFlushe
 dSeqId, getMaxStoreSeqId, getMemStoreDataSize, getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNextSequenceId, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenSeqNum, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateHStore, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isL
 oadingCfsOnDemandDefault, isMergeable, isReadOnly, isSplittable, mutateRow, mutateRowsWithLocks, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, refreshStoreFiles, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, reportCompactionRequestEnd, reportCompactionRequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rowIsInRange, rowIsInRange, setClosing, setCoprocessorHost, setReadsEnabled, setTimeoutForWriteLock, startRegionOperation, startRegionOperation, toString, unblockUpdates, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion, writeRegionOpenMarker</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">


[34/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html
index bf6738e..a62d84e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html
@@ -74,569 +74,568 @@
 <span class="sourceLineNo">066</span><a name="line.66"></a>
 <span class="sourceLineNo">067</span>  private static final Logger LOG = LoggerFactory.getLogger(CompactingMemStore.class);<a name="line.67"></a>
 <span class="sourceLineNo">068</span>  private HStore store;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private RegionServicesForStores regionServices;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private CompactionPipeline pipeline;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  protected MemStoreCompactor compactor;<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private long inmemoryFlushSize;       // the threshold on active size for in-memory flush<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private final AtomicBoolean inMemoryCompactionInProgress = new AtomicBoolean(false);<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  // inWalReplay is true while we are synchronously replaying the edits from WAL<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  private boolean inWalReplay = false;<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>  @VisibleForTesting<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  protected final AtomicBoolean allowCompaction = new AtomicBoolean(true);<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  private boolean compositeSnapshot = true;<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  /**<a name="line.83"></a>
-<span class="sourceLineNo">084</span>   * Types of indexes (part of immutable segments) to be used after flattening,<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   * compaction, or merge are applied.<a name="line.85"></a>
-<span class="sourceLineNo">086</span>   */<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  public enum IndexType {<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    CSLM_MAP,   // ConcurrentSkipLisMap<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    ARRAY_MAP,  // CellArrayMap<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    CHUNK_MAP   // CellChunkMap<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  }<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private IndexType indexType = IndexType.ARRAY_MAP;  // default implementation<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  public static final long DEEP_OVERHEAD = ClassSize.align( AbstractMemStore.DEEP_OVERHEAD<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      + 7 * ClassSize.REFERENCE     // Store, RegionServicesForStores, CompactionPipeline,<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      // MemStoreCompactor, inMemoryCompactionInProgress,<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      // allowCompaction, indexType<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      + Bytes.SIZEOF_LONG           // inmemoryFlushSize<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      + 2 * Bytes.SIZEOF_BOOLEAN    // compositeSnapshot and inWalReplay<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      + 2 * ClassSize.ATOMIC_BOOLEAN// inMemoryCompactionInProgress and allowCompaction<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      + CompactionPipeline.DEEP_OVERHEAD + MemStoreCompactor.DEEP_OVERHEAD);<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  public CompactingMemStore(Configuration conf, CellComparator c,<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      HStore store, RegionServicesForStores regionServices,<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      MemoryCompactionPolicy compactionPolicy) throws IOException {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    super(conf, c);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    this.store = store;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    this.regionServices = regionServices;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    this.pipeline = new CompactionPipeline(getRegionServices());<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    this.compactor = createMemStoreCompactor(compactionPolicy);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    if (conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      // if user requested to work with MSLABs (whether on- or off-heap), then the<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      // immutable segments are going to use CellChunkMap as their index<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      indexType = IndexType.CHUNK_MAP;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    } else {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      indexType = IndexType.ARRAY_MAP;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    }<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    // initialization of the flush size should happen after initialization of the index type<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    // so do not transfer the following method<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    initInmemoryFlushSize(conf);<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    LOG.info("Store={}, in-memory flush size threshold={}, immutable segments index type={}, " +<a name="line.122"></a>
-<span class="sourceLineNo">123</span>            "compactor={}", this.store.getColumnFamilyName(),<a name="line.123"></a>
-<span class="sourceLineNo">124</span>        StringUtils.byteDesc(this.inmemoryFlushSize), this.indexType,<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        (this.compactor == null? "NULL": this.compactor.toString()));<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>  @VisibleForTesting<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  protected MemStoreCompactor createMemStoreCompactor(MemoryCompactionPolicy compactionPolicy)<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      throws IllegalArgumentIOException {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    return new MemStoreCompactor(this, compactionPolicy);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  private void initInmemoryFlushSize(Configuration conf) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    double factor = 0;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    long memstoreFlushSize = getRegionServices().getMemStoreFlushSize();<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    int numStores = getRegionServices().getNumStores();<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    if (numStores &lt;= 1) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      // Family number might also be zero in some of our unit test case<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      numStores = 1;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    }<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    factor = conf.getDouble(IN_MEMORY_FLUSH_THRESHOLD_FACTOR_KEY, 0.0);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    if(factor != 0.0) {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      // multiply by a factor (the same factor for all index types)<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      inmemoryFlushSize = (long) (factor * memstoreFlushSize) / numStores;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    } else {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      inmemoryFlushSize = IN_MEMORY_FLUSH_MULTIPLIER *<a name="line.147"></a>
-<span class="sourceLineNo">148</span>          conf.getLong(MemStoreLAB.CHUNK_SIZE_KEY, MemStoreLAB.CHUNK_SIZE_DEFAULT);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      inmemoryFlushSize -= ChunkCreator.SIZEOF_CHUNK_HEADER;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  }<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  /**<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * @return Total memory occupied by this MemStore. This won't include any size occupied by the<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   *         snapshot. We assume the snapshot will get cleared soon. This is not thread safe and<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   *         the memstore may be changed while computing its size. It is the responsibility of the<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   *         caller to make sure this doesn't happen.<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 MemStoreSize size() {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    MemStoreSizing memstoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    memstoreSizing.incMemStoreSize(getActive().getMemStoreSize());<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    for (Segment item : pipeline.getSegments()) {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      memstoreSizing.incMemStoreSize(item.getMemStoreSize());<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    return memstoreSizing.getMemStoreSize();<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>   * This method is called before the flush is executed.<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * @return an estimation (lower bound) of the unflushed sequence id in memstore after the flush<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * is executed. if memstore will be cleared returns {@code HConstants.NO_SEQNUM}.<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   */<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  public long preFlushSeqIDEstimation() {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    if(compositeSnapshot) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      return HConstants.NO_SEQNUM;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    Segment segment = getLastSegment();<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    if(segment == null) {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      return HConstants.NO_SEQNUM;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    }<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    return segment.getMinSequenceId();<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>  @Override<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public boolean isSloppy() {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    return true;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>  /**<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * Push the current active memstore segment into the pipeline<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * and create a snapshot of the tail of current compaction pipeline<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * Snapshot must be cleared by call to {@link #clearSnapshot}.<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * {@link #clearSnapshot(long)}.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   * @return {@link MemStoreSnapshot}<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   */<a name="line.197"></a>
-<span class="sourceLineNo">198</span>  @Override<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  public MemStoreSnapshot snapshot() {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    // If snapshot currently has entries, then flusher failed or didn't call<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    // cleanup.  Log a warning.<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    if (!this.snapshot.isEmpty()) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      LOG.warn("Snapshot called again without clearing previous. " +<a name="line.203"></a>
-<span class="sourceLineNo">204</span>          "Doing nothing. Another ongoing flush or did we fail last attempt?");<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    } else {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      LOG.debug("FLUSHING TO DISK {}, store={}",<a name="line.206"></a>
-<span class="sourceLineNo">207</span>          getRegionServices().getRegionInfo().getEncodedName(), getFamilyName());<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      stopCompaction();<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      // region level lock ensures pushing active to pipeline is done in isolation<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      // no concurrent update operations trying to flush the active segment<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      pushActiveToPipeline(getActive());<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      snapshotId = EnvironmentEdgeManager.currentTime();<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      // in both cases whatever is pushed to snapshot is cleared from the pipeline<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      if (compositeSnapshot) {<a name="line.214"></a>
-<span class="sourceLineNo">215</span>        pushPipelineToSnapshot();<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      } else {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        pushTailToSnapshot();<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      }<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      compactor.resetStats();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    return new MemStoreSnapshot(snapshotId, this.snapshot);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  @Override<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  public MemStoreSize getFlushableSize() {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    MemStoreSize mss = getSnapshotSize();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    if (mss.getDataSize() == 0) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      // if snapshot is empty the tail of the pipeline (or everything in the memstore) is flushed<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      if (compositeSnapshot) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing(pipeline.getPipelineSize());<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        MutableSegment currActive = getActive();<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        if(!currActive.isEmpty()) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>          memStoreSizing.incMemStoreSize(currActive.getMemStoreSize());<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        mss = memStoreSizing.getMemStoreSize();<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      } else {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        mss = pipeline.getTailSize();<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>    return mss.getDataSize() &gt; 0? mss: getActive().getMemStoreSize();<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  }<a name="line.241"></a>
+<span class="sourceLineNo">069</span>  private CompactionPipeline pipeline;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  protected MemStoreCompactor compactor;<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private long inmemoryFlushSize;       // the threshold on active size for in-memory flush<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private final AtomicBoolean inMemoryCompactionInProgress = new AtomicBoolean(false);<a name="line.73"></a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span>  // inWalReplay is true while we are synchronously replaying the edits from WAL<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private boolean inWalReplay = false;<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>  @VisibleForTesting<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  protected final AtomicBoolean allowCompaction = new AtomicBoolean(true);<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  private boolean compositeSnapshot = true;<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  /**<a name="line.82"></a>
+<span class="sourceLineNo">083</span>   * Types of indexes (part of immutable segments) to be used after flattening,<a name="line.83"></a>
+<span class="sourceLineNo">084</span>   * compaction, or merge are applied.<a name="line.84"></a>
+<span class="sourceLineNo">085</span>   */<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  public enum IndexType {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    CSLM_MAP,   // ConcurrentSkipLisMap<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    ARRAY_MAP,  // CellArrayMap<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    CHUNK_MAP   // CellChunkMap<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  }<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private IndexType indexType = IndexType.ARRAY_MAP;  // default implementation<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>  public static final long DEEP_OVERHEAD = ClassSize.align( AbstractMemStore.DEEP_OVERHEAD<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      + 6 * ClassSize.REFERENCE     // Store, CompactionPipeline,<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      // MemStoreCompactor, inMemoryCompactionInProgress,<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      // allowCompaction, indexType<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      + Bytes.SIZEOF_LONG           // inmemoryFlushSize<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      + 2 * Bytes.SIZEOF_BOOLEAN    // compositeSnapshot and inWalReplay<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      + 2 * ClassSize.ATOMIC_BOOLEAN// inMemoryCompactionInProgress and allowCompaction<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      + CompactionPipeline.DEEP_OVERHEAD + MemStoreCompactor.DEEP_OVERHEAD);<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>  public CompactingMemStore(Configuration conf, CellComparator c,<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      HStore store, RegionServicesForStores regionServices,<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      MemoryCompactionPolicy compactionPolicy) throws IOException {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    super(conf, c, regionServices);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    this.store = store;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    this.regionServices = regionServices;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    this.pipeline = new CompactionPipeline(getRegionServices());<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    this.compactor = createMemStoreCompactor(compactionPolicy);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    if (conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      // if user requested to work with MSLABs (whether on- or off-heap), then the<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      // immutable segments are going to use CellChunkMap as their index<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      indexType = IndexType.CHUNK_MAP;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    } else {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      indexType = IndexType.ARRAY_MAP;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    }<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    // initialization of the flush size should happen after initialization of the index type<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    // so do not transfer the following method<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    initInmemoryFlushSize(conf);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    LOG.info("Store={}, in-memory flush size threshold={}, immutable segments index type={}, " +<a name="line.121"></a>
+<span class="sourceLineNo">122</span>            "compactor={}", this.store.getColumnFamilyName(),<a name="line.122"></a>
+<span class="sourceLineNo">123</span>        StringUtils.byteDesc(this.inmemoryFlushSize), this.indexType,<a name="line.123"></a>
+<span class="sourceLineNo">124</span>        (this.compactor == null? "NULL": this.compactor.toString()));<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  }<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>  protected MemStoreCompactor createMemStoreCompactor(MemoryCompactionPolicy compactionPolicy)<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      throws IllegalArgumentIOException {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    return new MemStoreCompactor(this, compactionPolicy);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  }<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private void initInmemoryFlushSize(Configuration conf) {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    double factor = 0;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    long memstoreFlushSize = getRegionServices().getMemStoreFlushSize();<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    int numStores = getRegionServices().getNumStores();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    if (numStores &lt;= 1) {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      // Family number might also be zero in some of our unit test case<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      numStores = 1;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    }<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    factor = conf.getDouble(IN_MEMORY_FLUSH_THRESHOLD_FACTOR_KEY, 0.0);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    if(factor != 0.0) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      // multiply by a factor (the same factor for all index types)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      inmemoryFlushSize = (long) (factor * memstoreFlushSize) / numStores;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    } else {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      inmemoryFlushSize = IN_MEMORY_FLUSH_MULTIPLIER *<a name="line.146"></a>
+<span class="sourceLineNo">147</span>          conf.getLong(MemStoreLAB.CHUNK_SIZE_KEY, MemStoreLAB.CHUNK_SIZE_DEFAULT);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      inmemoryFlushSize -= ChunkCreator.SIZEOF_CHUNK_HEADER;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    }<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  /**<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * @return Total memory occupied by this MemStore. This won't include any size occupied by the<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   *         snapshot. We assume the snapshot will get cleared soon. This is not thread safe and<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   *         the memstore may be changed while computing its size. It is the responsibility of the<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   *         caller to make sure this doesn't happen.<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   */<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  @Override<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public MemStoreSize size() {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    MemStoreSizing memstoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    memstoreSizing.incMemStoreSize(getActive().getMemStoreSize());<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    for (Segment item : pipeline.getSegments()) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      memstoreSizing.incMemStoreSize(item.getMemStoreSize());<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    }<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    return memstoreSizing.getMemStoreSize();<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  }<a name="line.166"></a>
+<span class="sourceLineNo">167</span><a name="line.167"></a>
+<span class="sourceLineNo">168</span>  /**<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * This method is called before the flush is executed.<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * @return an estimation (lower bound) of the unflushed sequence id in memstore after the flush<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * is executed. if memstore will be cleared returns {@code HConstants.NO_SEQNUM}.<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   */<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  @Override<a name="line.173"></a>
+<span class="sourceLineNo">174</span>  public long preFlushSeqIDEstimation() {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    if(compositeSnapshot) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      return HConstants.NO_SEQNUM;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    Segment segment = getLastSegment();<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    if(segment == null) {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      return HConstants.NO_SEQNUM;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    return segment.getMinSequenceId();<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>  @Override<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public boolean isSloppy() {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    return true;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>  }<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>  /**<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * Push the current active memstore segment into the pipeline<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * and create a snapshot of the tail of current compaction pipeline<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * Snapshot must be cleared by call to {@link #clearSnapshot}.<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * {@link #clearSnapshot(long)}.<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * @return {@link MemStoreSnapshot}<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  @Override<a name="line.197"></a>
+<span class="sourceLineNo">198</span>  public MemStoreSnapshot snapshot() {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    // If snapshot currently has entries, then flusher failed or didn't call<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    // cleanup.  Log a warning.<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    if (!this.snapshot.isEmpty()) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      LOG.warn("Snapshot called again without clearing previous. " +<a name="line.202"></a>
+<span class="sourceLineNo">203</span>          "Doing nothing. Another ongoing flush or did we fail last attempt?");<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    } else {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      LOG.debug("FLUSHING TO DISK {}, store={}",<a name="line.205"></a>
+<span class="sourceLineNo">206</span>          getRegionServices().getRegionInfo().getEncodedName(), getFamilyName());<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      stopCompaction();<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      // region level lock ensures pushing active to pipeline is done in isolation<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      // no concurrent update operations trying to flush the active segment<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      pushActiveToPipeline(getActive());<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      snapshotId = EnvironmentEdgeManager.currentTime();<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      // in both cases whatever is pushed to snapshot is cleared from the pipeline<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      if (compositeSnapshot) {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>        pushPipelineToSnapshot();<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      } else {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>        pushTailToSnapshot();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      compactor.resetStats();<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    return new MemStoreSnapshot(snapshotId, this.snapshot);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  @Override<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  public MemStoreSize getFlushableSize() {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    MemStoreSize mss = getSnapshotSize();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    if (mss.getDataSize() == 0) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      // if snapshot is empty the tail of the pipeline (or everything in the memstore) is flushed<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      if (compositeSnapshot) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing(pipeline.getPipelineSize());<a name="line.229"></a>
+<span class="sourceLineNo">230</span>        MutableSegment currActive = getActive();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        if(!currActive.isEmpty()) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>          memStoreSizing.incMemStoreSize(currActive.getMemStoreSize());<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        }<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        mss = memStoreSizing.getMemStoreSize();<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      } else {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        mss = pipeline.getTailSize();<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      }<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    }<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    return mss.getDataSize() &gt; 0? mss: getActive().getMemStoreSize();<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
 <span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span><a name="line.243"></a>
-<span class="sourceLineNo">244</span>  public void setInMemoryCompactionCompleted() {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    inMemoryCompactionInProgress.set(false);<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>  protected boolean setInMemoryCompactionFlag() {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    return inMemoryCompactionInProgress.compareAndSet(false, true);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  @Override<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  protected long keySize() {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    // Need to consider dataSize/keySize of all segments in pipeline and active<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    long keySize = getActive().getDataSize();<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    for (Segment segment : this.pipeline.getSegments()) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      keySize += segment.getDataSize();<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    }<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    return keySize;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>  @Override<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  protected long heapSize() {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    // Need to consider heapOverhead of all segments in pipeline and active<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    long h = getActive().getHeapSize();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    for (Segment segment : this.pipeline.getSegments()) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      h += segment.getHeapSize();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    }<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    return h;<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>  @Override<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  public void updateLowestUnflushedSequenceIdInWAL(boolean onlyIfGreater) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    long minSequenceId = pipeline.getMinSequenceId();<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    if(minSequenceId != Long.MAX_VALUE) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      byte[] encodedRegionName = getRegionServices().getRegionInfo().getEncodedNameAsBytes();<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      byte[] familyName = getFamilyNameInBytes();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      WAL WAL = getRegionServices().getWAL();<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      if (WAL != null) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        WAL.updateStore(encodedRegionName, familyName, minSequenceId, onlyIfGreater);<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>  }<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>   * This message intends to inform the MemStore that next coming updates<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * are going to be part of the replaying edits from WAL<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   */<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  @Override<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  public void startReplayingFromWAL() {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    inWalReplay = true;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>  /**<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * This message intends to inform the MemStore that the replaying edits from WAL<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   * are done<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 void stopReplayingFromWAL() {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    inWalReplay = false;<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>   * Issue any synchronization and test needed before applying the update<a name="line.304"></a>
-<span class="sourceLineNo">305</span>   * For compacting memstore this means checking the update can increase the size without<a name="line.305"></a>
-<span class="sourceLineNo">306</span>   * overflow<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   * @param currentActive the segment to be updated<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * @param cell the cell to be added<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * @param memstoreSizing object to accumulate region size changes<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * @return true iff can proceed with applying the update<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   */<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  @Override protected boolean preUpdate(MutableSegment currentActive, Cell cell,<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      MemStoreSizing memstoreSizing) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    if(currentActive.sharedLock()) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      if (checkAndAddToActiveSize(currentActive, cell, memstoreSizing)) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>        return true;<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      currentActive.sharedUnlock();<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    return false;<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>  @Override protected void postUpdate(MutableSegment currentActive) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    currentActive.sharedUnlock();<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>  @Override protected boolean sizeAddedPreOperation() {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    return true;<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>  // the getSegments() method is used for tests only<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  @VisibleForTesting<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  @Override<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  protected List&lt;Segment&gt; getSegments() {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    List&lt;? extends Segment&gt; pipelineList = pipeline.getSegments();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    List&lt;Segment&gt; list = new ArrayList&lt;&gt;(pipelineList.size() + 2);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    list.add(getActive());<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    list.addAll(pipelineList);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    list.addAll(snapshot.getAllSegments());<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>    return list;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  }<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>  // the following three methods allow to manipulate the settings of composite snapshot<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  public void setCompositeSnapshot(boolean useCompositeSnapshot) {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    this.compositeSnapshot = useCompositeSnapshot;<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>  public boolean swapCompactedSegments(VersionedSegmentsList versionedList, ImmutableSegment result,<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      boolean merge) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    // last true stands for updating the region size<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    return pipeline.swap(versionedList, result, !merge, true);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>  /**<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * @param requesterVersion The caller must hold the VersionedList of the pipeline<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   *           with version taken earlier. This version must be passed as a parameter here.<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   *           The flattening happens only if versions match.<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   */<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  public void flattenOneSegment(long requesterVersion,  MemStoreCompactionStrategy.Action action) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    pipeline.flattenOneSegment(requesterVersion, indexType, action);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>  // setter is used only for testability<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  @VisibleForTesting<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  void setIndexType(IndexType type) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    indexType = type;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    // Because this functionality is for testing only and tests are setting in-memory flush size<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    // according to their need, there is no setting of in-memory flush size, here.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    // If it is needed, please change in-memory flush size explicitly<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  }<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>  public IndexType getIndexType() {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    return indexType;<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>  public boolean hasImmutableSegments() {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    return !pipeline.isEmpty();<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  }<a name="line.379"></a>
-<span class="sourceLineNo">380</span><a name="line.380"></a>
-<span class="sourceLineNo">381</span>  public VersionedSegmentsList getImmutableSegments() {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    return pipeline.getVersionedList();<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>  public long getSmallestReadPoint() {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    return store.getSmallestReadPoint();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  }<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span>  public HStore getStore() {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    return store;<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  }<a name="line.391"></a>
-<span class="sourceLineNo">392</span><a name="line.392"></a>
-<span class="sourceLineNo">393</span>  public String getFamilyName() {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    return Bytes.toString(getFamilyNameInBytes());<a name="line.394"></a>
-<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>  @Override<a name="line.397"></a>
-<span class="sourceLineNo">398</span>  public List&lt;KeyValueScanner&gt; getScanners(long readPt) throws IOException {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    MutableSegment activeTmp = getActive();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    List&lt;? extends Segment&gt; pipelineList = pipeline.getSegments();<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    List&lt;? extends Segment&gt; snapshotList = snapshot.getAllSegments();<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    long numberOfSegments = 1L + pipelineList.size() + snapshotList.size();<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    // The list of elements in pipeline + the active element + the snapshot segment<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    List&lt;KeyValueScanner&gt; list = createList((int) numberOfSegments);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    addToScanners(activeTmp, readPt, list);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    addToScanners(pipelineList, readPt, list);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    addToScanners(snapshotList, readPt, list);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    return list;<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>  @VisibleForTesting<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  protected List&lt;KeyValueScanner&gt; createList(int capacity) {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    return new ArrayList&lt;&gt;(capacity);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>  }<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>  /**<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * Check whether anything need to be done based on the current active set size.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * The method is invoked upon every addition to the active set.<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * For CompactingMemStore, flush the active set to the read-only memory if it's<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * size is above threshold<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * @param currActive intended segment to update<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   * @param cellToAdd cell to be added to the segment<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * @param memstoreSizing object to accumulate changed size<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * @return true if the cell can be added to the<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   */<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  private boolean checkAndAddToActiveSize(MutableSegment currActive, Cell cellToAdd,<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      MemStoreSizing memstoreSizing) {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    if (shouldFlushInMemory(currActive, cellToAdd, memstoreSizing)) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      if (currActive.setInMemoryFlushed()) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        flushInMemory(currActive);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        if (setInMemoryCompactionFlag()) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>          // The thread is dispatched to do in-memory compaction in the background<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          InMemoryCompactionRunnable runnable = new InMemoryCompactionRunnable();<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          if (LOG.isTraceEnabled()) {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>            LOG.trace("Dispatching the MemStore in-memory flush for store " + store<a name="line.435"></a>
-<span class="sourceLineNo">436</span>                .getColumnFamilyName());<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          }<a name="line.437"></a>
-<span class="sourceLineNo">438</span>          getPool().execute(runnable);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      }<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      return false;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    return true;<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>  // externally visible only for tests<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  // when invoked directly from tests it must be verified that the caller doesn't hold updatesLock,<a name="line.447"></a>
-<span class="sourceLineNo">448</span>  // otherwise there is a deadlock<a name="line.448"></a>
-<span class="sourceLineNo">449</span>  @VisibleForTesting<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  void flushInMemory() {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    MutableSegment currActive = getActive();<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    if(currActive.setInMemoryFlushed()) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      flushInMemory(currActive);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    inMemoryCompaction();<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>  private void flushInMemory(MutableSegment currActive) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    LOG.trace("IN-MEMORY FLUSH: Pushing active segment into compaction pipeline");<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    pushActiveToPipeline(currActive);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>  }<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>  void inMemoryCompaction() {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    // setting the inMemoryCompactionInProgress flag again for the case this method is invoked<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    // directly (only in tests) in the common path setting from true to true is idempotent<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    inMemoryCompactionInProgress.set(true);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    // Used by tests<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    if (!allowCompaction.get()) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      return;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    }<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    try {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      // Speculative compaction execution, may be interrupted if flush is forced while<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      // compaction is in progress<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      if(!compactor.start()) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        setInMemoryCompactionCompleted();<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      }<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    } catch (IOException e) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      LOG.warn("Unable to run in-memory compaction on {}/{}; exception={}",<a name="line.478"></a>
-<span class="sourceLineNo">479</span>          getRegionServices().getRegionInfo().getEncodedName(), getFamilyName(), e);<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>  private Segment getLastSegment() {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    Segment localActive = getActive();<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    Segment tail = pipeline.getTail();<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    return tail == null ? localActive : tail;<a name="line.486"></a>
-<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>  private byte[] getFamilyNameInBytes() {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    return store.getColumnFamilyDescriptor().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>  private ThreadPoolExecutor getPool() {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    return getRegionServices().getInMemoryCompactionPool();<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>  @VisibleForTesting<a name="line.497"></a>
-<span class="sourceLineNo">498</span>  protected boolean shouldFlushInMemory(MutableSegment currActive, Cell cellToAdd,<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      MemStoreSizing memstoreSizing) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    long cellSize = currActive.getCellLength(cellToAdd);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    long segmentDataSize = currActive.getDataSize();<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    while (segmentDataSize + cellSize &lt; inmemoryFlushSize || inWalReplay) {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      // when replaying edits from WAL there is no need in in-memory flush regardless the size<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      // otherwise size below flush threshold try to update atomically<a name="line.504"></a>
-<span class="sourceLineNo">505</span>      if(currActive.compareAndSetDataSize(segmentDataSize, segmentDataSize + cellSize)) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>        if(memstoreSizing != null){<a name="line.506"></a>
-<span class="sourceLineNo">507</span>          memstoreSizing.incMemStoreSize(cellSize, 0, 0);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>        }<a name="line.508"></a>
-<span class="sourceLineNo">509</span>        //enough space for cell - no need to flush<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        return false;<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      }<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      segmentDataSize = currActive.getDataSize();<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    // size above flush threshold<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    return true;<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>  /**<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * The request to cancel the compaction asynchronous task (caused by in-memory flush)<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   * The compaction may still happen if the request was sent too late<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * Non-blocking request<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   */<a name="line.522"></a>
-<span class="sourceLineNo">523</span>  private void stopCompaction() {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    if (inMemoryCompactionInProgress.get()) {<a name="line.524"></a>
-<span class="sourceLineNo">525</span>      compactor.stop();<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>  protected void pushActiveToPipeline(MutableSegment currActive) {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    if (!currActive.isEmpty()) {<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      pipeline.pushHead(currActive);<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      resetActive();<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    }<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  }<a name="line.534"></a>
-<span class="sourceLineNo">535</span><a name="line.535"></a>
-<span class="sourceLineNo">536</span>  private void pushTailToSnapshot() {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    VersionedSegmentsList segments = pipeline.getVersionedTail();<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    pushToSnapshot(segments.getStoreSegments());<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    // In Swap: don't close segments (they are in snapshot now) and don't update the region size<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    pipeline.swap(segments,null,false, false);<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>  private void pushPipelineToSnapshot() {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    int iterationsCnt = 0;<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    boolean done = false;<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    while (!done) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      iterationsCnt++;<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      VersionedSegmentsList segments = pipeline.getVersionedList();<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      pushToSnapshot(segments.getStoreSegments());<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      // swap can return false in case the pipeline was updated by ongoing compaction<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      // and the version increase, the chance of it happenning is very low<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      // In Swap: don't close segments (they are in snapshot now) and don't update the region size<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      done = pipeline.swap(segments, null, false, false);<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      if (iterationsCnt&gt;2) {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>        // practically it is impossible that this loop iterates more than two times<a name="line.555"></a>
-<span class="sourceLineNo">556</span>        // (because the compaction is stopped and none restarts it while in snapshot request),<a name="line.556"></a>
-<span class="sourceLineNo">557</span>        // however stopping here for the case of the infinite loop causing by any error<a name="line.557"></a>
-<span class="sourceLineNo">558</span>        LOG.warn("Multiple unsuccessful attempts to push the compaction pipeline to snapshot," +<a name="line.558"></a>
-<span class="sourceLineNo">559</span>            " while flushing to disk.");<a name="line.559"></a>
-<span class="sourceLineNo">560</span>        this.snapshot = SegmentFactory.instance().createImmutableSegment(getComparator());<a name="line.560"></a>
-<span class="sourceLineNo">561</span>        break;<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>  }<a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>  private void pushToSnapshot(List&lt;ImmutableSegment&gt; segments) {<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    if(segments.isEmpty()) return;<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    if(segments.size() == 1 &amp;&amp; !segments.get(0).isEmpty()) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      this.snapshot = segments.get(0);<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      return;<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    } else { // create composite snapshot<a name="line.571"></a>
-<span class="sourceLineNo">572</span>      this.snapshot =<a name="line.572"></a>
-<span class="sourceLineNo">573</span>          SegmentFactory.instance().createCompositeImmutableSegment(getComparator(), segments);<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><a name="line.576"></a>
-<span class="sourceLineNo">577</span>  private RegionServicesForStores getRegionServices() {<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    return regionServices;<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>  /**<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * The in-memory-flusher thread performs the flush asynchronously.<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * There is at most one thread per memstore instance.<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   * It takes the updatesLock exclusively, pushes active into the pipeline, releases updatesLock<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * and compacts the pipeline.<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   */<a name="line.586"></a>
-<span class="sourceLineNo">587</span>  private class InMemoryCompactionRunnable implements Runnable {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    @Override<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    public void run() {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>      inMemoryCompaction();<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>  @VisibleForTesting<a name="line.594"></a>
-<span class="sourceLineNo">595</span>  boolean isMemStoreFlushingInMemory() {<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    return inMemoryCompactionInProgress.get();<a name="line.596"></a>
-<span class="sourceLineNo">597</span>  }<a name="line.597"></a>
-<span class="sourceLineNo">598</span><a name="line.598"></a>
-<span class="sourceLineNo">599</span>  /**<a name="line.599"></a>
-<span class="sourceLineNo">600</span>   * @param cell Find the row that comes after this one.  If null, we return the<a name="line.600"></a>
-<span class="sourceLineNo">601</span>   *             first.<a name="line.601"></a>
-<span class="sourceLineNo">602</span>   * @return Next row or null if none found.<a name="line.602"></a>
-<span class="sourceLineNo">603</span>   */<a name="line.603"></a>
-<span class="sourceLineNo">604</span>  Cell getNextRow(final Cell cell) {<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    Cell lowest = null;<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    List&lt;Segment&gt; segments = getSegments();<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    for (Segment segment : segments) {<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      if (lowest == null) {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>        lowest = getNextRow(cell, segment.getCellSet());<a name="line.609"></a>
-<span class="sourceLineNo">610</span>      } else {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>        lowest = getLowest(lowest, getNextRow(cell, segment.getCellSet()));<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>    return lowest;<a name="line.614"></a>
-<span class="sourceLineNo">615</span>  }<a name="line.615"></a>
-<span class="sourceLineNo">616</span><a name="line.616"></a>
-<span class="sourceLineNo">617</span>  @VisibleForTesting<a name="line.617"></a>
-<span class="sourceLineNo">618</span>  long getInmemoryFlushSize() {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    return inmemoryFlushSize;<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>  // debug method<a name="line.622"></a>
-<span class="sourceLineNo">623</span>  public void debug() {<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    String msg = "active size=" + getActive().getDataSize();<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    msg += " allow compaction is "+ (allowCompaction.get() ? "true" : "false");<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    msg += " inMemoryCompactionInProgress is "+ (inMemoryCompactionInProgress.get() ? "true" :<a name="line.626"></a>
-<span class="sourceLineNo">627</span>        "false");<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    LOG.debug(msg);<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>}<a name="line.631"></a>
+<span class="sourceLineNo">243</span>  public void setInMemoryCompactionCompleted() {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    inMemoryCompactionInProgress.set(false);<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>  protected boolean setInMemoryCompactionFlag() {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    return inMemoryCompactionInProgress.compareAndSet(false, 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>  @Override<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  protected long keySize() {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    // Need to consider dataSize/keySize of all segments in pipeline and active<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    long keySize = getActive().getDataSize();<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    for (Segment segment : this.pipeline.getSegments()) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      keySize += segment.getDataSize();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    return keySize;<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>  @Override<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  protected long heapSize() {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    // Need to consider heapOverhead of all segments in pipeline and active<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    long h = getActive().getHeapSize();<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    for (Segment segment : this.pipeline.getSegments()) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      h += segment.getHeapSize();<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    return h;<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>  @Override<a name="line.271"></a>
+<span class="sourceLineNo">272</span>  public void updateLowestUnflushedSequenceIdInWAL(boolean onlyIfGreater) {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    long minSequenceId = pipeline.getMinSequenceId();<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    if(minSequenceId != Long.MAX_VALUE) {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      byte[] encodedRegionName = getRegionServices().getRegionInfo().getEncodedNameAsBytes();<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      byte[] familyName = getFamilyNameInBytes();<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      WAL WAL = getRegionServices().getWAL();<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      if (WAL != null) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        WAL.updateStore(encodedRegionName, familyName, minSequenceId, onlyIfGreater);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>  }<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  /**<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   * This message intends to inform the MemStore that next coming updates<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * are going to be part of the replaying edits from WAL<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 void startReplayingFromWAL() {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    inWalReplay = true;<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>   * This message intends to inform the MemStore that the replaying edits from WAL<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   * are done<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   */<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  @Override<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public void stopReplayingFromWAL() {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    inWalReplay = false;<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>   * Issue any synchronization and test needed before applying the update<a name="line.303"></a>
+<span class="sourceLineNo">304</span>   * For compacting memstore this means checking the update can increase the size without<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   * overflow<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   * @param currentActive the segment to be updated<a name="line.306"></a>
+<span class="sourceLineNo">307</span>   * @param cell the cell to be added<a name="line.307"></a>
+<span class="sourceLineNo">308</span>   * @param memstoreSizing object to accumulate region size changes<a name="line.308"></a>
+<span class="sourceLineNo">309</span>   * @return true iff can proceed with applying the update<a name="line.309"></a>
+<span class="sourceLineNo">310</span>   */<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  @Override protected boolean preUpdate(MutableSegment currentActive, Cell cell,<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      MemStoreSizing memstoreSizing) {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    if(currentActive.sharedLock()) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      if (checkAndAddToActiveSize(currentActive, cell, memstoreSizing)) {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        return true;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      currentActive.sharedUnlock();<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    }<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    return false;<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>  @Override protected void postUpdate(MutableSegment currentActive) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    currentActive.sharedUnlock();<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
+<span class="sourceLineNo">325</span><a name="line.325"></a>
+<span class="sourceLineNo">326</span>  @Override protected boolean sizeAddedPreOperation() {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    return true;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  }<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>  // the getSegments() method is used for tests only<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  @VisibleForTesting<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  @Override<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  protected List&lt;Segment&gt; getSegments() {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    List&lt;? extends Segment&gt; pipelineList = pipeline.getSegments();<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    List&lt;Segment&gt; list = new ArrayList&lt;&gt;(pipelineList.size() + 2);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    list.add(getActive());<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    list.addAll(pipelineList);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    list.addAll(snapshot.getAllSegments());<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>    return list;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  }<a name="line.341"></a>
+<span class="sourceLineNo">342</span><a name="line.342"></a>
+<span class="sourceLineNo">343</span>  // the following three methods allow to manipulate the settings of composite snapshot<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  public void setCompositeSnapshot(boolean useCompositeSnapshot) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    this.compositeSnapshot = useCompositeSnapshot;<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>  public boolean swapCompactedSegments(VersionedSegmentsList versionedList, ImmutableSegment result,<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      boolean merge) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // last true stands for updating the region size<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    return pipeline.swap(versionedList, result, !merge, true);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  /**<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * @param requesterVersion The caller must hold the VersionedList of the pipeline<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   *           with version taken earlier. This version must be passed as a parameter here.<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   *           The flattening happens only if versions match.<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   */<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  public void flattenOneSegment(long requesterVersion,  MemStoreCompactionStrategy.Action action) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    pipeline.flattenOneSegment(requesterVersion, indexType, action);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  }<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  // setter is used only for testability<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  @VisibleForTesting<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  void setIndexType(IndexType type) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    indexType = type;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    // Because this functionality is for testing only and tests are setting in-memory flush size<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    // according to their need, there is no setting of in-memory flush size, here.<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    // If it is needed, please change in-memory flush size explicitly<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  public IndexType getIndexType() {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    return indexType;<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>  public boolean hasImmutableSegments() {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    return !pipeline.isEmpty();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  }<a name="line.378"></a>
+<span class="sourceLineNo">379</span><a name="line.379"></a>
+<span class="sourceLineNo">380</span>  public VersionedSegmentsList getImmutableSegments() {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    return pipeline.getVersionedList();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
+<span class="sourceLineNo">383</span><a name="line.383"></a>
+<span class="sourceLineNo">384</span>  public long getSmallestReadPoint() {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    return store.getSmallestReadPoint();<a name="line.385"></a>
+<span class="sourceLineNo">386</span>  }<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  public HStore getStore() {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    return store;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  }<a name="line.390"></a>
+<span class="sourceLineNo">391</span><a name="line.391"></a>
+<span class="sourceLineNo">392</span>  public String getFamilyName() {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    return Bytes.toString(getFamilyNameInBytes());<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>  @Override<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  public List&lt;KeyValueScanner&gt; getScanners(long readPt) throws IOException {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    MutableSegment activeTmp = getActive();<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    List&lt;? extends Segment&gt; pipelineList = pipeline.getSegments();<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    List&lt;? extends Segment&gt; snapshotList = snapshot.getAllSegments();<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    long numberOfSegments = 1L + pipelineList.size() + snapshotList.size();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    // The list of elements in pipeline + the active element + the snapshot segment<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    List&lt;KeyValueScanner&gt; list = createList((int) numberOfSegments);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    addToScanners(activeTmp, readPt, list);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    addToScanners(pipelineList, readPt, list);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    addToScanners(snapshotList, readPt, list);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    return list;<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>  @VisibleForTesting<a name="line.410"></a>
+<span class="sourceLineNo">411</span>  protected List&lt;KeyValueScanner&gt; createList(int capacity) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    return new ArrayList&lt;&gt;(capacity);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  }<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span>  /**<a name="line.415"></a>
+<span class="sourceLine

<TRUNCATED>

[26/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html
index db8431b..a8cb7c4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html
@@ -885,7766 +885,7797 @@
 <span class="sourceLineNo">877</span>   * @return What the next sequence (edit) id should be.<a name="line.877"></a>
 <span class="sourceLineNo">878</span>   * @throws IOException e<a name="line.878"></a>
 <span class="sourceLineNo">879</span>   */<a name="line.879"></a>
-<span class="sourceLineNo">880</span>  private long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.880"></a>
-<span class="sourceLineNo">881</span><a name="line.881"></a>
-<span class="sourceLineNo">882</span>    //Refuse to open the region if there is no column family in the table<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.884"></a>
-<span class="sourceLineNo">885</span>          " should have at least one column family.");<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    long nextSeqId = -1;<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    try {<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.891"></a>
-<span class="sourceLineNo">892</span>      return nextSeqId;<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    } finally {<a name="line.893"></a>
-<span class="sourceLineNo">894</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      // At least it will be 0 otherwise.<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      if (nextSeqId == -1) {<a name="line.896"></a>
-<span class="sourceLineNo">897</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.897"></a>
-<span class="sourceLineNo">898</span>          " initialization.");<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      }<a name="line.899"></a>
-<span class="sourceLineNo">900</span>    }<a name="line.900"></a>
-<span class="sourceLineNo">901</span>  }<a name="line.901"></a>
-<span class="sourceLineNo">902</span><a name="line.902"></a>
-<span class="sourceLineNo">903</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.903"></a>
-<span class="sourceLineNo">904</span>      final MonitoredTask status) throws IOException {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    if (coprocessorHost != null) {<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      coprocessorHost.preOpen();<a name="line.907"></a>
-<span class="sourceLineNo">908</span>    }<a name="line.908"></a>
-<span class="sourceLineNo">909</span><a name="line.909"></a>
-<span class="sourceLineNo">910</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.910"></a>
-<span class="sourceLineNo">911</span>    // Only the primary replica should write .regioninfo<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      status.setStatus("Writing region info on filesystem");<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      fs.checkRegionInfoOnFilesystem();<a name="line.914"></a>
-<span class="sourceLineNo">915</span>    }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>    // Initialize all the HStores<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    status.setStatus("Initializing all the Stores");<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.920"></a>
-<span class="sourceLineNo">921</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.922"></a>
-<span class="sourceLineNo">923</span>      try {<a name="line.923"></a>
-<span class="sourceLineNo">924</span>        // update the stores that we are replaying<a name="line.924"></a>
-<span class="sourceLineNo">925</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        // Recover any edits if available.<a name="line.927"></a>
-<span class="sourceLineNo">928</span>        maxSeqId = Math.max(maxSeqId,<a name="line.928"></a>
-<span class="sourceLineNo">929</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        // Make sure mvcc is up to max.<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      } finally {<a name="line.932"></a>
-<span class="sourceLineNo">933</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        // update the stores that we are done replaying<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        stores.forEach(HStore::stopReplayingFromWAL);<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>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    this.writestate.flushRequested = false;<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    this.writestate.compacting.set(0);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>    if (this.writestate.writesEnabled) {<a name="line.944"></a>
-<span class="sourceLineNo">945</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      // Remove temporary data left over from old regions<a name="line.946"></a>
-<span class="sourceLineNo">947</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.947"></a>
-<span class="sourceLineNo">948</span>      fs.cleanupTempDir();<a name="line.948"></a>
-<span class="sourceLineNo">949</span>    }<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>    if (this.writestate.writesEnabled) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      // these directories here on open.  We may be opening a region that was<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      // being split but we crashed in the middle of it all.<a name="line.955"></a>
-<span class="sourceLineNo">956</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      fs.cleanupAnySplitDetritus();<a name="line.957"></a>
-<span class="sourceLineNo">958</span>      fs.cleanupMergesDir();<a name="line.958"></a>
-<span class="sourceLineNo">959</span>    }<a name="line.959"></a>
+<span class="sourceLineNo">880</span>  @VisibleForTesting<a name="line.880"></a>
+<span class="sourceLineNo">881</span>  long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>    //Refuse to open the region if there is no column family in the table<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.885"></a>
+<span class="sourceLineNo">886</span>          " should have at least one column family.");<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    }<a name="line.887"></a>
+<span class="sourceLineNo">888</span><a name="line.888"></a>
+<span class="sourceLineNo">889</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>    long nextSeqId = -1;<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    try {<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      return nextSeqId;<a name="line.893"></a>
+<span class="sourceLineNo">894</span>    } catch (IOException e) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      LOG.warn("Failed initialize of region= {}, starting to roll back memstore",<a name="line.895"></a>
+<span class="sourceLineNo">896</span>          getRegionInfo().getRegionNameAsString(), e);<a name="line.896"></a>
+<span class="sourceLineNo">897</span>      // global memstore size will be decreased when dropping memstore<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      try {<a name="line.898"></a>
+<span class="sourceLineNo">899</span>        //drop the memory used by memstore if open region fails<a name="line.899"></a>
+<span class="sourceLineNo">900</span>        dropMemStoreContents();<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      } catch (IOException ioE) {<a name="line.901"></a>
+<span class="sourceLineNo">902</span>        if (conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {<a name="line.902"></a>
+<span class="sourceLineNo">903</span>          LOG.warn("Failed drop memstore of region= {}, "<a name="line.903"></a>
+<span class="sourceLineNo">904</span>                  + "some chunks may not released forever since MSLAB is enabled",<a name="line.904"></a>
+<span class="sourceLineNo">905</span>              getRegionInfo().getRegionNameAsString());<a name="line.905"></a>
+<span class="sourceLineNo">906</span>        }<a name="line.906"></a>
+<span class="sourceLineNo">907</span><a name="line.907"></a>
+<span class="sourceLineNo">908</span>      }<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      throw e;<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    } finally {<a name="line.910"></a>
+<span class="sourceLineNo">911</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      // At least it will be 0 otherwise.<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      if (nextSeqId == -1) {<a name="line.913"></a>
+<span class="sourceLineNo">914</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.914"></a>
+<span class="sourceLineNo">915</span>          " initialization.");<a name="line.915"></a>
+<span class="sourceLineNo">916</span>      }<a name="line.916"></a>
+<span class="sourceLineNo">917</span>    }<a name="line.917"></a>
+<span class="sourceLineNo">918</span>  }<a name="line.918"></a>
+<span class="sourceLineNo">919</span><a name="line.919"></a>
+<span class="sourceLineNo">920</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.920"></a>
+<span class="sourceLineNo">921</span>      final MonitoredTask status) throws IOException {<a name="line.921"></a>
+<span class="sourceLineNo">922</span>    if (coprocessorHost != null) {<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.923"></a>
+<span class="sourceLineNo">924</span>      coprocessorHost.preOpen();<a name="line.924"></a>
+<span class="sourceLineNo">925</span>    }<a name="line.925"></a>
+<span class="sourceLineNo">926</span><a name="line.926"></a>
+<span class="sourceLineNo">927</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.927"></a>
+<span class="sourceLineNo">928</span>    // Only the primary replica should write .regioninfo<a name="line.928"></a>
+<span class="sourceLineNo">929</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>      status.setStatus("Writing region info on filesystem");<a name="line.930"></a>
+<span class="sourceLineNo">931</span>      fs.checkRegionInfoOnFilesystem();<a name="line.931"></a>
+<span class="sourceLineNo">932</span>    }<a name="line.932"></a>
+<span class="sourceLineNo">933</span><a name="line.933"></a>
+<span class="sourceLineNo">934</span>    // Initialize all the HStores<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    status.setStatus("Initializing all the Stores");<a name="line.935"></a>
+<span class="sourceLineNo">936</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.937"></a>
+<span class="sourceLineNo">938</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.938"></a>
+<span class="sourceLineNo">939</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.939"></a>
+<span class="sourceLineNo">940</span>      try {<a name="line.940"></a>
+<span class="sourceLineNo">941</span>        // update the stores that we are replaying<a name="line.941"></a>
+<span class="sourceLineNo">942</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.942"></a>
+<span class="sourceLineNo">943</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.943"></a>
+<span class="sourceLineNo">944</span>        // Recover any edits if available.<a name="line.944"></a>
+<span class="sourceLineNo">945</span>        maxSeqId = Math.max(maxSeqId,<a name="line.945"></a>
+<span class="sourceLineNo">946</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.946"></a>
+<span class="sourceLineNo">947</span>        // Make sure mvcc is up to max.<a name="line.947"></a>
+<span class="sourceLineNo">948</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      } finally {<a name="line.949"></a>
+<span class="sourceLineNo">950</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        // update the stores that we are done replaying<a name="line.951"></a>
+<span class="sourceLineNo">952</span>        stores.forEach(HStore::stopReplayingFromWAL);<a name="line.952"></a>
+<span class="sourceLineNo">953</span>      }<a name="line.953"></a>
+<span class="sourceLineNo">954</span>    }<a name="line.954"></a>
+<span class="sourceLineNo">955</span>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.955"></a>
+<span class="sourceLineNo">956</span><a name="line.956"></a>
+<span class="sourceLineNo">957</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.957"></a>
+<span class="sourceLineNo">958</span>    this.writestate.flushRequested = false;<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    this.writestate.compacting.set(0);<a name="line.959"></a>
 <span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>    // Initialize split policy<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.962"></a>
-<span class="sourceLineNo">963</span><a name="line.963"></a>
-<span class="sourceLineNo">964</span>    // Initialize flush policy<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.965"></a>
-<span class="sourceLineNo">966</span><a name="line.966"></a>
-<span class="sourceLineNo">967</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    for (HStore store: stores.values()) {<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<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>    // Use maximum of log sequenceid or that which was found in stores<a name="line.972"></a>
-<span class="sourceLineNo">973</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.973"></a>
-<span class="sourceLineNo">974</span>    long maxSeqIdFromFile =<a name="line.974"></a>
-<span class="sourceLineNo">975</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.975"></a>
-<span class="sourceLineNo">976</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.976"></a>
-<span class="sourceLineNo">977</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    // the max sequence id file.<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.985"></a>
-<span class="sourceLineNo">986</span><a name="line.986"></a>
-<span class="sourceLineNo">987</span>    // A region can be reopened if failed a split; reset flags<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    this.closing.set(false);<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    this.closed.set(false);<a name="line.989"></a>
-<span class="sourceLineNo">990</span><a name="line.990"></a>
-<span class="sourceLineNo">991</span>    if (coprocessorHost != null) {<a name="line.991"></a>
-<span class="sourceLineNo">992</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.992"></a>
-<span class="sourceLineNo">993</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.993"></a>
-<span class="sourceLineNo">994</span>      coprocessorHost.postOpen();<a name="line.994"></a>
-<span class="sourceLineNo">995</span>    }<a name="line.995"></a>
-<span class="sourceLineNo">996</span><a name="line.996"></a>
-<span class="sourceLineNo">997</span>    status.markComplete("Region opened successfully");<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    return nextSeqId;<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>   * Open all Stores.<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>   * @param reporter<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   * @param status<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>   * @return Highest sequenceId found out in a Store.<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * @throws IOException<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   */<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      throws IOException {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>    // Load in all the HStores.<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    long maxSeqId = -1;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    long maxMemstoreTS = -1;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span><a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span><a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      // initialize each store in parallel<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>          @Override<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>          public HStore call() throws IOException {<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>            return instantiateHStore(family);<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          }<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>        });<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      }<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>      boolean allStoresOpened = false;<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>      boolean hasSloppyStores = false;<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>      try {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>          HStore store = future.get();<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>          if (store.isSloppyMemStore()) {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            hasSloppyStores = true;<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>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>              storeMaxSequenceId);<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            maxSeqId = storeMaxSequenceId;<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>          }<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>          }<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>        }<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>        allStoresOpened = true;<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>        if(hasSloppyStores) {<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>                  .build();<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        }<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>      } catch (InterruptedException e) {<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>      } catch (ExecutionException e) {<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        throw new IOException(e.getCause());<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>      } finally {<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        if (!allStoresOpened) {<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>          // something went wrong, close all opened stores<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>          for (HStore store : this.stores.values()) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>            try {<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>              store.close();<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>            } catch (IOException e) {<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>              LOG.warn("close store failed", e);<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>            }<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          }<a name="line.1075"></a>
+<span class="sourceLineNo">961</span>    if (this.writestate.writesEnabled) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      // Remove temporary data left over from old regions<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      fs.cleanupTempDir();<a name="line.965"></a>
+<span class="sourceLineNo">966</span>    }<a name="line.966"></a>
+<span class="sourceLineNo">967</span><a name="line.967"></a>
+<span class="sourceLineNo">968</span>    if (this.writestate.writesEnabled) {<a name="line.968"></a>
+<span class="sourceLineNo">969</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.969"></a>
+<span class="sourceLineNo">970</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.970"></a>
+<span class="sourceLineNo">971</span>      // these directories here on open.  We may be opening a region that was<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      // being split but we crashed in the middle of it all.<a name="line.972"></a>
+<span class="sourceLineNo">973</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.973"></a>
+<span class="sourceLineNo">974</span>      fs.cleanupAnySplitDetritus();<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      fs.cleanupMergesDir();<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    }<a name="line.976"></a>
+<span class="sourceLineNo">977</span><a name="line.977"></a>
+<span class="sourceLineNo">978</span>    // Initialize split policy<a name="line.978"></a>
+<span class="sourceLineNo">979</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.979"></a>
+<span class="sourceLineNo">980</span><a name="line.980"></a>
+<span class="sourceLineNo">981</span>    // Initialize flush policy<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.982"></a>
+<span class="sourceLineNo">983</span><a name="line.983"></a>
+<span class="sourceLineNo">984</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.984"></a>
+<span class="sourceLineNo">985</span>    for (HStore store: stores.values()) {<a name="line.985"></a>
+<span class="sourceLineNo">986</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<a name="line.986"></a>
+<span class="sourceLineNo">987</span>    }<a name="line.987"></a>
+<span class="sourceLineNo">988</span><a name="line.988"></a>
+<span class="sourceLineNo">989</span>    // Use maximum of log sequenceid or that which was found in stores<a name="line.989"></a>
+<span class="sourceLineNo">990</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.990"></a>
+<span class="sourceLineNo">991</span>    long maxSeqIdFromFile =<a name="line.991"></a>
+<span class="sourceLineNo">992</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.994"></a>
+<span class="sourceLineNo">995</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.995"></a>
+<span class="sourceLineNo">996</span>    // the max sequence id file.<a name="line.996"></a>
+<span class="sourceLineNo">997</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.997"></a>
+<span class="sourceLineNo">998</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.998"></a>
+<span class="sourceLineNo">999</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<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>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span><a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>    // A region can be reopened if failed a split; reset flags<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>    this.closing.set(false);<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    this.closed.set(false);<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span><a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>    if (coprocessorHost != null) {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>      coprocessorHost.postOpen();<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>    }<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span><a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>    status.markComplete("Region opened successfully");<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>    return nextSeqId;<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>  }<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span><a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>  /**<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>   * Open all Stores.<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>   * @param reporter<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>   * @param status<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>   * @return Highest sequenceId found out in a Store.<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>   * @throws IOException<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>   */<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>      throws IOException {<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    // Load in all the HStores.<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>    long maxSeqId = -1;<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>    long maxMemstoreTS = -1;<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span><a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>      // initialize each store in parallel<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>          @Override<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>          public HStore call() throws IOException {<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>            return instantiateHStore(family);<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>          }<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>        });<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>      }<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>      boolean allStoresOpened = false;<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>      boolean hasSloppyStores = false;<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>      try {<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>          HStore store = future.get();<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>          if (store.isSloppyMemStore()) {<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>            hasSloppyStores = true;<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>          }<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span><a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>              storeMaxSequenceId);<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>            maxSeqId = storeMaxSequenceId;<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>          }<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>          }<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span>        }<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>        allStoresOpened = true;<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>        if(hasSloppyStores) {<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>                  .build();<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1075"></a>
 <span class="sourceLineNo">1076</span>        }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      }<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    }<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>  }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span><a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>    // Initialize all the HStores<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>    status.setStatus("Warming up all the Stores");<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    try {<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>      initializeStores(reporter, status);<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>    } finally {<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>      status.markComplete("Done warming up.");<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>    }<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>  }<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>   * @return Map of StoreFiles by column family<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>   */<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    for (HStore store : stores.values()) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      if (storeFiles == null) {<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>        continue;<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>        storeFileNames.add(storeFile.getPath());<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      }<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>    }<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>    return allStoreFiles;<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>  }<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span><a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>  @VisibleForTesting<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>        mvcc);<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  }<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span><a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>        mvcc);<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span><a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>    // Store SeqId in HDFS when a region closes<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    // table is still online<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>        mvcc.getReadPoint());<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>    }<a name="line.1136"></a>
+<span class="sourceLineNo">1077</span>      } catch (InterruptedException e) {<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>      } catch (ExecutionException e) {<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>        throw new IOException(e.getCause());<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      } finally {<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>        if (!allStoresOpened) {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>          // something went wrong, close all opened stores<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>          for (HStore store : this.stores.values()) {<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>            try {<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>              store.close();<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>            } catch (IOException e) {<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>              LOG.warn("close store failed", e);<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>            }<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>      }<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>    }<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>  }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span><a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>    // Initialize all the HStores<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>    status.setStatus("Warming up all the Stores");<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>    try {<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>      initializeStores(reporter, status);<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>    } finally {<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>      status.markComplete("Done warming up.");<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>    }<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>  }<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span><a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>  /**<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>   * @return Map of StoreFiles by column family<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>   */<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>    for (HStore store : stores.values()) {<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>      if (storeFiles == null) {<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>        continue;<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span>      }<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>        storeFileNames.add(storeFile.getPath());<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>      }<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>    }<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>    return allStoreFiles;<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>  }<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span><a name="line.1128"></a>
+<span class="sourceLineNo">1129</span>  @VisibleForTesting<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>        mvcc);<a name="line.1136"></a>
 <span class="sourceLineNo">1137</span>  }<a name="line.1137"></a>
 <span class="sourceLineNo">1138</span><a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>  /**<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>   * @return True if this region has references.<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>   */<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>  public boolean hasReferences() {<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<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>  public void blockUpdates() {<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>    this.updatesLock.writeLock().lock();<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>  }<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span><a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>  public void unblockUpdates() {<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>    this.updatesLock.writeLock().unlock();<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>  }<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span><a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>    return hdfsBlocksDistribution;<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>  }<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span><a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>  /**<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>   * @param conf configuration<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>   * @param regionInfo encoded name of the region<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>   * @throws IOException<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>   */<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>  }<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span><a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>  /**<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>   * @param conf configuration<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>   * @param regionInfo encoded name of the region<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>   * @param tablePath the table directory<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>   * @throws IOException<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>   */<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1186"></a>
-<span class="sourceLineNo">1187</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1188"></a>
-<span class="sourceLineNo">1189</span><a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span>      if (locatedFileStatusList == null) {<a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>        continue;<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>      }<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span><a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>        Path p = status.getPath();<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>          // creation<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>              status.getBlockLocations());<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span>        } else {<a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>          throw new IOException("path=" + p<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>              + " doesn't look like a valid StoreFile");<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>        }<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>      }<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>    }<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>    return hdfsBlocksDistribution;<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>   * Increase the size of mem store in this region and the size of global mem<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>   * store<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>   */<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>  }<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span><a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>    if (this.rsAccounting != null) {<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>    }<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>    long dataSize =<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1234"></a>
+<span class="sourceLineNo">1139</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span>        mvcc);<a name="line.1145"></a>
+<span class="sourceLineNo">1146</span><a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>    // Store SeqId in HDFS when a region closes<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>    // table is still online<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span>        mvcc.getReadPoint());<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>    }<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>  }<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span><a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>  /**<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>   * @return True if this region has references.<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>   */<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>  public boolean hasReferences() {<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>  }<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span><a name="line.1162"></a>
+<span class="sourceLineNo">1163</span>  public void blockUpdates() {<a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>    this.updatesLock.writeLock().lock();<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>  }<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span><a name="line.1166"></a>
+<span class="sourceLineNo">1167</span>  public void unblockUpdates() {<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>    this.updatesLock.writeLock().unlock();<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>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1172"></a>
+<span class="sourceLineNo">1173</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1174"></a>
+<span class="sourceLineNo">1175</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>    return hdfsBlocksDistribution;<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span>  }<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span><a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>  /**<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>   * @param conf configuration<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1182"></a>
+<span class="sourceLineNo">1183</span>   * @param regionInfo encoded name of the region<a name="line.1183"></a>
+<span class="sourceLineNo">1184</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1184"></a>
+<span class="sourceLineNo">1185</span>   * @throws IOException<a name="line.1185"></a>
+<span class="sourceLineNo">1186</span>   */<a name="line.1186"></a>
+<span class="sourceLineNo">1187</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1187"></a>
+<span class="sourceLineNo">1188</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1188"></a>
+<span class="sourceLineNo">1189</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1189"></a>
+<span class="sourceLineNo">1190</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1190"></a>
+<span class="sourceLineNo">1191</span>  }<a name="line.1191"></a>
+<span class="sourceLineNo">1192</span><a name="line.1192"></a>
+<span class="sourceLineNo">1193</span>  /**<a name="line.1193"></a>
+<span class="sourceLineNo">1194</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1194"></a>
+<span class="sourceLineNo">1195</span>   * @param conf configuration<a name="line.1195"></a>
+<span class="sourceLineNo">1196</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1196"></a>
+<span class="sourceLineNo">1197</span>   * @param regionInfo encoded name of the region<a name="line.1197"></a>
+<span class="sourceLineNo">1198</span>   * @param tablePath the table directory<a name="line.1198"></a>
+<span class="sourceLineNo">1199</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1199"></a>
+<span class="sourceLineNo">1200</span>   * @throws IOException<a name="line.1200"></a>
+<span class="sourceLineNo">1201</span>   */<a name="line.1201"></a>
+<span class="sourceLineNo">1202</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1202"></a>
+<span class="sourceLineNo">1203</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1203"></a>
+<span class="sourceLineNo">1204</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1204"></a>
+<span class="sourceLineNo">1205</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1205"></a>
+<span class="sourceLineNo">1206</span><a name="line.1206"></a>
+<span class="sourceLineNo">1207</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1207"></a>
+<span class="sourceLineNo">1208</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1208"></a>
+<span class="sourceLineNo">1209</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1209"></a>
+<span class="sourceLineNo">1210</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1210"></a>
+<span class="sourceLineNo">1211</span>      if (locatedFileStatusList == null) {<a name="line.1211"></a>
+<span class="sourceLineNo">1212</span>        continue;<a name="line.1212"></a>
+<span class="sourceLineNo">1213</span>      }<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span><a name="line.1214"></a>
+<span class="sourceLineNo">1215</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1215"></a>
+<span class="sourceLineNo">1216</span>        Path p = status.getPath();<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1217"></a>
+<span class="sourceLineNo">1218</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span>          // creation<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1224"></a>
+<span class="sourceLineNo">1225</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1225"></a>
+<span class="sourceLineNo">1226</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1226"></a>
+<span class="sourceLineNo">1227</span>              status.getBlockLocations());<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span>        } else {<a name="line.1228"></a>
+<span class="sourceLineNo">1229</span>          throw new IOException("path=" + p<a name="line.1229"></a>
+<span class="sourceLineNo">1230</span>              + " doesn't look like a valid StoreFile");<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>    }<a name="line.1233"></a>
+<span class="sourceLineNo">1234</span>    return hdfsBlocksDistribution;<a name="line.1234"></a>
 <span class="sourceLineNo">1235</span>  }<a name="line.1235"></a>
 <span class="sourceLineNo">1236</span><a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>  }<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span><a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>    if (this.rsAccounting != null) {<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>    }<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>    long dataSize =<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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 checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    if (memStoreDataSize &lt; 0) {<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>    }<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>  }<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span><a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>  @Override<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>  public RegionInfo getRegionInfo() {<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>    return this.fs.getRegionInfo();<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>  }<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span><a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>  /**<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>   * @return Instance of {@link RegionServerServices} used by this HRegion.<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>   * Can be null.<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>   */<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>  RegionServerServices getRegionServerServices() {<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>    return this.rsServices;<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>  }<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span><a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>  @Override<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>  public long getReadRequestsCount() {<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>    return readRequestsCount.sum();<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>  }<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span><a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>  @Override<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>  public long getCpRequestsCount() {<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>    return cpRequestsCount.sum();<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>  @Override<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>  public long getFilteredReadRequestsCount() {<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>    return filteredReadRequestsCount.sum();<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>  @Override<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>  public long getWriteRequestsCount() {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    return writeRequestsCount.sum();<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>  }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>  @Override<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>  public long getMemStoreDataSize() {<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>    return memStoreSizing.getDataSize();<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>  @Override<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>  public long getMemStoreHeapSize() {<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>    return memStoreSizing.getHeapSize();<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>  }<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span><a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>  @Override<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>  public long getMemStoreOffHeapSize() {<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>    return memStoreSizing.getOffHeapSize();<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>  }<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span><a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>  /** @return store services for this region, to access services required by store level needs */<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>  public RegionServicesForStores getRegionServicesForStores() {<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>    return regionServicesForStores;<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>  @Override<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>  public long getNumMutationsWithoutWAL() {<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>    return numMutationsWithoutWAL.sum();<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>  @Override<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>  public long getDataInMemoryWithoutWAL() {<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>    return dataInMemoryWithoutWAL.sum();<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>  }<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span><a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>  @Override<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>  public long getBlockedRequestsCount() {<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>    return blockedRequestsCount.sum();<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>  }<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span><a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>  @Override<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>  public long getCheckAndMutateChecksPassed() {<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>    return checkAndMutateChecksPassed.sum();<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 long getCheckAndMutateChecksFailed() {<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    return checkAndMutateChecksFailed.sum();<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>  // TODO Needs to check whether we should expose our metrics system to CPs. If CPs themselves doing<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>  // the op and bypassing the core, this might be needed? Should be stop supporting the bypass<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>  // feature?<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>  public MetricsRegion getMetrics() {<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>    return metricsRegion;<a name="line.1342"></a>
+<span class="sourceLineNo">1237</span>  /**<a name="line.1237"></a>
+<span class="sourceLineNo">1238</span>   * Increase the size of mem store in this region and the size of global mem<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span>   * store<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span>   */<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>  }<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span><a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>    if (this.rsAccounting != null) {<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>    }<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>    long dataSize =<a name="line.1249"></a>
+<span class="sourceLineNo">1250</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1250"></a>
+<span class="sourceLineNo">1251</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>  }<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span><a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span>  }<a name="line.1256"></a>
+<span class="sourceLineNo">1257</span><a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>    if (this.rsAccounting != null) {<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>    }<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>    long dataSize =<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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>  private void checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>    if (memStoreDataSize &lt; 0) {<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>    }<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>  }<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span><a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>  @Override<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>  public RegionInfo getRegionInfo() {<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>    return this.fs.getRegionInfo();<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>  }<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> 

<TRUNCATED>

[24/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
index db8431b..a8cb7c4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
@@ -885,7766 +885,7797 @@
 <span class="sourceLineNo">877</span>   * @return What the next sequence (edit) id should be.<a name="line.877"></a>
 <span class="sourceLineNo">878</span>   * @throws IOException e<a name="line.878"></a>
 <span class="sourceLineNo">879</span>   */<a name="line.879"></a>
-<span class="sourceLineNo">880</span>  private long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.880"></a>
-<span class="sourceLineNo">881</span><a name="line.881"></a>
-<span class="sourceLineNo">882</span>    //Refuse to open the region if there is no column family in the table<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.884"></a>
-<span class="sourceLineNo">885</span>          " should have at least one column family.");<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    long nextSeqId = -1;<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    try {<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.891"></a>
-<span class="sourceLineNo">892</span>      return nextSeqId;<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    } finally {<a name="line.893"></a>
-<span class="sourceLineNo">894</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      // At least it will be 0 otherwise.<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      if (nextSeqId == -1) {<a name="line.896"></a>
-<span class="sourceLineNo">897</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.897"></a>
-<span class="sourceLineNo">898</span>          " initialization.");<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      }<a name="line.899"></a>
-<span class="sourceLineNo">900</span>    }<a name="line.900"></a>
-<span class="sourceLineNo">901</span>  }<a name="line.901"></a>
-<span class="sourceLineNo">902</span><a name="line.902"></a>
-<span class="sourceLineNo">903</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.903"></a>
-<span class="sourceLineNo">904</span>      final MonitoredTask status) throws IOException {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    if (coprocessorHost != null) {<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      coprocessorHost.preOpen();<a name="line.907"></a>
-<span class="sourceLineNo">908</span>    }<a name="line.908"></a>
-<span class="sourceLineNo">909</span><a name="line.909"></a>
-<span class="sourceLineNo">910</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.910"></a>
-<span class="sourceLineNo">911</span>    // Only the primary replica should write .regioninfo<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      status.setStatus("Writing region info on filesystem");<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      fs.checkRegionInfoOnFilesystem();<a name="line.914"></a>
-<span class="sourceLineNo">915</span>    }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>    // Initialize all the HStores<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    status.setStatus("Initializing all the Stores");<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.920"></a>
-<span class="sourceLineNo">921</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.922"></a>
-<span class="sourceLineNo">923</span>      try {<a name="line.923"></a>
-<span class="sourceLineNo">924</span>        // update the stores that we are replaying<a name="line.924"></a>
-<span class="sourceLineNo">925</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        // Recover any edits if available.<a name="line.927"></a>
-<span class="sourceLineNo">928</span>        maxSeqId = Math.max(maxSeqId,<a name="line.928"></a>
-<span class="sourceLineNo">929</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        // Make sure mvcc is up to max.<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      } finally {<a name="line.932"></a>
-<span class="sourceLineNo">933</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        // update the stores that we are done replaying<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        stores.forEach(HStore::stopReplayingFromWAL);<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>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    this.writestate.flushRequested = false;<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    this.writestate.compacting.set(0);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>    if (this.writestate.writesEnabled) {<a name="line.944"></a>
-<span class="sourceLineNo">945</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      // Remove temporary data left over from old regions<a name="line.946"></a>
-<span class="sourceLineNo">947</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.947"></a>
-<span class="sourceLineNo">948</span>      fs.cleanupTempDir();<a name="line.948"></a>
-<span class="sourceLineNo">949</span>    }<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>    if (this.writestate.writesEnabled) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      // these directories here on open.  We may be opening a region that was<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      // being split but we crashed in the middle of it all.<a name="line.955"></a>
-<span class="sourceLineNo">956</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      fs.cleanupAnySplitDetritus();<a name="line.957"></a>
-<span class="sourceLineNo">958</span>      fs.cleanupMergesDir();<a name="line.958"></a>
-<span class="sourceLineNo">959</span>    }<a name="line.959"></a>
+<span class="sourceLineNo">880</span>  @VisibleForTesting<a name="line.880"></a>
+<span class="sourceLineNo">881</span>  long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>    //Refuse to open the region if there is no column family in the table<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.885"></a>
+<span class="sourceLineNo">886</span>          " should have at least one column family.");<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    }<a name="line.887"></a>
+<span class="sourceLineNo">888</span><a name="line.888"></a>
+<span class="sourceLineNo">889</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>    long nextSeqId = -1;<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    try {<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      return nextSeqId;<a name="line.893"></a>
+<span class="sourceLineNo">894</span>    } catch (IOException e) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      LOG.warn("Failed initialize of region= {}, starting to roll back memstore",<a name="line.895"></a>
+<span class="sourceLineNo">896</span>          getRegionInfo().getRegionNameAsString(), e);<a name="line.896"></a>
+<span class="sourceLineNo">897</span>      // global memstore size will be decreased when dropping memstore<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      try {<a name="line.898"></a>
+<span class="sourceLineNo">899</span>        //drop the memory used by memstore if open region fails<a name="line.899"></a>
+<span class="sourceLineNo">900</span>        dropMemStoreContents();<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      } catch (IOException ioE) {<a name="line.901"></a>
+<span class="sourceLineNo">902</span>        if (conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {<a name="line.902"></a>
+<span class="sourceLineNo">903</span>          LOG.warn("Failed drop memstore of region= {}, "<a name="line.903"></a>
+<span class="sourceLineNo">904</span>                  + "some chunks may not released forever since MSLAB is enabled",<a name="line.904"></a>
+<span class="sourceLineNo">905</span>              getRegionInfo().getRegionNameAsString());<a name="line.905"></a>
+<span class="sourceLineNo">906</span>        }<a name="line.906"></a>
+<span class="sourceLineNo">907</span><a name="line.907"></a>
+<span class="sourceLineNo">908</span>      }<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      throw e;<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    } finally {<a name="line.910"></a>
+<span class="sourceLineNo">911</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      // At least it will be 0 otherwise.<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      if (nextSeqId == -1) {<a name="line.913"></a>
+<span class="sourceLineNo">914</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.914"></a>
+<span class="sourceLineNo">915</span>          " initialization.");<a name="line.915"></a>
+<span class="sourceLineNo">916</span>      }<a name="line.916"></a>
+<span class="sourceLineNo">917</span>    }<a name="line.917"></a>
+<span class="sourceLineNo">918</span>  }<a name="line.918"></a>
+<span class="sourceLineNo">919</span><a name="line.919"></a>
+<span class="sourceLineNo">920</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.920"></a>
+<span class="sourceLineNo">921</span>      final MonitoredTask status) throws IOException {<a name="line.921"></a>
+<span class="sourceLineNo">922</span>    if (coprocessorHost != null) {<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.923"></a>
+<span class="sourceLineNo">924</span>      coprocessorHost.preOpen();<a name="line.924"></a>
+<span class="sourceLineNo">925</span>    }<a name="line.925"></a>
+<span class="sourceLineNo">926</span><a name="line.926"></a>
+<span class="sourceLineNo">927</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.927"></a>
+<span class="sourceLineNo">928</span>    // Only the primary replica should write .regioninfo<a name="line.928"></a>
+<span class="sourceLineNo">929</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>      status.setStatus("Writing region info on filesystem");<a name="line.930"></a>
+<span class="sourceLineNo">931</span>      fs.checkRegionInfoOnFilesystem();<a name="line.931"></a>
+<span class="sourceLineNo">932</span>    }<a name="line.932"></a>
+<span class="sourceLineNo">933</span><a name="line.933"></a>
+<span class="sourceLineNo">934</span>    // Initialize all the HStores<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    status.setStatus("Initializing all the Stores");<a name="line.935"></a>
+<span class="sourceLineNo">936</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.937"></a>
+<span class="sourceLineNo">938</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.938"></a>
+<span class="sourceLineNo">939</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.939"></a>
+<span class="sourceLineNo">940</span>      try {<a name="line.940"></a>
+<span class="sourceLineNo">941</span>        // update the stores that we are replaying<a name="line.941"></a>
+<span class="sourceLineNo">942</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.942"></a>
+<span class="sourceLineNo">943</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.943"></a>
+<span class="sourceLineNo">944</span>        // Recover any edits if available.<a name="line.944"></a>
+<span class="sourceLineNo">945</span>        maxSeqId = Math.max(maxSeqId,<a name="line.945"></a>
+<span class="sourceLineNo">946</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.946"></a>
+<span class="sourceLineNo">947</span>        // Make sure mvcc is up to max.<a name="line.947"></a>
+<span class="sourceLineNo">948</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      } finally {<a name="line.949"></a>
+<span class="sourceLineNo">950</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        // update the stores that we are done replaying<a name="line.951"></a>
+<span class="sourceLineNo">952</span>        stores.forEach(HStore::stopReplayingFromWAL);<a name="line.952"></a>
+<span class="sourceLineNo">953</span>      }<a name="line.953"></a>
+<span class="sourceLineNo">954</span>    }<a name="line.954"></a>
+<span class="sourceLineNo">955</span>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.955"></a>
+<span class="sourceLineNo">956</span><a name="line.956"></a>
+<span class="sourceLineNo">957</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.957"></a>
+<span class="sourceLineNo">958</span>    this.writestate.flushRequested = false;<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    this.writestate.compacting.set(0);<a name="line.959"></a>
 <span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>    // Initialize split policy<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.962"></a>
-<span class="sourceLineNo">963</span><a name="line.963"></a>
-<span class="sourceLineNo">964</span>    // Initialize flush policy<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.965"></a>
-<span class="sourceLineNo">966</span><a name="line.966"></a>
-<span class="sourceLineNo">967</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    for (HStore store: stores.values()) {<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<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>    // Use maximum of log sequenceid or that which was found in stores<a name="line.972"></a>
-<span class="sourceLineNo">973</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.973"></a>
-<span class="sourceLineNo">974</span>    long maxSeqIdFromFile =<a name="line.974"></a>
-<span class="sourceLineNo">975</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.975"></a>
-<span class="sourceLineNo">976</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.976"></a>
-<span class="sourceLineNo">977</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    // the max sequence id file.<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.985"></a>
-<span class="sourceLineNo">986</span><a name="line.986"></a>
-<span class="sourceLineNo">987</span>    // A region can be reopened if failed a split; reset flags<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    this.closing.set(false);<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    this.closed.set(false);<a name="line.989"></a>
-<span class="sourceLineNo">990</span><a name="line.990"></a>
-<span class="sourceLineNo">991</span>    if (coprocessorHost != null) {<a name="line.991"></a>
-<span class="sourceLineNo">992</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.992"></a>
-<span class="sourceLineNo">993</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.993"></a>
-<span class="sourceLineNo">994</span>      coprocessorHost.postOpen();<a name="line.994"></a>
-<span class="sourceLineNo">995</span>    }<a name="line.995"></a>
-<span class="sourceLineNo">996</span><a name="line.996"></a>
-<span class="sourceLineNo">997</span>    status.markComplete("Region opened successfully");<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    return nextSeqId;<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>   * Open all Stores.<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>   * @param reporter<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   * @param status<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>   * @return Highest sequenceId found out in a Store.<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * @throws IOException<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   */<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      throws IOException {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>    // Load in all the HStores.<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    long maxSeqId = -1;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    long maxMemstoreTS = -1;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span><a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span><a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      // initialize each store in parallel<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>          @Override<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>          public HStore call() throws IOException {<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>            return instantiateHStore(family);<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          }<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>        });<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      }<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>      boolean allStoresOpened = false;<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>      boolean hasSloppyStores = false;<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>      try {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>          HStore store = future.get();<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>          if (store.isSloppyMemStore()) {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            hasSloppyStores = true;<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>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>              storeMaxSequenceId);<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            maxSeqId = storeMaxSequenceId;<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>          }<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>          }<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>        }<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>        allStoresOpened = true;<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>        if(hasSloppyStores) {<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>                  .build();<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        }<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>      } catch (InterruptedException e) {<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>      } catch (ExecutionException e) {<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        throw new IOException(e.getCause());<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>      } finally {<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        if (!allStoresOpened) {<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>          // something went wrong, close all opened stores<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>          for (HStore store : this.stores.values()) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>            try {<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>              store.close();<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>            } catch (IOException e) {<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>              LOG.warn("close store failed", e);<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>            }<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          }<a name="line.1075"></a>
+<span class="sourceLineNo">961</span>    if (this.writestate.writesEnabled) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      // Remove temporary data left over from old regions<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      fs.cleanupTempDir();<a name="line.965"></a>
+<span class="sourceLineNo">966</span>    }<a name="line.966"></a>
+<span class="sourceLineNo">967</span><a name="line.967"></a>
+<span class="sourceLineNo">968</span>    if (this.writestate.writesEnabled) {<a name="line.968"></a>
+<span class="sourceLineNo">969</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.969"></a>
+<span class="sourceLineNo">970</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.970"></a>
+<span class="sourceLineNo">971</span>      // these directories here on open.  We may be opening a region that was<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      // being split but we crashed in the middle of it all.<a name="line.972"></a>
+<span class="sourceLineNo">973</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.973"></a>
+<span class="sourceLineNo">974</span>      fs.cleanupAnySplitDetritus();<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      fs.cleanupMergesDir();<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    }<a name="line.976"></a>
+<span class="sourceLineNo">977</span><a name="line.977"></a>
+<span class="sourceLineNo">978</span>    // Initialize split policy<a name="line.978"></a>
+<span class="sourceLineNo">979</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.979"></a>
+<span class="sourceLineNo">980</span><a name="line.980"></a>
+<span class="sourceLineNo">981</span>    // Initialize flush policy<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.982"></a>
+<span class="sourceLineNo">983</span><a name="line.983"></a>
+<span class="sourceLineNo">984</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.984"></a>
+<span class="sourceLineNo">985</span>    for (HStore store: stores.values()) {<a name="line.985"></a>
+<span class="sourceLineNo">986</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<a name="line.986"></a>
+<span class="sourceLineNo">987</span>    }<a name="line.987"></a>
+<span class="sourceLineNo">988</span><a name="line.988"></a>
+<span class="sourceLineNo">989</span>    // Use maximum of log sequenceid or that which was found in stores<a name="line.989"></a>
+<span class="sourceLineNo">990</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.990"></a>
+<span class="sourceLineNo">991</span>    long maxSeqIdFromFile =<a name="line.991"></a>
+<span class="sourceLineNo">992</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.994"></a>
+<span class="sourceLineNo">995</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.995"></a>
+<span class="sourceLineNo">996</span>    // the max sequence id file.<a name="line.996"></a>
+<span class="sourceLineNo">997</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.997"></a>
+<span class="sourceLineNo">998</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.998"></a>
+<span class="sourceLineNo">999</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<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>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span><a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>    // A region can be reopened if failed a split; reset flags<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>    this.closing.set(false);<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    this.closed.set(false);<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span><a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>    if (coprocessorHost != null) {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>      coprocessorHost.postOpen();<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>    }<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span><a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>    status.markComplete("Region opened successfully");<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>    return nextSeqId;<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>  }<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span><a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>  /**<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>   * Open all Stores.<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>   * @param reporter<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>   * @param status<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>   * @return Highest sequenceId found out in a Store.<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>   * @throws IOException<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>   */<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>      throws IOException {<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    // Load in all the HStores.<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>    long maxSeqId = -1;<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>    long maxMemstoreTS = -1;<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span><a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>      // initialize each store in parallel<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>          @Override<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>          public HStore call() throws IOException {<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>            return instantiateHStore(family);<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>          }<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>        });<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>      }<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>      boolean allStoresOpened = false;<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>      boolean hasSloppyStores = false;<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>      try {<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>          HStore store = future.get();<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>          if (store.isSloppyMemStore()) {<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>            hasSloppyStores = true;<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>          }<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span><a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>              storeMaxSequenceId);<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>            maxSeqId = storeMaxSequenceId;<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>          }<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>          }<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span>        }<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>        allStoresOpened = true;<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>        if(hasSloppyStores) {<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>                  .build();<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1075"></a>
 <span class="sourceLineNo">1076</span>        }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      }<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    }<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>  }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span><a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>    // Initialize all the HStores<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>    status.setStatus("Warming up all the Stores");<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    try {<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>      initializeStores(reporter, status);<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>    } finally {<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>      status.markComplete("Done warming up.");<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>    }<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>  }<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>   * @return Map of StoreFiles by column family<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>   */<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    for (HStore store : stores.values()) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      if (storeFiles == null) {<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>        continue;<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>        storeFileNames.add(storeFile.getPath());<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      }<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>    }<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>    return allStoreFiles;<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>  }<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span><a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>  @VisibleForTesting<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>        mvcc);<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  }<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span><a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>        mvcc);<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span><a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>    // Store SeqId in HDFS when a region closes<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    // table is still online<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>        mvcc.getReadPoint());<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>    }<a name="line.1136"></a>
+<span class="sourceLineNo">1077</span>      } catch (InterruptedException e) {<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>      } catch (ExecutionException e) {<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>        throw new IOException(e.getCause());<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      } finally {<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>        if (!allStoresOpened) {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>          // something went wrong, close all opened stores<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>          for (HStore store : this.stores.values()) {<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>            try {<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>              store.close();<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>            } catch (IOException e) {<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>              LOG.warn("close store failed", e);<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>            }<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>      }<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>    }<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>  }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span><a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>    // Initialize all the HStores<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>    status.setStatus("Warming up all the Stores");<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>    try {<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>      initializeStores(reporter, status);<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>    } finally {<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>      status.markComplete("Done warming up.");<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>    }<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>  }<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span><a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>  /**<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>   * @return Map of StoreFiles by column family<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>   */<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>    for (HStore store : stores.values()) {<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>      if (storeFiles == null) {<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>        continue;<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span>      }<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>        storeFileNames.add(storeFile.getPath());<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>      }<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>    }<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>    return allStoreFiles;<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>  }<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span><a name="line.1128"></a>
+<span class="sourceLineNo">1129</span>  @VisibleForTesting<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>        mvcc);<a name="line.1136"></a>
 <span class="sourceLineNo">1137</span>  }<a name="line.1137"></a>
 <span class="sourceLineNo">1138</span><a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>  /**<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>   * @return True if this region has references.<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>   */<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>  public boolean hasReferences() {<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<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>  public void blockUpdates() {<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>    this.updatesLock.writeLock().lock();<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>  }<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span><a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>  public void unblockUpdates() {<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>    this.updatesLock.writeLock().unlock();<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>  }<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span><a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>    return hdfsBlocksDistribution;<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>  }<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span><a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>  /**<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>   * @param conf configuration<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>   * @param regionInfo encoded name of the region<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>   * @throws IOException<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>   */<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>  }<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span><a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>  /**<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>   * @param conf configuration<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>   * @param regionInfo encoded name of the region<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>   * @param tablePath the table directory<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>   * @throws IOException<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>   */<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1186"></a>
-<span class="sourceLineNo">1187</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1188"></a>
-<span class="sourceLineNo">1189</span><a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span>      if (locatedFileStatusList == null) {<a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>        continue;<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>      }<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span><a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>        Path p = status.getPath();<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>          // creation<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>              status.getBlockLocations());<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span>        } else {<a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>          throw new IOException("path=" + p<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>              + " doesn't look like a valid StoreFile");<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>        }<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>      }<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>    }<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>    return hdfsBlocksDistribution;<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>   * Increase the size of mem store in this region and the size of global mem<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>   * store<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>   */<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>  }<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span><a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>    if (this.rsAccounting != null) {<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>    }<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>    long dataSize =<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1234"></a>
+<span class="sourceLineNo">1139</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span>        mvcc);<a name="line.1145"></a>
+<span class="sourceLineNo">1146</span><a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>    // Store SeqId in HDFS when a region closes<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>    // table is still online<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span>        mvcc.getReadPoint());<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>    }<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>  }<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span><a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>  /**<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>   * @return True if this region has references.<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>   */<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>  public boolean hasReferences() {<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>  }<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span><a name="line.1162"></a>
+<span class="sourceLineNo">1163</span>  public void blockUpdates() {<a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>    this.updatesLock.writeLock().lock();<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>  }<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span><a name="line.1166"></a>
+<span class="sourceLineNo">1167</span>  public void unblockUpdates() {<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>    this.updatesLock.writeLock().unlock();<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>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1172"></a>
+<span class="sourceLineNo">1173</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1174"></a>
+<span class="sourceLineNo">1175</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>    return hdfsBlocksDistribution;<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span>  }<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span><a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>  /**<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>   * @param conf configuration<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1182"></a>
+<span class="sourceLineNo">1183</span>   * @param regionInfo encoded name of the region<a name="line.1183"></a>
+<span class="sourceLineNo">1184</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1184"></a>
+<span class="sourceLineNo">1185</span>   * @throws IOException<a name="line.1185"></a>
+<span class="sourceLineNo">1186</span>   */<a name="line.1186"></a>
+<span class="sourceLineNo">1187</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1187"></a>
+<span class="sourceLineNo">1188</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1188"></a>
+<span class="sourceLineNo">1189</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1189"></a>
+<span class="sourceLineNo">1190</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1190"></a>
+<span class="sourceLineNo">1191</span>  }<a name="line.1191"></a>
+<span class="sourceLineNo">1192</span><a name="line.1192"></a>
+<span class="sourceLineNo">1193</span>  /**<a name="line.1193"></a>
+<span class="sourceLineNo">1194</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1194"></a>
+<span class="sourceLineNo">1195</span>   * @param conf configuration<a name="line.1195"></a>
+<span class="sourceLineNo">1196</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1196"></a>
+<span class="sourceLineNo">1197</span>   * @param regionInfo encoded name of the region<a name="line.1197"></a>
+<span class="sourceLineNo">1198</span>   * @param tablePath the table directory<a name="line.1198"></a>
+<span class="sourceLineNo">1199</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1199"></a>
+<span class="sourceLineNo">1200</span>   * @throws IOException<a name="line.1200"></a>
+<span class="sourceLineNo">1201</span>   */<a name="line.1201"></a>
+<span class="sourceLineNo">1202</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1202"></a>
+<span class="sourceLineNo">1203</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1203"></a>
+<span class="sourceLineNo">1204</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1204"></a>
+<span class="sourceLineNo">1205</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1205"></a>
+<span class="sourceLineNo">1206</span><a name="line.1206"></a>
+<span class="sourceLineNo">1207</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1207"></a>
+<span class="sourceLineNo">1208</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1208"></a>
+<span class="sourceLineNo">1209</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1209"></a>
+<span class="sourceLineNo">1210</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1210"></a>
+<span class="sourceLineNo">1211</span>      if (locatedFileStatusList == null) {<a name="line.1211"></a>
+<span class="sourceLineNo">1212</span>        continue;<a name="line.1212"></a>
+<span class="sourceLineNo">1213</span>      }<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span><a name="line.1214"></a>
+<span class="sourceLineNo">1215</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1215"></a>
+<span class="sourceLineNo">1216</span>        Path p = status.getPath();<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1217"></a>
+<span class="sourceLineNo">1218</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span>          // creation<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1224"></a>
+<span class="sourceLineNo">1225</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1225"></a>
+<span class="sourceLineNo">1226</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1226"></a>
+<span class="sourceLineNo">1227</span>              status.getBlockLocations());<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span>        } else {<a name="line.1228"></a>
+<span class="sourceLineNo">1229</span>          throw new IOException("path=" + p<a name="line.1229"></a>
+<span class="sourceLineNo">1230</span>              + " doesn't look like a valid StoreFile");<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>    }<a name="line.1233"></a>
+<span class="sourceLineNo">1234</span>    return hdfsBlocksDistribution;<a name="line.1234"></a>
 <span class="sourceLineNo">1235</span>  }<a name="line.1235"></a>
 <span class="sourceLineNo">1236</span><a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>  }<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span><a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>    if (this.rsAccounting != null) {<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>    }<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>    long dataSize =<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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 checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    if (memStoreDataSize &lt; 0) {<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>    }<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>  }<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span><a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>  @Override<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>  public RegionInfo getRegionInfo() {<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>    return this.fs.getRegionInfo();<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>  }<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span><a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>  /**<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>   * @return Instance of {@link RegionServerServices} used by this HRegion.<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>   * Can be null.<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>   */<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>  RegionServerServices getRegionServerServices() {<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>    return this.rsServices;<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>  }<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span><a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>  @Override<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>  public long getReadRequestsCount() {<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>    return readRequestsCount.sum();<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>  }<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span><a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>  @Override<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>  public long getCpRequestsCount() {<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>    return cpRequestsCount.sum();<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>  @Override<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>  public long getFilteredReadRequestsCount() {<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>    return filteredReadRequestsCount.sum();<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>  @Override<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>  public long getWriteRequestsCount() {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    return writeRequestsCount.sum();<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>  }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>  @Override<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>  public long getMemStoreDataSize() {<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>    return memStoreSizing.getDataSize();<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>  @Override<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>  public long getMemStoreHeapSize() {<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>    return memStoreSizing.getHeapSize();<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>  }<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span><a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>  @Override<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>  public long getMemStoreOffHeapSize() {<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>    return memStoreSizing.getOffHeapSize();<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>  }<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span><a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>  /** @return store services for this region, to access services required by store level needs */<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>  public RegionServicesForStores getRegionServicesForStores() {<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>    return regionServicesForStores;<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>  @Override<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>  public long getNumMutationsWithoutWAL() {<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>    return numMutationsWithoutWAL.sum();<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>  @Override<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>  public long getDataInMemoryWithoutWAL() {<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>    return dataInMemoryWithoutWAL.sum();<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>  }<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span><a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>  @Override<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>  public long getBlockedRequestsCount() {<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>    return blockedRequestsCount.sum();<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>  }<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span><a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>  @Override<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>  public long getCheckAndMutateChecksPassed() {<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>    return checkAndMutateChecksPassed.sum();<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 long getCheckAndMutateChecksFailed() {<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    return checkAndMutateChecksFailed.sum();<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>  // TODO Needs to check whether we should expose our metrics system to CPs. If CPs themselves doing<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>  // the op and bypassing the core, this might be needed? Should be stop supporting the bypass<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>  // feature?<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>  public MetricsRegion getMetrics() {<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>    return metricsRegion;<a name="line.1342"></a>
+<span class="sourceLineNo">1237</span>  /**<a name="line.1237"></a>
+<span class="sourceLineNo">1238</span>   * Increase the size of mem store in this region and the size of global mem<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span>   * store<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span>   */<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>  }<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span><a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>    if (this.rsAccounting != null) {<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>    }<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>    long dataSize =<a name="line.1249"></a>
+<span class="sourceLineNo">1250</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1250"></a>
+<span class="sourceLineNo">1251</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>  }<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span><a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span>  }<a name="line.1256"></a>
+<span class="sourceLineNo">1257</span><a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>    if (this.rsAccounting != null) {<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>    }<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>    long dataSize =<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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>  private void checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>    if (memStoreDataSize &lt; 0) {<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>    }<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>  }<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span><a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>  @Override<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>  public RegionInfo getRegionInfo() {<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>    return this.fs.getRegionInfo();<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>  }<a name="line.1280"></a>
+<span class="sourceLineNo">1281</span><a name="line.1281"></a>
+<span class="sourceLineNo">1282</span>  /**<a name="l

<TRUNCATED>

[20/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
index db8431b..a8cb7c4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
@@ -885,7766 +885,7797 @@
 <span class="sourceLineNo">877</span>   * @return What the next sequence (edit) id should be.<a name="line.877"></a>
 <span class="sourceLineNo">878</span>   * @throws IOException e<a name="line.878"></a>
 <span class="sourceLineNo">879</span>   */<a name="line.879"></a>
-<span class="sourceLineNo">880</span>  private long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.880"></a>
-<span class="sourceLineNo">881</span><a name="line.881"></a>
-<span class="sourceLineNo">882</span>    //Refuse to open the region if there is no column family in the table<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.884"></a>
-<span class="sourceLineNo">885</span>          " should have at least one column family.");<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    long nextSeqId = -1;<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    try {<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.891"></a>
-<span class="sourceLineNo">892</span>      return nextSeqId;<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    } finally {<a name="line.893"></a>
-<span class="sourceLineNo">894</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      // At least it will be 0 otherwise.<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      if (nextSeqId == -1) {<a name="line.896"></a>
-<span class="sourceLineNo">897</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.897"></a>
-<span class="sourceLineNo">898</span>          " initialization.");<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      }<a name="line.899"></a>
-<span class="sourceLineNo">900</span>    }<a name="line.900"></a>
-<span class="sourceLineNo">901</span>  }<a name="line.901"></a>
-<span class="sourceLineNo">902</span><a name="line.902"></a>
-<span class="sourceLineNo">903</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.903"></a>
-<span class="sourceLineNo">904</span>      final MonitoredTask status) throws IOException {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    if (coprocessorHost != null) {<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      coprocessorHost.preOpen();<a name="line.907"></a>
-<span class="sourceLineNo">908</span>    }<a name="line.908"></a>
-<span class="sourceLineNo">909</span><a name="line.909"></a>
-<span class="sourceLineNo">910</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.910"></a>
-<span class="sourceLineNo">911</span>    // Only the primary replica should write .regioninfo<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      status.setStatus("Writing region info on filesystem");<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      fs.checkRegionInfoOnFilesystem();<a name="line.914"></a>
-<span class="sourceLineNo">915</span>    }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>    // Initialize all the HStores<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    status.setStatus("Initializing all the Stores");<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.920"></a>
-<span class="sourceLineNo">921</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.922"></a>
-<span class="sourceLineNo">923</span>      try {<a name="line.923"></a>
-<span class="sourceLineNo">924</span>        // update the stores that we are replaying<a name="line.924"></a>
-<span class="sourceLineNo">925</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        // Recover any edits if available.<a name="line.927"></a>
-<span class="sourceLineNo">928</span>        maxSeqId = Math.max(maxSeqId,<a name="line.928"></a>
-<span class="sourceLineNo">929</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        // Make sure mvcc is up to max.<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      } finally {<a name="line.932"></a>
-<span class="sourceLineNo">933</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        // update the stores that we are done replaying<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        stores.forEach(HStore::stopReplayingFromWAL);<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>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    this.writestate.flushRequested = false;<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    this.writestate.compacting.set(0);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>    if (this.writestate.writesEnabled) {<a name="line.944"></a>
-<span class="sourceLineNo">945</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      // Remove temporary data left over from old regions<a name="line.946"></a>
-<span class="sourceLineNo">947</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.947"></a>
-<span class="sourceLineNo">948</span>      fs.cleanupTempDir();<a name="line.948"></a>
-<span class="sourceLineNo">949</span>    }<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>    if (this.writestate.writesEnabled) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      // these directories here on open.  We may be opening a region that was<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      // being split but we crashed in the middle of it all.<a name="line.955"></a>
-<span class="sourceLineNo">956</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      fs.cleanupAnySplitDetritus();<a name="line.957"></a>
-<span class="sourceLineNo">958</span>      fs.cleanupMergesDir();<a name="line.958"></a>
-<span class="sourceLineNo">959</span>    }<a name="line.959"></a>
+<span class="sourceLineNo">880</span>  @VisibleForTesting<a name="line.880"></a>
+<span class="sourceLineNo">881</span>  long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>    //Refuse to open the region if there is no column family in the table<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.885"></a>
+<span class="sourceLineNo">886</span>          " should have at least one column family.");<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    }<a name="line.887"></a>
+<span class="sourceLineNo">888</span><a name="line.888"></a>
+<span class="sourceLineNo">889</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>    long nextSeqId = -1;<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    try {<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      return nextSeqId;<a name="line.893"></a>
+<span class="sourceLineNo">894</span>    } catch (IOException e) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      LOG.warn("Failed initialize of region= {}, starting to roll back memstore",<a name="line.895"></a>
+<span class="sourceLineNo">896</span>          getRegionInfo().getRegionNameAsString(), e);<a name="line.896"></a>
+<span class="sourceLineNo">897</span>      // global memstore size will be decreased when dropping memstore<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      try {<a name="line.898"></a>
+<span class="sourceLineNo">899</span>        //drop the memory used by memstore if open region fails<a name="line.899"></a>
+<span class="sourceLineNo">900</span>        dropMemStoreContents();<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      } catch (IOException ioE) {<a name="line.901"></a>
+<span class="sourceLineNo">902</span>        if (conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {<a name="line.902"></a>
+<span class="sourceLineNo">903</span>          LOG.warn("Failed drop memstore of region= {}, "<a name="line.903"></a>
+<span class="sourceLineNo">904</span>                  + "some chunks may not released forever since MSLAB is enabled",<a name="line.904"></a>
+<span class="sourceLineNo">905</span>              getRegionInfo().getRegionNameAsString());<a name="line.905"></a>
+<span class="sourceLineNo">906</span>        }<a name="line.906"></a>
+<span class="sourceLineNo">907</span><a name="line.907"></a>
+<span class="sourceLineNo">908</span>      }<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      throw e;<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    } finally {<a name="line.910"></a>
+<span class="sourceLineNo">911</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      // At least it will be 0 otherwise.<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      if (nextSeqId == -1) {<a name="line.913"></a>
+<span class="sourceLineNo">914</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.914"></a>
+<span class="sourceLineNo">915</span>          " initialization.");<a name="line.915"></a>
+<span class="sourceLineNo">916</span>      }<a name="line.916"></a>
+<span class="sourceLineNo">917</span>    }<a name="line.917"></a>
+<span class="sourceLineNo">918</span>  }<a name="line.918"></a>
+<span class="sourceLineNo">919</span><a name="line.919"></a>
+<span class="sourceLineNo">920</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.920"></a>
+<span class="sourceLineNo">921</span>      final MonitoredTask status) throws IOException {<a name="line.921"></a>
+<span class="sourceLineNo">922</span>    if (coprocessorHost != null) {<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.923"></a>
+<span class="sourceLineNo">924</span>      coprocessorHost.preOpen();<a name="line.924"></a>
+<span class="sourceLineNo">925</span>    }<a name="line.925"></a>
+<span class="sourceLineNo">926</span><a name="line.926"></a>
+<span class="sourceLineNo">927</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.927"></a>
+<span class="sourceLineNo">928</span>    // Only the primary replica should write .regioninfo<a name="line.928"></a>
+<span class="sourceLineNo">929</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>      status.setStatus("Writing region info on filesystem");<a name="line.930"></a>
+<span class="sourceLineNo">931</span>      fs.checkRegionInfoOnFilesystem();<a name="line.931"></a>
+<span class="sourceLineNo">932</span>    }<a name="line.932"></a>
+<span class="sourceLineNo">933</span><a name="line.933"></a>
+<span class="sourceLineNo">934</span>    // Initialize all the HStores<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    status.setStatus("Initializing all the Stores");<a name="line.935"></a>
+<span class="sourceLineNo">936</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.937"></a>
+<span class="sourceLineNo">938</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.938"></a>
+<span class="sourceLineNo">939</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.939"></a>
+<span class="sourceLineNo">940</span>      try {<a name="line.940"></a>
+<span class="sourceLineNo">941</span>        // update the stores that we are replaying<a name="line.941"></a>
+<span class="sourceLineNo">942</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.942"></a>
+<span class="sourceLineNo">943</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.943"></a>
+<span class="sourceLineNo">944</span>        // Recover any edits if available.<a name="line.944"></a>
+<span class="sourceLineNo">945</span>        maxSeqId = Math.max(maxSeqId,<a name="line.945"></a>
+<span class="sourceLineNo">946</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.946"></a>
+<span class="sourceLineNo">947</span>        // Make sure mvcc is up to max.<a name="line.947"></a>
+<span class="sourceLineNo">948</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      } finally {<a name="line.949"></a>
+<span class="sourceLineNo">950</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        // update the stores that we are done replaying<a name="line.951"></a>
+<span class="sourceLineNo">952</span>        stores.forEach(HStore::stopReplayingFromWAL);<a name="line.952"></a>
+<span class="sourceLineNo">953</span>      }<a name="line.953"></a>
+<span class="sourceLineNo">954</span>    }<a name="line.954"></a>
+<span class="sourceLineNo">955</span>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.955"></a>
+<span class="sourceLineNo">956</span><a name="line.956"></a>
+<span class="sourceLineNo">957</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.957"></a>
+<span class="sourceLineNo">958</span>    this.writestate.flushRequested = false;<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    this.writestate.compacting.set(0);<a name="line.959"></a>
 <span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>    // Initialize split policy<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.962"></a>
-<span class="sourceLineNo">963</span><a name="line.963"></a>
-<span class="sourceLineNo">964</span>    // Initialize flush policy<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.965"></a>
-<span class="sourceLineNo">966</span><a name="line.966"></a>
-<span class="sourceLineNo">967</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    for (HStore store: stores.values()) {<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<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>    // Use maximum of log sequenceid or that which was found in stores<a name="line.972"></a>
-<span class="sourceLineNo">973</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.973"></a>
-<span class="sourceLineNo">974</span>    long maxSeqIdFromFile =<a name="line.974"></a>
-<span class="sourceLineNo">975</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.975"></a>
-<span class="sourceLineNo">976</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.976"></a>
-<span class="sourceLineNo">977</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    // the max sequence id file.<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.985"></a>
-<span class="sourceLineNo">986</span><a name="line.986"></a>
-<span class="sourceLineNo">987</span>    // A region can be reopened if failed a split; reset flags<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    this.closing.set(false);<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    this.closed.set(false);<a name="line.989"></a>
-<span class="sourceLineNo">990</span><a name="line.990"></a>
-<span class="sourceLineNo">991</span>    if (coprocessorHost != null) {<a name="line.991"></a>
-<span class="sourceLineNo">992</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.992"></a>
-<span class="sourceLineNo">993</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.993"></a>
-<span class="sourceLineNo">994</span>      coprocessorHost.postOpen();<a name="line.994"></a>
-<span class="sourceLineNo">995</span>    }<a name="line.995"></a>
-<span class="sourceLineNo">996</span><a name="line.996"></a>
-<span class="sourceLineNo">997</span>    status.markComplete("Region opened successfully");<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    return nextSeqId;<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>   * Open all Stores.<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>   * @param reporter<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   * @param status<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>   * @return Highest sequenceId found out in a Store.<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * @throws IOException<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   */<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      throws IOException {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>    // Load in all the HStores.<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    long maxSeqId = -1;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    long maxMemstoreTS = -1;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span><a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span><a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      // initialize each store in parallel<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>          @Override<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>          public HStore call() throws IOException {<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>            return instantiateHStore(family);<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          }<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>        });<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      }<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>      boolean allStoresOpened = false;<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>      boolean hasSloppyStores = false;<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>      try {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>          HStore store = future.get();<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>          if (store.isSloppyMemStore()) {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            hasSloppyStores = true;<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>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>              storeMaxSequenceId);<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            maxSeqId = storeMaxSequenceId;<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>          }<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>          }<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>        }<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>        allStoresOpened = true;<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>        if(hasSloppyStores) {<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>                  .build();<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        }<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>      } catch (InterruptedException e) {<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>      } catch (ExecutionException e) {<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        throw new IOException(e.getCause());<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>      } finally {<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        if (!allStoresOpened) {<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>          // something went wrong, close all opened stores<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>          for (HStore store : this.stores.values()) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>            try {<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>              store.close();<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>            } catch (IOException e) {<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>              LOG.warn("close store failed", e);<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>            }<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          }<a name="line.1075"></a>
+<span class="sourceLineNo">961</span>    if (this.writestate.writesEnabled) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      // Remove temporary data left over from old regions<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      fs.cleanupTempDir();<a name="line.965"></a>
+<span class="sourceLineNo">966</span>    }<a name="line.966"></a>
+<span class="sourceLineNo">967</span><a name="line.967"></a>
+<span class="sourceLineNo">968</span>    if (this.writestate.writesEnabled) {<a name="line.968"></a>
+<span class="sourceLineNo">969</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.969"></a>
+<span class="sourceLineNo">970</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.970"></a>
+<span class="sourceLineNo">971</span>      // these directories here on open.  We may be opening a region that was<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      // being split but we crashed in the middle of it all.<a name="line.972"></a>
+<span class="sourceLineNo">973</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.973"></a>
+<span class="sourceLineNo">974</span>      fs.cleanupAnySplitDetritus();<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      fs.cleanupMergesDir();<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    }<a name="line.976"></a>
+<span class="sourceLineNo">977</span><a name="line.977"></a>
+<span class="sourceLineNo">978</span>    // Initialize split policy<a name="line.978"></a>
+<span class="sourceLineNo">979</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.979"></a>
+<span class="sourceLineNo">980</span><a name="line.980"></a>
+<span class="sourceLineNo">981</span>    // Initialize flush policy<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.982"></a>
+<span class="sourceLineNo">983</span><a name="line.983"></a>
+<span class="sourceLineNo">984</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.984"></a>
+<span class="sourceLineNo">985</span>    for (HStore store: stores.values()) {<a name="line.985"></a>
+<span class="sourceLineNo">986</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<a name="line.986"></a>
+<span class="sourceLineNo">987</span>    }<a name="line.987"></a>
+<span class="sourceLineNo">988</span><a name="line.988"></a>
+<span class="sourceLineNo">989</span>    // Use maximum of log sequenceid or that which was found in stores<a name="line.989"></a>
+<span class="sourceLineNo">990</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.990"></a>
+<span class="sourceLineNo">991</span>    long maxSeqIdFromFile =<a name="line.991"></a>
+<span class="sourceLineNo">992</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.994"></a>
+<span class="sourceLineNo">995</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.995"></a>
+<span class="sourceLineNo">996</span>    // the max sequence id file.<a name="line.996"></a>
+<span class="sourceLineNo">997</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.997"></a>
+<span class="sourceLineNo">998</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.998"></a>
+<span class="sourceLineNo">999</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<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>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span><a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>    // A region can be reopened if failed a split; reset flags<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>    this.closing.set(false);<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    this.closed.set(false);<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span><a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>    if (coprocessorHost != null) {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>      coprocessorHost.postOpen();<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>    }<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span><a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>    status.markComplete("Region opened successfully");<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>    return nextSeqId;<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>  }<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span><a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>  /**<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>   * Open all Stores.<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>   * @param reporter<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>   * @param status<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>   * @return Highest sequenceId found out in a Store.<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>   * @throws IOException<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>   */<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>      throws IOException {<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    // Load in all the HStores.<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>    long maxSeqId = -1;<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>    long maxMemstoreTS = -1;<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span><a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>      // initialize each store in parallel<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>          @Override<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>          public HStore call() throws IOException {<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>            return instantiateHStore(family);<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>          }<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>        });<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>      }<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>      boolean allStoresOpened = false;<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>      boolean hasSloppyStores = false;<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>      try {<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>          HStore store = future.get();<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>          if (store.isSloppyMemStore()) {<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>            hasSloppyStores = true;<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>          }<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span><a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>              storeMaxSequenceId);<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>            maxSeqId = storeMaxSequenceId;<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>          }<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>          }<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span>        }<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>        allStoresOpened = true;<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>        if(hasSloppyStores) {<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>                  .build();<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1075"></a>
 <span class="sourceLineNo">1076</span>        }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      }<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    }<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>  }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span><a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>    // Initialize all the HStores<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>    status.setStatus("Warming up all the Stores");<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    try {<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>      initializeStores(reporter, status);<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>    } finally {<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>      status.markComplete("Done warming up.");<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>    }<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>  }<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>   * @return Map of StoreFiles by column family<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>   */<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    for (HStore store : stores.values()) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      if (storeFiles == null) {<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>        continue;<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>        storeFileNames.add(storeFile.getPath());<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      }<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>    }<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>    return allStoreFiles;<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>  }<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span><a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>  @VisibleForTesting<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>        mvcc);<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  }<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span><a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>        mvcc);<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span><a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>    // Store SeqId in HDFS when a region closes<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    // table is still online<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>        mvcc.getReadPoint());<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>    }<a name="line.1136"></a>
+<span class="sourceLineNo">1077</span>      } catch (InterruptedException e) {<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>      } catch (ExecutionException e) {<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>        throw new IOException(e.getCause());<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      } finally {<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>        if (!allStoresOpened) {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>          // something went wrong, close all opened stores<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>          for (HStore store : this.stores.values()) {<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>            try {<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>              store.close();<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>            } catch (IOException e) {<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>              LOG.warn("close store failed", e);<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>            }<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>      }<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>    }<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>  }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span><a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>    // Initialize all the HStores<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>    status.setStatus("Warming up all the Stores");<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>    try {<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>      initializeStores(reporter, status);<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>    } finally {<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>      status.markComplete("Done warming up.");<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>    }<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>  }<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span><a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>  /**<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>   * @return Map of StoreFiles by column family<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>   */<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>    for (HStore store : stores.values()) {<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>      if (storeFiles == null) {<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>        continue;<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span>      }<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>        storeFileNames.add(storeFile.getPath());<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>      }<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>    }<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>    return allStoreFiles;<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>  }<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span><a name="line.1128"></a>
+<span class="sourceLineNo">1129</span>  @VisibleForTesting<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>        mvcc);<a name="line.1136"></a>
 <span class="sourceLineNo">1137</span>  }<a name="line.1137"></a>
 <span class="sourceLineNo">1138</span><a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>  /**<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>   * @return True if this region has references.<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>   */<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>  public boolean hasReferences() {<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<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>  public void blockUpdates() {<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>    this.updatesLock.writeLock().lock();<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>  }<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span><a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>  public void unblockUpdates() {<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>    this.updatesLock.writeLock().unlock();<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>  }<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span><a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>    return hdfsBlocksDistribution;<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>  }<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span><a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>  /**<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>   * @param conf configuration<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>   * @param regionInfo encoded name of the region<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>   * @throws IOException<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>   */<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>  }<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span><a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>  /**<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>   * @param conf configuration<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>   * @param regionInfo encoded name of the region<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>   * @param tablePath the table directory<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>   * @throws IOException<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>   */<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1186"></a>
-<span class="sourceLineNo">1187</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1188"></a>
-<span class="sourceLineNo">1189</span><a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span>      if (locatedFileStatusList == null) {<a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>        continue;<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>      }<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span><a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>        Path p = status.getPath();<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>          // creation<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>              status.getBlockLocations());<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span>        } else {<a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>          throw new IOException("path=" + p<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>              + " doesn't look like a valid StoreFile");<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>        }<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>      }<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>    }<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>    return hdfsBlocksDistribution;<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>   * Increase the size of mem store in this region and the size of global mem<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>   * store<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>   */<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>  }<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span><a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>    if (this.rsAccounting != null) {<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>    }<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>    long dataSize =<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1234"></a>
+<span class="sourceLineNo">1139</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span>        mvcc);<a name="line.1145"></a>
+<span class="sourceLineNo">1146</span><a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>    // Store SeqId in HDFS when a region closes<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>    // table is still online<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span>        mvcc.getReadPoint());<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>    }<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>  }<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span><a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>  /**<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>   * @return True if this region has references.<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>   */<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>  public boolean hasReferences() {<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>  }<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span><a name="line.1162"></a>
+<span class="sourceLineNo">1163</span>  public void blockUpdates() {<a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>    this.updatesLock.writeLock().lock();<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>  }<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span><a name="line.1166"></a>
+<span class="sourceLineNo">1167</span>  public void unblockUpdates() {<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>    this.updatesLock.writeLock().unlock();<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>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1172"></a>
+<span class="sourceLineNo">1173</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1174"></a>
+<span class="sourceLineNo">1175</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>    return hdfsBlocksDistribution;<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span>  }<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span><a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>  /**<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>   * @param conf configuration<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1182"></a>
+<span class="sourceLineNo">1183</span>   * @param regionInfo encoded name of the region<a name="line.1183"></a>
+<span class="sourceLineNo">1184</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1184"></a>
+<span class="sourceLineNo">1185</span>   * @throws IOException<a name="line.1185"></a>
+<span class="sourceLineNo">1186</span>   */<a name="line.1186"></a>
+<span class="sourceLineNo">1187</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1187"></a>
+<span class="sourceLineNo">1188</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1188"></a>
+<span class="sourceLineNo">1189</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1189"></a>
+<span class="sourceLineNo">1190</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1190"></a>
+<span class="sourceLineNo">1191</span>  }<a name="line.1191"></a>
+<span class="sourceLineNo">1192</span><a name="line.1192"></a>
+<span class="sourceLineNo">1193</span>  /**<a name="line.1193"></a>
+<span class="sourceLineNo">1194</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1194"></a>
+<span class="sourceLineNo">1195</span>   * @param conf configuration<a name="line.1195"></a>
+<span class="sourceLineNo">1196</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1196"></a>
+<span class="sourceLineNo">1197</span>   * @param regionInfo encoded name of the region<a name="line.1197"></a>
+<span class="sourceLineNo">1198</span>   * @param tablePath the table directory<a name="line.1198"></a>
+<span class="sourceLineNo">1199</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1199"></a>
+<span class="sourceLineNo">1200</span>   * @throws IOException<a name="line.1200"></a>
+<span class="sourceLineNo">1201</span>   */<a name="line.1201"></a>
+<span class="sourceLineNo">1202</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1202"></a>
+<span class="sourceLineNo">1203</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1203"></a>
+<span class="sourceLineNo">1204</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1204"></a>
+<span class="sourceLineNo">1205</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1205"></a>
+<span class="sourceLineNo">1206</span><a name="line.1206"></a>
+<span class="sourceLineNo">1207</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1207"></a>
+<span class="sourceLineNo">1208</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1208"></a>
+<span class="sourceLineNo">1209</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1209"></a>
+<span class="sourceLineNo">1210</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1210"></a>
+<span class="sourceLineNo">1211</span>      if (locatedFileStatusList == null) {<a name="line.1211"></a>
+<span class="sourceLineNo">1212</span>        continue;<a name="line.1212"></a>
+<span class="sourceLineNo">1213</span>      }<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span><a name="line.1214"></a>
+<span class="sourceLineNo">1215</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1215"></a>
+<span class="sourceLineNo">1216</span>        Path p = status.getPath();<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1217"></a>
+<span class="sourceLineNo">1218</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span>          // creation<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1224"></a>
+<span class="sourceLineNo">1225</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1225"></a>
+<span class="sourceLineNo">1226</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1226"></a>
+<span class="sourceLineNo">1227</span>              status.getBlockLocations());<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span>        } else {<a name="line.1228"></a>
+<span class="sourceLineNo">1229</span>          throw new IOException("path=" + p<a name="line.1229"></a>
+<span class="sourceLineNo">1230</span>              + " doesn't look like a valid StoreFile");<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>    }<a name="line.1233"></a>
+<span class="sourceLineNo">1234</span>    return hdfsBlocksDistribution;<a name="line.1234"></a>
 <span class="sourceLineNo">1235</span>  }<a name="line.1235"></a>
 <span class="sourceLineNo">1236</span><a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>  }<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span><a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>    if (this.rsAccounting != null) {<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>    }<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>    long dataSize =<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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 checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    if (memStoreDataSize &lt; 0) {<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>    }<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>  }<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span><a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>  @Override<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>  public RegionInfo getRegionInfo() {<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>    return this.fs.getRegionInfo();<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>  }<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span><a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>  /**<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>   * @return Instance of {@link RegionServerServices} used by this HRegion.<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>   * Can be null.<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>   */<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>  RegionServerServices getRegionServerServices() {<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>    return this.rsServices;<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>  }<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span><a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>  @Override<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>  public long getReadRequestsCount() {<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>    return readRequestsCount.sum();<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>  }<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span><a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>  @Override<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>  public long getCpRequestsCount() {<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>    return cpRequestsCount.sum();<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>  @Override<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>  public long getFilteredReadRequestsCount() {<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>    return filteredReadRequestsCount.sum();<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>  @Override<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>  public long getWriteRequestsCount() {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    return writeRequestsCount.sum();<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>  }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>  @Override<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>  public long getMemStoreDataSize() {<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>    return memStoreSizing.getDataSize();<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>  @Override<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>  public long getMemStoreHeapSize() {<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>    return memStoreSizing.getHeapSize();<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>  }<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span><a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>  @Override<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>  public long getMemStoreOffHeapSize() {<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>    return memStoreSizing.getOffHeapSize();<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>  }<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span><a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>  /** @return store services for this region, to access services required by store level needs */<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>  public RegionServicesForStores getRegionServicesForStores() {<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>    return regionServicesForStores;<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>  @Override<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>  public long getNumMutationsWithoutWAL() {<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>    return numMutationsWithoutWAL.sum();<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>  @Override<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>  public long getDataInMemoryWithoutWAL() {<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>    return dataInMemoryWithoutWAL.sum();<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>  }<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span><a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>  @Override<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>  public long getBlockedRequestsCount() {<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>    return blockedRequestsCount.sum();<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>  }<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span><a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>  @Override<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>  public long getCheckAndMutateChecksPassed() {<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>    return checkAndMutateChecksPassed.sum();<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 long getCheckAndMutateChecksFailed() {<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    return checkAndMutateChecksFailed.sum();<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>  // TODO Needs to check whether we should expose our metrics system to CPs. If CPs themselves doing<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>  // the op and bypassing the core, this might be needed? Should be stop supporting the bypass<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>  // feature?<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>  public MetricsRegion getMetrics() {<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>    return metricsRegion;<a name="line.1342"></a>
+<span class="sourceLineNo">1237</span>  /**<a name="line.1237"></a>
+<span class="sourceLineNo">1238</span>   * Increase the size of mem store in this region and the size of global mem<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span>   * store<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span>   */<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>  }<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span><a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>    if (this.rsAccounting != null) {<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>    }<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>    long dataSize =<a name="line.1249"></a>
+<span class="sourceLineNo">1250</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1250"></a>
+<span class="sourceLineNo">1251</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>  }<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span><a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span>  }<a name="line.1256"></a>
+<span class="sourceLineNo">1257</span><a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>    if (this.rsAccounting != null) {<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>    }<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>    long dataSize =<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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>  private void checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>    if (memStoreDataSize &lt; 0) {<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>    }<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>  }<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span><a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>  @Override<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>  public RegionInfo getRegionInfo() {<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>    return this.fs.getRegionInfo();<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>  }<a name="line.1280"></a>
+<span class="sourceLineNo">1281</span><a name="line.1281"></a>
+<span class="sourceLineNo">1282</span>  /**<a name="line.1282">

<TRUNCATED>

[50/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index b279072..6098f6a 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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,10 +281,10 @@
 <th><img src="images/icon_warning_sml.gif" alt="" />&#160;Warnings</th>
 <th><img src="images/icon_error_sml.gif" alt="" />&#160;Errors</th></tr>
 <tr class="b">
-<td>3712</td>
+<td>3714</td>
 <td>0</td>
 <td>0</td>
-<td>15385</td></tr></table></div>
+<td>15386</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -8069,1651 +8069,1656 @@
 <td>0</td>
 <td>4</td></tr>
 <tr class="a">
+<td><a href="#org.apache.hadoop.hbase.rest.model.TestScannerModel.java">org/apache/hadoop/hbase/rest/model/TestScannerModel.java</a></td>
+<td>0</td>
+<td>0</td>
+<td>1</td></tr>
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rest.model.TestStorageClusterStatusModel.java">org/apache/hadoop/hbase/rest/model/TestStorageClusterStatusModel.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rest.model.VersionModel.java">org/apache/hadoop/hbase/rest/model/VersionModel.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rest.provider.JAXBContextResolver.java">org/apache/hadoop/hbase/rest/provider/JAXBContextResolver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rest.provider.consumer.ProtobufMessageBodyConsumer.java">org/apache/hadoop/hbase/rest/provider/consumer/ProtobufMessageBodyConsumer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rest.provider.producer.PlainTextMessageBodyProducer.java">org/apache/hadoop/hbase/rest/provider/producer/PlainTextMessageBodyProducer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rsgroup.IntegrationTestRSGroup.java">org/apache/hadoop/hbase/rsgroup/IntegrationTestRSGroup.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rsgroup.RSGroupAdminServer.java">org/apache/hadoop/hbase/rsgroup/RSGroupAdminServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rsgroup.RSGroupInfoManagerImpl.java">org/apache/hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.AbstractHBaseSaslRpcClient.java">org/apache/hadoop/hbase/security/AbstractHBaseSaslRpcClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.AccessDeniedException.java">org/apache/hadoop/hbase/security/AccessDeniedException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.AuthMethod.java">org/apache/hadoop/hbase/security/AuthMethod.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.CryptoAESUnwrapHandler.java">org/apache/hadoop/hbase/security/CryptoAESUnwrapHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.CryptoAESWrapHandler.java">org/apache/hadoop/hbase/security/CryptoAESWrapHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.EncryptionUtil.java">org/apache/hadoop/hbase/security/EncryptionUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.HBaseKerberosUtils.java">org/apache/hadoop/hbase/security/HBaseKerberosUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.HBasePolicyProvider.java">org/apache/hadoop/hbase/security/HBasePolicyProvider.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.HBaseSaslRpcClient.java">org/apache/hadoop/hbase/security/HBaseSaslRpcClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.HBaseSaslRpcServer.java">org/apache/hadoop/hbase/security/HBaseSaslRpcServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.HadoopSecurityEnabledUserProviderForTesting.java">org/apache/hadoop/hbase/security/HadoopSecurityEnabledUserProviderForTesting.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.NettyHBaseRpcConnectionHeaderHandler.java">org/apache/hadoop/hbase/security/NettyHBaseRpcConnectionHeaderHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.NettyHBaseSaslRpcClient.java">org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.NettyHBaseSaslRpcClientHandler.java">org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.SaslChallengeDecoder.java">org/apache/hadoop/hbase/security/SaslChallengeDecoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.SaslStatus.java">org/apache/hadoop/hbase/security/SaslStatus.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.SaslUnwrapHandler.java">org/apache/hadoop/hbase/security/SaslUnwrapHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.SaslUtil.java">org/apache/hadoop/hbase/security/SaslUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.SecurityInfo.java">org/apache/hadoop/hbase/security/SecurityInfo.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.SecurityUtil.java">org/apache/hadoop/hbase/security/SecurityUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.Superusers.java">org/apache/hadoop/hbase/security/Superusers.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.TestSecureIPC.java">org/apache/hadoop/hbase/security/TestSecureIPC.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.TestUser.java">org/apache/hadoop/hbase/security/TestUser.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.TestUsersOperationsWithSecureHadoop.java">org/apache/hadoop/hbase/security/TestUsersOperationsWithSecureHadoop.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.User.java">org/apache/hadoop/hbase/security/User.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.access.AccessControlClient.java">org/apache/hadoop/hbase/security/access/AccessControlClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>48</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.access.AccessControlFilter.java">org/apache/hadoop/hbase/security/access/AccessControlFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.access.AccessControlLists.java">org/apache/hadoop/hbase/security/access/AccessControlLists.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.access.AccessControlUtil.java">org/apache/hadoop/hbase/security/access/AccessControlUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>40</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.access.AccessController.java">org/apache/hadoop/hbase/security/access/AccessController.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>25</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.access.AuthResult.java">org/apache/hadoop/hbase/security/access/AuthResult.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.access.Permission.java">org/apache/hadoop/hbase/security/access/Permission.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.access.SecureTestUtil.java">org/apache/hadoop/hbase/security/access/SecureTestUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.access.ShadedAccessControlUtil.java">org/apache/hadoop/hbase/security/access/ShadedAccessControlUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>49</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.access.TableAuthManager.java">org/apache/hadoop/hbase/security/access/TableAuthManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>43</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.access.TablePermission.java">org/apache/hadoop/hbase/security/access/TablePermission.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.access.TestAccessControlFilter.java">org/apache/hadoop/hbase/security/access/TestAccessControlFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.access.TestAccessController.java">org/apache/hadoop/hbase/security/access/TestAccessController.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>18</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.access.TestAccessController2.java">org/apache/hadoop/hbase/security/access/TestAccessController2.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.access.TestCellACLWithMultipleVersions.java">org/apache/hadoop/hbase/security/access/TestCellACLWithMultipleVersions.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.access.TestCellACLs.java">org/apache/hadoop/hbase/security/access/TestCellACLs.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.access.TestNamespaceCommands.java">org/apache/hadoop/hbase/security/access/TestNamespaceCommands.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.access.TestTablePermissions.java">org/apache/hadoop/hbase/security/access/TestTablePermissions.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.access.TestWithDisabledAuthorization.java">org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.access.UserPermission.java">org/apache/hadoop/hbase/security/access/UserPermission.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.access.ZKPermissionWatcher.java">org/apache/hadoop/hbase/security/access/ZKPermissionWatcher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.token.AuthenticationKey.java">org/apache/hadoop/hbase/security/token/AuthenticationKey.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.token.AuthenticationTokenIdentifier.java">org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.token.AuthenticationTokenSecretManager.java">org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.token.AuthenticationTokenSelector.java">org/apache/hadoop/hbase/security/token/AuthenticationTokenSelector.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.token.FsDelegationToken.java">org/apache/hadoop/hbase/security/token/FsDelegationToken.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.token.SecureTestCluster.java">org/apache/hadoop/hbase/security/token/SecureTestCluster.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.token.TestTokenAuthentication.java">org/apache/hadoop/hbase/security/token/TestTokenAuthentication.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.token.TestZKSecretWatcher.java">org/apache/hadoop/hbase/security/token/TestZKSecretWatcher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.token.TokenProvider.java">org/apache/hadoop/hbase/security/token/TokenProvider.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.token.TokenUtil.java">org/apache/hadoop/hbase/security/token/TokenUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.token.ZKSecretWatcher.java">org/apache/hadoop/hbase/security/token/ZKSecretWatcher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.CellVisibility.java">org/apache/hadoop/hbase/security/visibility/CellVisibility.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.DefaultVisibilityLabelServiceImpl.java">org/apache/hadoop/hbase/security/visibility/DefaultVisibilityLabelServiceImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.DefinedSetFilterScanLabelGenerator.java">org/apache/hadoop/hbase/security/visibility/DefinedSetFilterScanLabelGenerator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.EnforcingScanLabelGenerator.java">org/apache/hadoop/hbase/security/visibility/EnforcingScanLabelGenerator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.ExpAsStringVisibilityLabelServiceImpl.java">org/apache/hadoop/hbase/security/visibility/ExpAsStringVisibilityLabelServiceImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.ExpressionExpander.java">org/apache/hadoop/hbase/security/visibility/ExpressionExpander.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.ExpressionParser.java">org/apache/hadoop/hbase/security/visibility/ExpressionParser.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.FeedUserAuthScanLabelGenerator.java">org/apache/hadoop/hbase/security/visibility/FeedUserAuthScanLabelGenerator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.LabelFilteringScanLabelGenerator.java">org/apache/hadoop/hbase/security/visibility/LabelFilteringScanLabelGenerator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.LoadTestDataGeneratorWithVisibilityLabels.java">org/apache/hadoop/hbase/security/visibility/LoadTestDataGeneratorWithVisibilityLabels.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.ScanLabelGenerator.java">org/apache/hadoop/hbase/security/visibility/ScanLabelGenerator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.SimpleScanLabelGenerator.java">org/apache/hadoop/hbase/security/visibility/SimpleScanLabelGenerator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.TestExpressionExpander.java">org/apache/hadoop/hbase/security/visibility/TestExpressionExpander.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.TestExpressionParser.java">org/apache/hadoop/hbase/security/visibility/TestExpressionParser.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.TestVisibilityLabels.java">org/apache/hadoop/hbase/security/visibility/TestVisibilityLabels.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.TestVisibilityLabelsOpWithDifferentUsersNoACL.java">org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsOpWithDifferentUsersNoACL.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.TestVisibilityLabelsReplication.java">org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsReplication.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.TestVisibilityLabelsWithACL.java">org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsWithACL.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.TestVisibilityLabelsWithCustomVisLabService.java">org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsWithCustomVisLabService.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.TestVisibilityLabelsWithDefaultVisLabelService.java">org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsWithDefaultVisLabelService.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.TestVisibilityLabelsWithDeletes.java">org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsWithDeletes.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.TestVisibilityLablesWithGroups.java">org/apache/hadoop/hbase/security/visibility/TestVisibilityLablesWithGroups.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.VisibilityClient.java">org/apache/hadoop/hbase/security/visibility/VisibilityClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>38</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.VisibilityConstants.java">org/apache/hadoop/hbase/security/visibility/VisibilityConstants.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.VisibilityController.java">org/apache/hadoop/hbase/security/visibility/VisibilityController.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.VisibilityExpEvaluator.java">org/apache/hadoop/hbase/security/visibility/VisibilityExpEvaluator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.VisibilityLabelFilter.java">org/apache/hadoop/hbase/security/visibility/VisibilityLabelFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.VisibilityLabelService.java">org/apache/hadoop/hbase/security/visibility/VisibilityLabelService.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.VisibilityLabelServiceManager.java">org/apache/hadoop/hbase/security/visibility/VisibilityLabelServiceManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.VisibilityLabelsCache.java">org/apache/hadoop/hbase/security/visibility/VisibilityLabelsCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.VisibilityLabelsValidator.java">org/apache/hadoop/hbase/security/visibility/VisibilityLabelsValidator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.VisibilityNewVersionBehaivorTracker.java">org/apache/hadoop/hbase/security/visibility/VisibilityNewVersionBehaivorTracker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.VisibilityReplicationEndpoint.java">org/apache/hadoop/hbase/security/visibility/VisibilityReplicationEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.VisibilityScanDeleteTracker.java">org/apache/hadoop/hbase/security/visibility/VisibilityScanDeleteTracker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.VisibilityTestUtil.java">org/apache/hadoop/hbase/security/visibility/VisibilityTestUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.VisibilityUtils.java">org/apache/hadoop/hbase/security/visibility/VisibilityUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.visibility.ZKVisibilityLabelWatcher.java">org/apache/hadoop/hbase/security/visibility/ZKVisibilityLabelWatcher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil.java">org/apache/hadoop/hbase/shaded/protobuf/ProtobufUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>184</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.shaded.protobuf.RequestConverter.java">org/apache/hadoop/hbase/shaded/protobuf/RequestConverter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>114</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.shaded.protobuf.ResponseConverter.java">org/apache/hadoop/hbase/shaded/protobuf/ResponseConverter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>25</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.shaded.protobuf.TestProtobufUtil.java">org/apache/hadoop/hbase/shaded/protobuf/TestProtobufUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.snapshot.ClientSnapshotDescriptionUtils.java">org/apache/hadoop/hbase/snapshot/ClientSnapshotDescriptionUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.snapshot.CorruptedSnapshotException.java">org/apache/hadoop/hbase/snapshot/CorruptedSnapshotException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.snapshot.CreateSnapshot.java">org/apache/hadoop/hbase/snapshot/CreateSnapshot.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>40</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.snapshot.ExportSnapshot.java">org/apache/hadoop/hbase/snapshot/ExportSnapshot.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.snapshot.HBaseSnapshotException.java">org/apache/hadoop/hbase/snapshot/HBaseSnapshotException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.snapshot.MobSnapshotTestingUtils.java">org/apache/hadoop/hbase/snapshot/MobSnapshotTestingUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.snapshot.RestoreSnapshotException.java">org/apache/hadoop/hbase/snapshot/RestoreSnapshotException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper.java">org/apache/hadoop/hbase/snapshot/RestoreSnapshotHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>17</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.snapshot.SnapshotCreationException.java">org/apache/hadoop/hbase/snapshot/SnapshotCreationException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils.java">org/apache/hadoop/hbase/snapshot/SnapshotDescriptionUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.snapshot.SnapshotDoesNotExistException.java">org/apache/hadoop/hbase/snapshot/SnapshotDoesNotExistException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.snapshot.SnapshotExistsException.java">org/apache/hadoop/hbase/snapshot/SnapshotExistsException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.snapshot.SnapshotInfo.java">org/apache/hadoop/hbase/snapshot/SnapshotInfo.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.snapshot.SnapshotManifest.java">org/apache/hadoop/hbase/snapshot/SnapshotManifest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.snapshot.SnapshotManifestV2.java">org/apache/hadoop/hbase/snapshot/SnapshotManifestV2.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.snapshot.SnapshotTestingUtils.java">org/apache/hadoop/hbase/snapshot/SnapshotTestingUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>27</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.snapshot.TablePartiallyOpenException.java">org/apache/hadoop/hbase/snapshot/TablePartiallyOpenException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.snapshot.TestExportSnapshot.java">org/apache/hadoop/hbase/snapshot/TestExportSnapshot.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.snapshot.TestFlushSnapshotFromClient.java">org/apache/hadoop/hbase/snapshot/TestFlushSnapshotFromClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.snapshot.TestMobExportSnapshot.java">org/apache/hadoop/hbase/snapshot/TestMobExportSnapshot.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.snapshot.TestMobSecureExportSnapshot.java">org/apache/hadoop/hbase/snapshot/TestMobSecureExportSnapshot.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.snapshot.TestRestoreSnapshotHelper.java">org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.test.IntegrationTestBigLinkedList.java">org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>35</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.test.IntegrationTestBigLinkedListWithVisibility.java">org/apache/hadoop/hbase/test/IntegrationTestBigLinkedListWithVisibility.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.test.IntegrationTestLoadAndVerify.java">org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>76</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.test.IntegrationTestReplication.java">org/apache/hadoop/hbase/test/IntegrationTestReplication.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.test.IntegrationTestTimeBoundedMultiGetRequestsWithRegionReplicas.java">org/apache/hadoop/hbase/test/IntegrationTestTimeBoundedMultiGetRequestsWithRegionReplicas.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.test.IntegrationTestTimeBoundedRequestsWithRegionReplicas.java">org/apache/hadoop/hbase/test/IntegrationTestTimeBoundedRequestsWithRegionReplicas.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.test.IntegrationTestWithCellVisibilityLoadAndVerify.java">org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.thrift.DemoClient.java">org/apache/hadoop/hbase/thrift/DemoClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>242</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.thrift.HttpDoAsClient.java">org/apache/hadoop/hbase/thrift/HttpDoAsClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.thrift2.DemoClient.java">org/apache/hadoop/hbase/thrift2/DemoClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.thrift2.ThriftServer.java">org/apache/hadoop/hbase/thrift2/ThriftServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.tool.Canary.java">org/apache/hadoop/hbase/tool/Canary.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>43</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.tool.LoadIncrementalHFiles.java">org/apache/hadoop/hbase/tool/LoadIncrementalHFiles.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.tool.MapreduceTestingShim.java">org/apache/hadoop/hbase/tool/MapreduceTestingShim.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.tool.TestCanaryTool.java">org/apache/hadoop/hbase/tool/TestCanaryTool.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.tool.TestLoadIncrementalHFiles.java">org/apache/hadoop/hbase/tool/TestLoadIncrementalHFiles.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.tool.TestLoadIncrementalHFilesSplitRecovery.java">org/apache/hadoop/hbase/tool/TestLoadIncrementalHFilesSplitRecovery.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.trace.IntegrationTestSendTraceRequests.java">org/apache/hadoop/hbase/trace/IntegrationTestSendTraceRequests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.trace.SpanReceiverHost.java">org/apache/hadoop/hbase/trace/SpanReceiverHost.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.trace.TraceTree.java">org/apache/hadoop/hbase/trace/TraceTree.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.trace.TraceUtil.java">org/apache/hadoop/hbase/trace/TraceUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.types.TestCopyOnWriteMaps.java">org/apache/hadoop/hbase/types/TestCopyOnWriteMaps.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.types.TestOrderedBlob.java">org/apache/hadoop/hbase/types/TestOrderedBlob.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.types.TestOrderedString.java">org/apache/hadoop/hbase/types/TestOrderedString.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.types.TestStruct.java">org/apache/hadoop/hbase/types/TestStruct.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>21</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.types.TestTerminatedWrapper.java">org/apache/hadoop/hbase/types/TestTerminatedWrapper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.types.TestUnion2.java">org/apache/hadoop/hbase/types/TestUnion2.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.AbstractByteRange.java">org/apache/hadoop/hbase/util/AbstractByteRange.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.AbstractFileStatusFilter.java">org/apache/hadoop/hbase/util/AbstractFileStatusFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.AbstractHBaseTool.java">org/apache/hadoop/hbase/util/AbstractHBaseTool.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.AbstractPositionedByteRange.java">org/apache/hadoop/hbase/util/AbstractPositionedByteRange.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.Addressing.java">org/apache/hadoop/hbase/util/Addressing.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.AtomicUtils.java">org/apache/hadoop/hbase/util/AtomicUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.AvlUtil.java">org/apache/hadoop/hbase/util/AvlUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.BaseTestHBaseFsck.java">org/apache/hadoop/hbase/util/BaseTestHBaseFsck.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.BloomContext.java">org/apache/hadoop/hbase/util/BloomContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.BloomFilter.java">org/apache/hadoop/hbase/util/BloomFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.BloomFilterChunk.java">org/apache/hadoop/hbase/util/BloomFilterChunk.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.BloomFilterFactory.java">org/apache/hadoop/hbase/util/BloomFilterFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.BloomFilterUtil.java">org/apache/hadoop/hbase/util/BloomFilterUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.BloomFilterWriter.java">org/apache/hadoop/hbase/util/BloomFilterWriter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.BoundedPriorityBlockingQueue.java">org/apache/hadoop/hbase/util/BoundedPriorityBlockingQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.BuilderStyleTest.java">org/apache/hadoop/hbase/util/BuilderStyleTest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.ByteBufferArray.java">org/apache/hadoop/hbase/util/ByteBufferArray.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.ByteBufferUtils.java">org/apache/hadoop/hbase/util/ByteBufferUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>45</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.ByteRangeUtils.java">org/apache/hadoop/hbase/util/ByteRangeUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.Bytes.java">org/apache/hadoop/hbase/util/Bytes.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>89</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.ChecksumType.java">org/apache/hadoop/hbase/util/ChecksumType.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.ClassLoaderTestHelper.java">org/apache/hadoop/hbase/util/ClassLoaderTestHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.ClassSize.java">org/apache/hadoop/hbase/util/ClassSize.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.Classes.java">org/apache/hadoop/hbase/util/Classes.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.CollectionBackedScanner.java">org/apache/hadoop/hbase/util/CollectionBackedScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.CollectionUtils.java">org/apache/hadoop/hbase/util/CollectionUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.CommonFSUtils.java">org/apache/hadoop/hbase/util/CommonFSUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.CompressionTest.java">org/apache/hadoop/hbase/util/CompressionTest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.ConcatenatedLists.java">org/apache/hadoop/hbase/util/ConcatenatedLists.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.ConfigurationUtil.java">org/apache/hadoop/hbase/util/ConfigurationUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.ConnectionCache.java">org/apache/hadoop/hbase/util/ConnectionCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.ConstantDelayQueue.java">org/apache/hadoop/hbase/util/ConstantDelayQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.CoprocessorClassLoader.java">org/apache/hadoop/hbase/util/CoprocessorClassLoader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.Counter.java">org/apache/hadoop/hbase/util/Counter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.DirectMemoryUtils.java">org/apache/hadoop/hbase/util/DirectMemoryUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.DynamicClassLoader.java">org/apache/hadoop/hbase/util/DynamicClassLoader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>26</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.EncryptionTest.java">org/apache/hadoop/hbase/util/EncryptionTest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.EnvironmentEdgeManager.java">org/apache/hadoop/hbase/util/EnvironmentEdgeManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper.java">org/apache/hadoop/hbase/util/EnvironmentEdgeManagerTestHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.ExceptionUtil.java">org/apache/hadoop/hbase/util/ExceptionUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.FSHDFSUtils.java">org/apache/hadoop/hbase/util/FSHDFSUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>22</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.FSRegionScanner.java">org/apache/hadoop/hbase/util/FSRegionScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.FSTableDescriptors.java">org/apache/hadoop/hbase/util/FSTableDescriptors.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>36</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.FSUtils.java">org/apache/hadoop/hbase/util/FSUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>79</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.FSVisitor.java">org/apache/hadoop/hbase/util/FSVisitor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.FileStatusFilter.java">org/apache/hadoop/hbase/util/FileStatusFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.GetJavaProperty.java">org/apache/hadoop/hbase/util/GetJavaProperty.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.HBaseConfTool.java">org/apache/hadoop/hbase/util/HBaseConfTool.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.HBaseFsck.java">org/apache/hadoop/hbase/util/HBaseFsck.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>104</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.HBaseFsckRepair.java">org/apache/hadoop/hbase/util/HBaseFsckRepair.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.HBaseHomePath.java">org/apache/hadoop/hbase/util/HBaseHomePath.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.HFileArchiveTestingUtil.java">org/apache/hadoop/hbase/util/HFileArchiveTestingUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.HFileArchiveUtil.java">org/apache/hadoop/hbase/util/HFileArchiveUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.HFileTestUtil.java">org/apache/hadoop/hbase/util/HFileTestUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.Hash.java">org/apache/hadoop/hbase/util/Hash.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.HashKey.java">org/apache/hadoop/hbase/util/HashKey.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.HashedBytes.java">org/apache/hadoop/hbase/util/HashedBytes.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.JSONBean.java">org/apache/hadoop/hbase/util/JSONBean.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.JSONMetricUtil.java">org/apache/hadoop/hbase/util/JSONMetricUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.JVM.java">org/apache/hadoop/hbase/util/JVM.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.JVMClusterUtil.java">org/apache/hadoop/hbase/util/JVMClusterUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.JenkinsHash.java">org/apache/hadoop/hbase/util/JenkinsHash.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>38</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.JsonMapper.java">org/apache/hadoop/hbase/util/JsonMapper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.JvmPauseMonitor.java">org/apache/hadoop/hbase/util/JvmPauseMonitor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.KeyLocker.java">org/apache/hadoop/hbase/util/KeyLocker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.LeaseNotRecoveredException.java">org/apache/hadoop/hbase/util/LeaseNotRecoveredException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.LoadTestDataGeneratorWithMOB.java">org/apache/hadoop/hbase/util/LoadTestDataGeneratorWithMOB.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.LoadTestDataGeneratorWithTags.java">org/apache/hadoop/hbase/util/LoadTestDataGeneratorWithTags.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.LoadTestTool.java">org/apache/hadoop/hbase/util/LoadTestTool.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.MD5Hash.java">org/apache/hadoop/hbase/util/MD5Hash.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.ManualEnvironmentEdge.java">org/apache/hadoop/hbase/util/ManualEnvironmentEdge.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.MapreduceDependencyClasspathTool.java">org/apache/hadoop/hbase/util/MapreduceDependencyClasspathTool.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.Methods.java">org/apache/hadoop/hbase/util/Methods.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.MockServer.java">org/apache/hadoop/hbase/util/MockServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.ModifyRegionUtils.java">org/apache/hadoop/hbase/util/ModifyRegionUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.MultiHConnection.java">org/apache/hadoop/hbase/util/MultiHConnection.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.MultiThreadedAction.java">org/apache/hadoop/hbase/util/MultiThreadedAction.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.MultiThreadedReader.java">org/apache/hadoop/hbase/util/MultiThreadedReader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.MultiThreadedReaderWithACL.java">org/apache/hadoop/hbase/util/MultiThreadedReaderWithACL.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.MultiThreadedUpdater.java">org/apache/hadoop/hbase/util/MultiThreadedUpdater.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>19</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.MultiThreadedWriter.java">org/apache/hadoop/hbase/util/MultiThreadedWriter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.MultiThreadedWriterBase.java">org/apache/hadoop/hbase/util/MultiThreadedWriterBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.MunkresAssignment.java">org/apache/hadoop/hbase/util/MunkresAssignment.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.MurmurHash3.java">org/apache/hadoop/hbase/util/MurmurHash3.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.NettyEventLoopGroupConfig.java">org/apache/hadoop/hbase/util/NettyEventLoopGroupConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.Order.java">org/apache/hadoop/hbase/util/Order.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.OrderedBytes.java">org/apache/hadoop/hbase/util/OrderedBytes.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>44</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.Pair.java">org/apache/hadoop/hbase/util/Pair.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.PairOfSameType.java">org/apache/hadoop/hbase/util/PairOfSameType.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.PoolMap.java">org/apache/hadoop/hbase/util/PoolMap.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.PositionedByteRange.java">org/apache/hadoop/hbase/util/PositionedByteRange.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.PrettyPrinter.java">org/apache/hadoop/hbase/util/PrettyPrinter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.ProcessBasedLocalHBaseCluster.java">org/apache/hadoop/hbase/util/ProcessBasedLocalHBaseCluster.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.RedundantKVGenerator.java">org/apache/hadoop/hbase/util/RedundantKVGenerator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.ReflectionUtils.java">org/apache/hadoop/hbase/util/ReflectionUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.RegionMover.java">org/apache/hadoop/hbase/util/RegionMover.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>35</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.RegionSplitCalculator.java">org/apache/hadoop/hbase/util/RegionSplitCalculator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.RegionSplitter.java">org/apache/hadoop/hbase/util/RegionSplitter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>17</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.RetryCounter.java">org/apache/hadoop/hbase/util/RetryCounter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.RollingStatCalculator.java">org/apache/hadoop/hbase/util/RollingStatCalculator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.RowBloomContext.java">org/apache/hadoop/hbase/util/RowBloomContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.ServerCommandLine.java">org/apache/hadoop/hbase/util/ServerCommandLine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.ServerRegionReplicaUtil.java">org/apache/hadoop/hbase/util/ServerRegionReplicaUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.ShutdownHookManager.java">org/apache/hadoop/hbase/util/ShutdownHookManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.SimpleByteRange.java">org/apache/hadoop/hbase/util/SimpleByteRange.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.SimpleMutableByteRange.java">org/apache/hadoop/hbase/util/SimpleMutableByteRange.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.SimplePositionedByteRange.java">org/apache/hadoop/hbase/util/SimplePositionedByteRange.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.SimplePositionedMutableByteRange.java">org/apache/hadoop/hbase/util/SimplePositionedMutableByteRange.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.Sleeper.java">org/apache/hadoop/hbase/util/Sleeper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.StealJobQueue.java">org/apache/hadoop/hbase/util/StealJobQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.StoppableImplementation.java">org/apache/hadoop/hbase/util/StoppableImplementation.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.Strings.java">org/apache/hadoop/hbase/util/Strings.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.TestBloomFilterChunk.java">org/apache/hadoop/hbase/util/TestBloomFilterChunk.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.TestBytes.java">org/apache/hadoop/hbase/util/TestBytes.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>22</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.TestCompressionTest.java">org/apache/hadoop/hbase/util/TestCompressionTest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.TestCoprocessorClassLoader.java">org/apache/hadoop/hbase/util/TestCoprocessorClassLoader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.TestCoprocessorScanPolicy.java">org/apache/hadoop/hbase/util/TestCoprocessorScanPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.TestFSTableDescriptors.java">org/apache/hadoop/hbase/util/TestFSTableDescriptors.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.TestFSUtils.java">org/apache/hadoop/hbase/util/TestFSUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.TestFSVisitor.java">org/apache/hadoop/hbase/util/TestFSVisitor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.TestHFileArchiveUtil.java">org/apache/hadoop/hbase/util/TestHFileArchiveUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.TestIdLock.java">org/apache/hadoop/hbase/util/TestIdLock.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.TestIdReadWriteLock.java">org/apache/hadoop/hbase/util/TestIdReadWriteLock.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.TestMiniClusterLoadEncoded.java">org/apache/hadoop/hbase/util/TestMiniClusterLoadEncoded.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.TestMiniClusterLoadSequential.java">org/apache/hadoop/hbase/util/TestMiniClusterLoadSequential.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.TestOrderedBytes.java">org/apache/hadoop/hbase/util/TestOrderedBytes.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>30</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.TestRegionSplitter.java">org/apache/hadoop/hbase/util/TestRegionSplitter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>192</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.TestSimplePositionedMutableByteRange.java">org/apache/hadoop/hbase/util/TestSimplePositionedMutableByteRange.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.TestSortedList.java">org/apache/hadoop/hbase/util/TestSortedList.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.Threads.java">org/apache/hadoop/hbase/util/Threads.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.TimeOffsetEnvironmentEdge.java">org/apache/hadoop/hbase/util/TimeOffsetEnvironmentEdge.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.Triple.java">org/apache/hadoop/hbase/util/Triple.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.UnsafeAccess.java">org/apache/hadoop/hbase/util/UnsafeAccess.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>35</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.UnsafeAvailChecker.java">org/apache/hadoop/hbase/util/UnsafeAvailChecker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.VersionInfo.java">org/apache/hadoop/hbase/util/VersionInfo.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.Writables.java">org/apache/hadoop/hbase/util/Writables.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.ZKDataMigrator.java">org/apache/hadoop/hbase/util/ZKDataMigrator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>18</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.compaction.MajorCompactor.java">org/apache/hadoop/hbase/util/compaction/MajorCompactor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.compaction.TestMajorCompactionRequest.java">org/apache/hadoop/hbase/util/compaction/TestMajorCompactionRequest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.compaction.TestMajorCompactor.java">org/apache/hadoop/hbase/util/compaction/TestMajorCompactor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.hbck.HFileCorruptionChecker.java">org/apache/hadoop/hbase/util/hbck/HFileCorruptionChecker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.hbck.HbckTestingUtil.java">org/apache/hadoop/hbase/util/hbck/HbckTestingUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.hbck.OfflineMetaRebuildTestCore.java">org/apache/hadoop/hbase/util/hbck/OfflineMetaRebuildTestCore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair.java">org/apache/hadoop/hbase/util/hbck/OfflineMetaRepair.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.test.LoadTestDataGenerator.java">org/apache/hadoop/hbase/util/test/LoadTestDataGenerator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.test.LoadTestDataGeneratorWithACL.java">org/apache/hadoop/hbase/util/test/LoadTestDataGeneratorWithACL.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.wal.AbstractFSWALProvider.java">org/apache/hadoop/hbase/wal/AbstractFSWALProvider.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.wal.BoundedGroupingStrategy.java">org/apache/hadoop/hbase/wal/BoundedGroupingStrategy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.wal.DisabledWALProvider.java">org/apache/hadoop/hbase/wal/DisabledWALProvider.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.wal.FSHLogProvider.java">org/apache/hadoop/hbase/wal/FSHLogProvider.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.wal.IOTestProvider.java">org/apache/hadoop/hbase/wal/IOTestProvider.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.wal.NamespaceGroupingStrategy.java">org/apache/hadoop/hbase/wal/NamespaceGroupingStrategy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.wal.NettyAsyncFSWALConfigHelper.java">org/apache/hadoop/hbase/wal/NettyAsyncFSWALConfigHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.wal.TestBoundedRegionGroupingStrategy.java">org/apache/hadoop/hbase/wal/TestBoundedRegionGroupingStrategy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.wal.TestFSHLogProvider.java">org/apache/hadoop/hbase/wal/TestFSHLogProvider.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.wal.TestWALFactory.java">org/apache/hadoop/hbase/wal/TestWALFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>19</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.wal.TestWALFiltering.java">org/apache/hadoop/hbase/wal/TestWALFiltering.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.wal.TestWALMethods.java">org/apache/hadoop/hbase/wal/TestWALMethods.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.wal.TestWALOpenAfterDNRollingStart.java">org/apache/hadoop/hbase/wal/TestWALOpenAfterDNRollingStart.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.wal.TestWALReaderOnSecureWAL.java">org/apache/hadoop/hbase/wal/TestWALReaderOnSecureWAL.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.wal.TestWALRootDir.java">org/apache/hadoop/hbase/wal/TestWALRootDir.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.wal.TestWALSplit.java">org/apache/hadoop/hbase/wal/TestWALSplit.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.wal.WAL.java">org/apache/hadoop/hbase/wal/WAL.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.wal.WALEdit.java">org/apache/hadoop/hbase/wal/WALEdit.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.wal.WALFactory.java">org/apache/hadoop/hbase/wal/WALFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.wal.WALKey.java">org/apache/hadoop/hbase/wal/WALKey.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.wal.WALKeyImpl.java">org/apache/hadoop/hbase/wal/WALKeyImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.wal.WALPerformanceEvaluation.java">org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.wal.WALPrettyPrinter.java">org/apache/hadoop/hbase/wal/WALPrettyPrinter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>17</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.wal.WALSplitter.java">org/apache/hadoop/hbase/wal/WALSplitter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>40</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.java">org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.zookeeper.ZKConfig.java">org/apache/hadoop/hbase/zookeeper/ZKConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.zookeeper.ZKMetadata.java">org/apache/hadoop/hbase/zookeeper/ZKMetadata.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.zookeeper.ZNodePaths.java">org/apache/hadoop/hbase/zookeeper/ZNodePaths.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>26</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.zookeeper.ZooKeeperHelper.java">org/apache/hadoop/hbase/zookeeper/ZooKeeperHelper.java</a></td>
 <td>0</td>
 <td>0</td>
@@ -9721,67 +9726,67 @@
 <div class="section">
 <h2><a name="Rules"></a>Rules</h2>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Category</th>
 <th>Rule</th>
 <th>Violations</th>
 <th>Severity</th></tr>
-<tr class="b">
+<tr class="a">
 <td>annotation</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_annotation.html#MissingDeprecated">MissingDeprecated</a></td>
 <td>141</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td>blocks</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_blocks.html#EmptyBlock">EmptyBlock</a></td>
 <td>40</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_blocks.html#LeftCurly">LeftCurly</a></td>
 <td>192</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_blocks.html#NeedBraces">NeedBraces</a></td>
 <td>1814</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td>coding</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_coding.html#EmptyStatement">EmptyStatement</a></td>
 <td>31</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_coding.html#EqualsHashCode">EqualsHashCode</a></td>
 <td>4</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_coding.html#InnerAssignment">InnerAssignment</a></td>
 <td>90</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_coding.html#NoFinalizer">NoFinalizer</a></td>
 <td>1</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td>design</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_design.html#FinalClass">FinalClass</a></td>
 <td>51</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_design.html#HideUtilityClassConstructor">HideUtilityClassConstructor</a></td>
 <td>98</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_design.html#InterfaceIsType">InterfaceIsType</a></td>
 <td>1</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_design.html#VisibilityModifier">VisibilityModifier</a>
 <ul>
@@ -9790,12 +9795,12 @@
 <li>allowPublicImmutableFields: <tt>&quot;true&quot;</tt></li></ul></td>
 <td>124</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td>imports</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_imports.html#AvoidStarImport">AvoidStarImport</a></td>
 <td>79</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_imports.html#ImportOrder">ImportOrder</a>
 <ul>
@@ -9803,21 +9808,21 @@
 <li>sortStaticImportsAlphabetically: <tt>&quot;true&quot;</tt></li>
 <li>groups: <tt>&quot;*,org.apache.hbase.thirdparty,org.apache.hadoop.hbase.shaded&quot;</tt></li>
 <li>option: <tt>&quot;top&quot;</tt></li></ul></td>
-<td>1148</td>
+<td>1149</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_imports.html#RedundantImport">RedundantImport</a></td>
 <td>26</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_imports.html#UnusedImports">UnusedImports</a>
 <ul>
 <li>processJavadoc: <tt>&quot;true&quot;</tt></li></ul></td>
 <td>112</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td>indentation</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_indentation.html#Indentation">Indentation</a>
 <ul>
@@ -9828,29 +9833,29 @@
 <li>lineWrappingIndentation: <tt>&quot;2&quot;</tt></li></ul></td>
 <td>4857</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td>javadoc</td>
 <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>764</td>
+<td>763</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#NonEmptyAtclauseDescription">NonEmptyAtclauseDescription</a></td>
-<td>3605</td>
+<td>3606</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td>misc</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_misc.html#ArrayTypeStyle">ArrayTypeStyle</a></td>
 <td>148</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_misc.html#UpperEll">UpperEll</a></td>
 <td>44</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td>sizes</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_sizes.html#LineLength">LineLength</a>
 <ul>
@@ -9858,22 +9863,22 @@
 <li>ignorePattern: <tt>&quot;^package.*|^import.*|a href|href|http://|https://|ftp://|org.apache.thrift.|com.google.protobuf.|hbase.protobuf.generated&quot;</tt></li></ul></td>
 <td>1510</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_sizes.html#MethodLength">MethodLength</a></td>
 <td>68</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td>whitespace</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_whitespace.html#FileTabCharacter">FileTabCharacter</a></td>
 <td>9</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_whitespace.html#MethodParamPad">MethodParamPad</a></td>
 <td>167</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_whitespace.html#ParenPad">ParenPad</a></td>
 <td>261</td>
@@ -9883,49 +9888,49 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.AcidGuaranteesTestTool.java">org/apache/hadoop/hbase/AcidGuaranteesTestTool.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>138</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>163</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>215</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>216</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>282</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>283</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
@@ -9934,157 +9939,157 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.AsyncMetaTableAccessor.java">org/apache/hadoop/hbase/AsyncMetaTableAccessor.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
 <td>62</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>109</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'lambda arguments' has incorrect indentation level 8, expected level should be 14.</td>
 <td>121</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' has incorrect indentation level 10, expected level should be 16.</td>
 <td>122</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child has incorrect indentation level 12, expected level should be 18.</td>
 <td>123</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child has incorrect indentation level 12, expected level should be 18.</td>
 <td>124</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if rcurly' has incorrect indentation level 10, expected level should be 16.</td>
 <td>125</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 10, expected level should be 16.</td>
 <td>126</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block rcurly' has incorrect indentation level 8, expected level should be 14.</td>
 <td>128</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>138</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>178</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>191</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>217</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 117).</td>
 <td>233</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>244</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>275</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>288</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>394</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>396</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>404</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>412</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>457</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>462</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>480</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -10093,13 +10098,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.BBKVComparator.java">org/apache/hadoop/hbase/BBKVComparator.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -10108,25 +10113,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ByteBufferKeyOnlyKeyValue.java">org/apache/hadoop/hbase/ByteBufferKeyOnlyKeyValue.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>59</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>60</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -10135,13 +10140,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.Cell.java">org/apache/hadoop/hbase/Cell.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
@@ -10150,31 +10155,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.CellBuilderFactory.java">org/apache/hadoop/hbase/CellBuilderFactory.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>

<TRUNCATED>

[35/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html
index 85262eb..52d6d8e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html
@@ -62,329 +62,341 @@
 <span class="sourceLineNo">054</span>  // Used to track when to flush<a name="line.54"></a>
 <span class="sourceLineNo">055</span>  private volatile long timeOfOldestEdit;<a name="line.55"></a>
 <span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>  public final static long FIXED_OVERHEAD = (long) ClassSize.OBJECT<a name="line.57"></a>
-<span class="sourceLineNo">058</span>          + (4 * ClassSize.REFERENCE)<a name="line.58"></a>
-<span class="sourceLineNo">059</span>          + (2 * Bytes.SIZEOF_LONG); // snapshotId, timeOfOldestEdit<a name="line.59"></a>
-<span class="sourceLineNo">060</span><a name="line.60"></a>
-<span class="sourceLineNo">061</span>  public final static long DEEP_OVERHEAD = FIXED_OVERHEAD;<a name="line.61"></a>
+<span class="sourceLineNo">057</span>  protected RegionServicesForStores regionServices;<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  public final static long FIXED_OVERHEAD = (long) ClassSize.OBJECT<a name="line.59"></a>
+<span class="sourceLineNo">060</span>          + (5 * ClassSize.REFERENCE)<a name="line.60"></a>
+<span class="sourceLineNo">061</span>          + (2 * Bytes.SIZEOF_LONG); // snapshotId, timeOfOldestEdit<a name="line.61"></a>
 <span class="sourceLineNo">062</span><a name="line.62"></a>
-<span class="sourceLineNo">063</span>  public static void addToScanners(List&lt;? extends Segment&gt; segments, long readPt,<a name="line.63"></a>
-<span class="sourceLineNo">064</span>      List&lt;KeyValueScanner&gt; scanners) {<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    for (Segment item : segments) {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      addToScanners(item, readPt, scanners);<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    }<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  }<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>  protected static void addToScanners(Segment segment, long readPt,<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      List&lt;KeyValueScanner&gt; scanners) {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    scanners.add(segment.getScanner(readPt));<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>  protected AbstractMemStore(final Configuration conf, final CellComparator c) {<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    this.conf = conf;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    this.comparator = c;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    resetActive();<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    this.snapshot = SegmentFactory.instance().createImmutableSegment(c);<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    this.snapshotId = NO_SNAPSHOT_ID;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  }<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  protected void resetActive() {<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    // Reset heap to not include any keys<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    active = SegmentFactory.instance().createMutableSegment(conf, comparator);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    timeOfOldestEdit = Long.MAX_VALUE;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  }<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  /**<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   * Updates the wal with the lowest sequence id (oldest entry) that is still in memory<a name="line.90"></a>
-<span class="sourceLineNo">091</span>   * @param onlyIfMoreRecent a flag that marks whether to update the sequence id no matter what or<a name="line.91"></a>
-<span class="sourceLineNo">092</span>   *                      only if it is greater than the previous sequence id<a name="line.92"></a>
-<span class="sourceLineNo">093</span>   */<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  public abstract void updateLowestUnflushedSequenceIdInWAL(boolean onlyIfMoreRecent);<a name="line.94"></a>
-<span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>  @Override<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  public void add(Iterable&lt;Cell&gt; cells, MemStoreSizing memstoreSizing) {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    for (Cell cell : cells) {<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      add(cell, memstoreSizing);<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    }<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  }<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  @Override<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  public void add(Cell cell, MemStoreSizing memstoreSizing) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    doAddOrUpsert(cell, 0, memstoreSizing, true);  }<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>   * Inserts the specified Cell into MemStore and deletes any existing<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * versions of the same row/family/qualifier as the specified Cell.<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   * &lt;p&gt;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * First, the specified Cell is inserted into the Memstore.<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   * &lt;p&gt;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   * If there are any existing Cell in this MemStore with the same row,<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * family, and qualifier, they are removed.<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * &lt;p&gt;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   * Callers must hold the read lock.<a name="line.116"></a>
-<span class="sourceLineNo">117</span>   *<a name="line.117"></a>
-<span class="sourceLineNo">118</span>   * @param cell the cell to be updated<a name="line.118"></a>
-<span class="sourceLineNo">119</span>   * @param readpoint readpoint below which we can safely remove duplicate KVs<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * @param memstoreSizing object to accumulate changed size<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  private void upsert(Cell cell, long readpoint, MemStoreSizing memstoreSizing) {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    doAddOrUpsert(cell, readpoint, memstoreSizing, false);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  }<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private void doAddOrUpsert(Cell cell, long readpoint, MemStoreSizing memstoreSizing, boolean<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      doAdd) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    MutableSegment currentActive;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    boolean succ = false;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    while (!succ) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      currentActive = getActive();<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      succ = preUpdate(currentActive, cell, memstoreSizing);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      if (succ) {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        if(doAdd) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>          doAdd(currentActive, cell, memstoreSizing);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        } else {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>          doUpsert(currentActive, cell, readpoint, memstoreSizing);<a name="line.137"></a>
-<span class="sourceLineNo">138</span>        }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>        postUpdate(currentActive);<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><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private void doAdd(MutableSegment currentActive, Cell cell, MemStoreSizing memstoreSizing) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    Cell toAdd = maybeCloneWithAllocator(currentActive, cell, false);<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    boolean mslabUsed = (toAdd != cell);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    // This cell data is backed by the same byte[] where we read request in RPC(See<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    // HBASE-15180). By default MSLAB is ON and we might have copied cell to MSLAB area. If<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    // not we must do below deep copy. Or else we will keep referring to the bigger chunk of<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    // memory and prevent it from getting GCed.<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    // Copy to MSLAB would not have happened if<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    // 1. MSLAB is turned OFF. See "hbase.hregion.memstore.mslab.enabled"<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    // 2. When the size of the cell is bigger than the max size supported by MSLAB. See<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    // "hbase.hregion.memstore.mslab.max.allocation". This defaults to 256 KB<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    // 3. When cells are from Append/Increment operation.<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    if (!mslabUsed) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      toAdd = deepCopyIfNeeded(toAdd);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    internalAdd(currentActive, toAdd, mslabUsed, memstoreSizing);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>  private void doUpsert(MutableSegment currentActive, Cell cell, long readpoint, MemStoreSizing<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      memstoreSizing) {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    // Add the Cell to the MemStore<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    // Use the internalAdd method here since we (a) already have a lock<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    // and (b) cannot safely use the MSLAB here without potentially<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    // hitting OOME - see TestMemStore.testUpsertMSLAB for a<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    // test that triggers the pathological case if we don't avoid MSLAB<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    // here.<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    // This cell data is backed by the same byte[] where we read request in RPC(See<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    // HBASE-15180). We must do below deep copy. Or else we will keep referring to the bigger<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    // chunk of memory and prevent it from getting GCed.<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    cell = deepCopyIfNeeded(cell);<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    boolean sizeAddedPreOperation = sizeAddedPreOperation();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    currentActive.upsert(cell, readpoint, memstoreSizing, sizeAddedPreOperation);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    setOldestEditTimeToNow();<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>    /**<a name="line.179"></a>
-<span class="sourceLineNo">180</span>     * Issue any synchronization and test needed before applying the update<a name="line.180"></a>
-<span class="sourceLineNo">181</span>     * @param currentActive the segment to be updated<a name="line.181"></a>
-<span class="sourceLineNo">182</span>     * @param cell the cell to be added<a name="line.182"></a>
-<span class="sourceLineNo">183</span>     * @param memstoreSizing object to accumulate region size changes<a name="line.183"></a>
-<span class="sourceLineNo">184</span>     * @return true iff can proceed with applying the update<a name="line.184"></a>
-<span class="sourceLineNo">185</span>     */<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  protected abstract boolean preUpdate(MutableSegment currentActive, Cell cell,<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      MemStoreSizing memstoreSizing);<a name="line.187"></a>
-<span class="sourceLineNo">188</span><a name="line.188"></a>
-<span class="sourceLineNo">189</span>  /**<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * Issue any post update synchronization and tests<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param currentActive updated segment<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   */<a name="line.192"></a>
-<span class="sourceLineNo">193</span>  protected abstract void postUpdate(MutableSegment currentActive);<a name="line.193"></a>
-<span class="sourceLineNo">194</span><a name="line.194"></a>
-<span class="sourceLineNo">195</span>  private static Cell deepCopyIfNeeded(Cell cell) {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    if (cell instanceof ExtendedCell) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      return ((ExtendedCell) cell).deepClone();<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    return cell;<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>  @Override<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  public void upsert(Iterable&lt;Cell&gt; cells, long readpoint, MemStoreSizing memstoreSizing) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    for (Cell cell : cells) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      upsert(cell, readpoint, memstoreSizing);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  /**<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   * @return Oldest timestamp of all the Cells in the MemStore<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   */<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  @Override<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  public long timeOfOldestEdit() {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    return timeOfOldestEdit;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>  }<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>  /**<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * The passed snapshot was successfully persisted; it can be let go.<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * @param id Id of the snapshot to clean out.<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   * @see MemStore#snapshot()<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   */<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  @Override<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  public void clearSnapshot(long id) throws UnexpectedStateException {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    if (this.snapshotId == -1) return;  // already cleared<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    if (this.snapshotId != id) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      throw new UnexpectedStateException("Current snapshot id is " + this.snapshotId + ",passed "<a name="line.226"></a>
-<span class="sourceLineNo">227</span>          + id);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    }<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    // OK. Passed in snapshot is same as current snapshot. If not-empty,<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // create a new snapshot and let the old one go.<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    Segment oldSnapshot = this.snapshot;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    if (!this.snapshot.isEmpty()) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      this.snapshot = SegmentFactory.instance().createImmutableSegment(this.comparator);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    this.snapshotId = NO_SNAPSHOT_ID;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    oldSnapshot.close();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  }<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>  @Override<a name="line.239"></a>
-<span class="sourceLineNo">240</span>  public MemStoreSize getSnapshotSize() {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    return this.snapshot.getMemStoreSize();<a name="line.241"></a>
-<span class="sourceLineNo">242</span>  }<a name="line.242"></a>
-<span class="sourceLineNo">243</span><a name="line.243"></a>
-<span class="sourceLineNo">244</span>  @Override<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  public String toString() {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    StringBuilder buf = new StringBuilder();<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    int i = 1;<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    try {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      for (Segment segment : getSegments()) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        buf.append("Segment (" + i + ") " + segment.toString() + "; ");<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        i++;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      }<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    } catch (IOException e){<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      return e.toString();<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    return buf.toString();<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>  protected Configuration getConfiguration() {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    return conf;<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>  protected void dump(Logger log) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    getActive().dump(log);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    snapshot.dump(log);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>  }<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>  /*<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * @param a<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * @param b<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * @return Return lowest of a or b or null if both a and b are null<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   */<a name="line.273"></a>
-<span class="sourceLineNo">274</span>  protected Cell getLowest(final Cell a, final Cell b) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    if (a == null) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      return b;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    if (b == null) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      return a;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    }<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    return comparator.compareRows(a, b) &lt;= 0? a: b;<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>  /*<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   * @param key Find row that follows this one.  If null, return first.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   * @param set Set to look in for a row beyond &lt;code&gt;row&lt;/code&gt;.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * @return Next row or null if none found.  If one found, will be a new<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   * KeyValue -- can be destroyed by subsequent calls to this method.<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   */<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  protected Cell getNextRow(final Cell key,<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      final NavigableSet&lt;Cell&gt; set) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    Cell result = null;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    SortedSet&lt;Cell&gt; tail = key == null? set: set.tailSet(key);<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    // Iterate until we fall into the next row; i.e. move off current row<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    for (Cell cell: tail) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      if (comparator.compareRows(cell, key) &lt;= 0) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        continue;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      }<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      // Note: Not suppressing deletes or expired cells.  Needs to be handled<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      // by higher up functions.<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      result = cell;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      break;<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    return result;<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>   * If the segment has a memory allocator the cell is being cloned to this space, and returned;<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * Otherwise the given cell is returned<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   *<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   * When a cell's size is too big (bigger than maxAlloc), it is not allocated on MSLAB.<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * Since the process of flattening to CellChunkMap assumes that all cells are allocated on MSLAB,<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * during this process, the input parameter forceCloneOfBigCell is set to 'true'<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   * and the cell is copied into MSLAB.<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   *<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * @param cell the cell to clone<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * @param forceCloneOfBigCell true only during the process of flattening to CellChunkMap.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @return either the given cell or its clone<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  private Cell maybeCloneWithAllocator(MutableSegment currentActive, Cell cell, boolean<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      forceCloneOfBigCell) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    return currentActive.maybeCloneWithAllocator(cell, forceCloneOfBigCell);<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 name="line.325"></a>
-<span class="sourceLineNo">326</span>   * Internal version of add() that doesn't clone Cells with the<a name="line.326"></a>
-<span class="sourceLineNo">327</span>   * allocator, and doesn't take the lock.<a name="line.327"></a>
-<span class="sourceLineNo">328</span>   *<a name="line.328"></a>
-<span class="sourceLineNo">329</span>   * Callers should ensure they already have the read lock taken<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * @param toAdd the cell to add<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * @param mslabUsed whether using MSLAB<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * @param memstoreSizing object to accumulate changed size<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   */<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  private void internalAdd(MutableSegment currentActive, final Cell toAdd, final boolean<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      mslabUsed, MemStoreSizing memstoreSizing) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    boolean sizeAddedPreOperation = sizeAddedPreOperation();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    currentActive.add(toAdd, mslabUsed, memstoreSizing, sizeAddedPreOperation);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    setOldestEditTimeToNow();<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>  protected abstract boolean sizeAddedPreOperation();<a name="line.341"></a>
-<span class="sourceLineNo">342</span><a name="line.342"></a>
-<span class="sourceLineNo">343</span>  private void setOldestEditTimeToNow() {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    if (timeOfOldestEdit == Long.MAX_VALUE) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      timeOfOldestEdit = EnvironmentEdgeManager.currentTime();<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>  /**<a name="line.349"></a>
-<span class="sourceLineNo">350</span>   * @return The total size of cells in this memstore. We will not consider cells in the snapshot<a name="line.350"></a>
-<span class="sourceLineNo">351</span>   */<a name="line.351"></a>
-<span class="sourceLineNo">352</span>  protected abstract long keySize();<a name="line.352"></a>
-<span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span>  /**<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * @return The total heap size of cells in this memstore. We will not consider cells in the<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   *         snapshot<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   */<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  protected abstract long heapSize();<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>  protected CellComparator getComparator() {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    return comparator;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>  @VisibleForTesting<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  MutableSegment getActive() {<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    return active;<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  @VisibleForTesting<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  ImmutableSegment getSnapshot() {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    return snapshot;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  /**<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   * @return an ordered list of segments from most recent to oldest in memstore<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   */<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  protected abstract List&lt;Segment&gt; getSegments() throws IOException;<a name="line.377"></a>
-<span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>}<a name="line.379"></a>
+<span class="sourceLineNo">063</span>  public final static long DEEP_OVERHEAD = FIXED_OVERHEAD;<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  public static void addToScanners(List&lt;? extends Segment&gt; segments, long readPt,<a name="line.65"></a>
+<span class="sourceLineNo">066</span>      List&lt;KeyValueScanner&gt; scanners) {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    for (Segment item : segments) {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      addToScanners(item, readPt, scanners);<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    }<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  }<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>  protected static void addToScanners(Segment segment, long readPt,<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      List&lt;KeyValueScanner&gt; scanners) {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    scanners.add(segment.getScanner(readPt));<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  }<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>  protected AbstractMemStore(final Configuration conf, final CellComparator c,<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      final RegionServicesForStores regionServices) {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    this.conf = conf;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    this.comparator = c;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    this.regionServices = regionServices;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    resetActive();<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    this.snapshot = SegmentFactory.instance().createImmutableSegment(c);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    this.snapshotId = NO_SNAPSHOT_ID;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  }<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>  protected void resetActive() {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    // Record the MutableSegment' heap overhead when initialing<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    MemStoreSizing memstoreAccounting = new NonThreadSafeMemStoreSizing();<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    // Reset heap to not include any keys<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    active = SegmentFactory.instance().createMutableSegment(conf, comparator, memstoreAccounting);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    // regionServices can be null when testing<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    if (regionServices != null) {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      regionServices.addMemStoreSize(memstoreAccounting.getDataSize(),<a name="line.94"></a>
+<span class="sourceLineNo">095</span>          memstoreAccounting.getHeapSize(),<a name="line.95"></a>
+<span class="sourceLineNo">096</span>          memstoreAccounting.getOffHeapSize());<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    }<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    timeOfOldestEdit = Long.MAX_VALUE;<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>  /**<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * Updates the wal with the lowest sequence id (oldest entry) that is still in memory<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * @param onlyIfMoreRecent a flag that marks whether to update the sequence id no matter what or<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   *                      only if it is greater than the previous sequence id<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  public abstract void updateLowestUnflushedSequenceIdInWAL(boolean onlyIfMoreRecent);<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>  @Override<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  public void add(Iterable&lt;Cell&gt; cells, MemStoreSizing memstoreSizing) {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    for (Cell cell : cells) {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      add(cell, memstoreSizing);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    }<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  }<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  @Override<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  public void add(Cell cell, MemStoreSizing memstoreSizing) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    doAddOrUpsert(cell, 0, memstoreSizing, true);  }<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>   * Inserts the specified Cell into MemStore and deletes any existing<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   * versions of the same row/family/qualifier as the specified Cell.<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   * &lt;p&gt;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   * First, the specified Cell is inserted into the Memstore.<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   * &lt;p&gt;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   * If there are any existing Cell in this MemStore with the same row,<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   * family, and qualifier, they are removed.<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   * &lt;p&gt;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>   * Callers must hold the read lock.<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   *<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * @param cell the cell to be updated<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   * @param readpoint readpoint below which we can safely remove duplicate KVs<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   * @param memstoreSizing object to accumulate changed size<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   */<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  private void upsert(Cell cell, long readpoint, MemStoreSizing memstoreSizing) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    doAddOrUpsert(cell, readpoint, memstoreSizing, 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>  private void doAddOrUpsert(Cell cell, long readpoint, MemStoreSizing memstoreSizing, boolean<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      doAdd) {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    MutableSegment currentActive;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    boolean succ = false;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    while (!succ) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      currentActive = getActive();<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      succ = preUpdate(currentActive, cell, memstoreSizing);<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      if (succ) {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>        if(doAdd) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>          doAdd(currentActive, cell, memstoreSizing);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        } else {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>          doUpsert(currentActive, cell, readpoint, memstoreSizing);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        }<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        postUpdate(currentActive);<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>  }<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span>  private void doAdd(MutableSegment currentActive, Cell cell, MemStoreSizing memstoreSizing) {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Cell toAdd = maybeCloneWithAllocator(currentActive, cell, false);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    boolean mslabUsed = (toAdd != cell);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    // This cell data is backed by the same byte[] where we read request in RPC(See<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    // HBASE-15180). By default MSLAB is ON and we might have copied cell to MSLAB area. If<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    // not we must do below deep copy. Or else we will keep referring to the bigger chunk of<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    // memory and prevent it from getting GCed.<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    // Copy to MSLAB would not have happened if<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    // 1. MSLAB is turned OFF. See "hbase.hregion.memstore.mslab.enabled"<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    // 2. When the size of the cell is bigger than the max size supported by MSLAB. See<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    // "hbase.hregion.memstore.mslab.max.allocation". This defaults to 256 KB<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    // 3. When cells are from Append/Increment operation.<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    if (!mslabUsed) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      toAdd = deepCopyIfNeeded(toAdd);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    internalAdd(currentActive, toAdd, mslabUsed, memstoreSizing);<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>  private void doUpsert(MutableSegment currentActive, Cell cell, long readpoint, MemStoreSizing<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      memstoreSizing) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    // Add the Cell to the MemStore<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    // Use the internalAdd method here since we (a) already have a lock<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    // and (b) cannot safely use the MSLAB here without potentially<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    // hitting OOME - see TestMemStore.testUpsertMSLAB for a<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    // test that triggers the pathological case if we don't avoid MSLAB<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    // here.<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    // This cell data is backed by the same byte[] where we read request in RPC(See<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    // HBASE-15180). We must do below deep copy. Or else we will keep referring to the bigger<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    // chunk of memory and prevent it from getting GCed.<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    cell = deepCopyIfNeeded(cell);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    boolean sizeAddedPreOperation = sizeAddedPreOperation();<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    currentActive.upsert(cell, readpoint, memstoreSizing, sizeAddedPreOperation);<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    setOldestEditTimeToNow();<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>    /**<a name="line.191"></a>
+<span class="sourceLineNo">192</span>     * Issue any synchronization and test needed before applying the update<a name="line.192"></a>
+<span class="sourceLineNo">193</span>     * @param currentActive the segment to be updated<a name="line.193"></a>
+<span class="sourceLineNo">194</span>     * @param cell the cell to be added<a name="line.194"></a>
+<span class="sourceLineNo">195</span>     * @param memstoreSizing object to accumulate region size changes<a name="line.195"></a>
+<span class="sourceLineNo">196</span>     * @return true iff can proceed with applying the update<a name="line.196"></a>
+<span class="sourceLineNo">197</span>     */<a name="line.197"></a>
+<span class="sourceLineNo">198</span>  protected abstract boolean preUpdate(MutableSegment currentActive, Cell cell,<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      MemStoreSizing memstoreSizing);<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>   * Issue any post update synchronization and tests<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   * @param currentActive updated segment<a name="line.203"></a>
+<span class="sourceLineNo">204</span>   */<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  protected abstract void postUpdate(MutableSegment currentActive);<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>  private static Cell deepCopyIfNeeded(Cell cell) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    if (cell instanceof ExtendedCell) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      return ((ExtendedCell) cell).deepClone();<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    }<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    return cell;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  }<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>  @Override<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  public void upsert(Iterable&lt;Cell&gt; cells, long readpoint, MemStoreSizing memstoreSizing) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    for (Cell cell : cells) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      upsert(cell, readpoint, memstoreSizing);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    }<a name="line.218"></a>
+<span class="sourceLineNo">219</span>  }<a name="line.219"></a>
+<span class="sourceLineNo">220</span><a name="line.220"></a>
+<span class="sourceLineNo">221</span>  /**<a name="line.221"></a>
+<span class="sourceLineNo">222</span>   * @return Oldest timestamp of all the Cells in the MemStore<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   */<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  @Override<a name="line.224"></a>
+<span class="sourceLineNo">225</span>  public long timeOfOldestEdit() {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    return timeOfOldestEdit;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  /**<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * The passed snapshot was successfully persisted; it can be let go.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * @param id Id of the snapshot to clean out.<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   * @see MemStore#snapshot()<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   */<a name="line.233"></a>
+<span class="sourceLineNo">234</span>  @Override<a name="line.234"></a>
+<span class="sourceLineNo">235</span>  public void clearSnapshot(long id) throws UnexpectedStateException {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    if (this.snapshotId == -1) return;  // already cleared<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    if (this.snapshotId != id) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      throw new UnexpectedStateException("Current snapshot id is " + this.snapshotId + ",passed "<a name="line.238"></a>
+<span class="sourceLineNo">239</span>          + id);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    }<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    // OK. Passed in snapshot is same as current snapshot. If not-empty,<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    // create a new snapshot and let the old one go.<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    Segment oldSnapshot = this.snapshot;<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    if (!this.snapshot.isEmpty()) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      this.snapshot = SegmentFactory.instance().createImmutableSegment(this.comparator);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    }<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    this.snapshotId = NO_SNAPSHOT_ID;<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    oldSnapshot.close();<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>  @Override<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  public MemStoreSize getSnapshotSize() {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    return this.snapshot.getMemStoreSize();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  }<a name="line.254"></a>
+<span class="sourceLineNo">255</span><a name="line.255"></a>
+<span class="sourceLineNo">256</span>  @Override<a name="line.256"></a>
+<span class="sourceLineNo">257</span>  public String toString() {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    StringBuilder buf = new StringBuilder();<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    int i = 1;<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    try {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      for (Segment segment : getSegments()) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        buf.append("Segment (" + i + ") " + segment.toString() + "; ");<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        i++;<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    } catch (IOException e){<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      return e.toString();<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    return buf.toString();<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>  protected Configuration getConfiguration() {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    return conf;<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>  protected void dump(Logger log) {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    getActive().dump(log);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    snapshot.dump(log);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>  /*<a name="line.281"></a>
+<span class="sourceLineNo">282</span>   * @param a<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   * @param b<a name="line.283"></a>
+<span class="sourceLineNo">284</span>   * @return Return lowest of a or b or null if both a and b are null<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   */<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  protected Cell getLowest(final Cell a, final Cell b) {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    if (a == null) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      return b;<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    }<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    if (b == null) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      return a;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    return comparator.compareRows(a, b) &lt;= 0? a: b;<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  /*<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   * @param key Find row that follows this one.  If null, return first.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   * @param set Set to look in for a row beyond &lt;code&gt;row&lt;/code&gt;.<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   * @return Next row or null if none found.  If one found, will be a new<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   * KeyValue -- can be destroyed by subsequent calls to this method.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>   */<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  protected Cell getNextRow(final Cell key,<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      final NavigableSet&lt;Cell&gt; set) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    Cell result = null;<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    SortedSet&lt;Cell&gt; tail = key == null? set: set.tailSet(key);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    // Iterate until we fall into the next row; i.e. move off current row<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    for (Cell cell: tail) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      if (comparator.compareRows(cell, key) &lt;= 0) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        continue;<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      // Note: Not suppressing deletes or expired cells.  Needs to be handled<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      // by higher up functions.<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      result = cell;<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      break;<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    }<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    return result;<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  }<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>  /**<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   * If the segment has a memory allocator the cell is being cloned to this space, and returned;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   * Otherwise the given cell is returned<a name="line.321"></a>
+<span class="sourceLineNo">322</span>   *<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   * When a cell's size is too big (bigger than maxAlloc), it is not allocated on MSLAB.<a name="line.323"></a>
+<span class="sourceLineNo">324</span>   * Since the process of flattening to CellChunkMap assumes that all cells are allocated on MSLAB,<a name="line.324"></a>
+<span class="sourceLineNo">325</span>   * during this process, the input parameter forceCloneOfBigCell is set to 'true'<a name="line.325"></a>
+<span class="sourceLineNo">326</span>   * and the cell is copied into MSLAB.<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   *<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * @param cell the cell to clone<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * @param forceCloneOfBigCell true only during the process of flattening to CellChunkMap.<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   * @return either the given cell or its clone<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  private Cell maybeCloneWithAllocator(MutableSegment currentActive, Cell cell, boolean<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      forceCloneOfBigCell) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    return currentActive.maybeCloneWithAllocator(cell, forceCloneOfBigCell);<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>   * Internal version of add() that doesn't clone Cells with the<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * allocator, and doesn't take the lock.<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   *<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * Callers should ensure they already have the read lock taken<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   * @param toAdd the cell to add<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   * @param mslabUsed whether using MSLAB<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   * @param memstoreSizing object to accumulate changed size<a name="line.344"></a>
+<span class="sourceLineNo">345</span>   */<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  private void internalAdd(MutableSegment currentActive, final Cell toAdd, final boolean<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      mslabUsed, MemStoreSizing memstoreSizing) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    boolean sizeAddedPreOperation = sizeAddedPreOperation();<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    currentActive.add(toAdd, mslabUsed, memstoreSizing, sizeAddedPreOperation);<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    setOldestEditTimeToNow();<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
+<span class="sourceLineNo">352</span><a name="line.352"></a>
+<span class="sourceLineNo">353</span>  protected abstract boolean sizeAddedPreOperation();<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  private void setOldestEditTimeToNow() {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    if (timeOfOldestEdit == Long.MAX_VALUE) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      timeOfOldestEdit = EnvironmentEdgeManager.currentTime();<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>
+<span class="sourceLineNo">360</span><a name="line.360"></a>
+<span class="sourceLineNo">361</span>  /**<a name="line.361"></a>
+<span class="sourceLineNo">362</span>   * @return The total size of cells in this memstore. We will not consider cells in the snapshot<a name="line.362"></a>
+<span class="sourceLineNo">363</span>   */<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  protected abstract long keySize();<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>   * @return The total heap size of cells in this memstore. We will not consider cells in the<a name="line.367"></a>
+<span class="sourceLineNo">368</span>   *         snapshot<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  protected abstract long heapSize();<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  protected CellComparator getComparator() {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    return comparator;<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>  @VisibleForTesting<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  MutableSegment getActive() {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    return active;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  }<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>  @VisibleForTesting<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  ImmutableSegment getSnapshot() {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    return snapshot;<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>   * @return an ordered list of segments from most recent to oldest in memstore<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  protected abstract List&lt;Segment&gt; getSegments() throws IOException;<a name="line.389"></a>
+<span class="sourceLineNo">390</span><a name="line.390"></a>
+<span class="sourceLineNo">391</span>}<a name="line.391"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html
index 92937db..026d0f8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html
@@ -44,22 +44,25 @@
 <span class="sourceLineNo">036</span>   * This C-tor should be used when active MutableSegment is pushed into the compaction<a name="line.36"></a>
 <span class="sourceLineNo">037</span>   * pipeline and becomes an ImmutableSegment.<a name="line.37"></a>
 <span class="sourceLineNo">038</span>   */<a name="line.38"></a>
-<span class="sourceLineNo">039</span>  protected CSLMImmutableSegment(Segment segment) {<a name="line.39"></a>
+<span class="sourceLineNo">039</span>  protected CSLMImmutableSegment(Segment segment, MemStoreSizing memstoreSizing) {<a name="line.39"></a>
 <span class="sourceLineNo">040</span>    super(segment);<a name="line.40"></a>
 <span class="sourceLineNo">041</span>    // update the segment metadata heap size<a name="line.41"></a>
 <span class="sourceLineNo">042</span>    long indexOverhead = -MutableSegment.DEEP_OVERHEAD + DEEP_OVERHEAD_CSLM;<a name="line.42"></a>
 <span class="sourceLineNo">043</span>    incMemStoreSize(0, indexOverhead, 0); // CSLM is always on-heap<a name="line.43"></a>
-<span class="sourceLineNo">044</span>  }<a name="line.44"></a>
-<span class="sourceLineNo">045</span><a name="line.45"></a>
-<span class="sourceLineNo">046</span>  @Override<a name="line.46"></a>
-<span class="sourceLineNo">047</span>  protected long indexEntrySize() {<a name="line.47"></a>
-<span class="sourceLineNo">048</span>    return ClassSize.CONCURRENT_SKIPLISTMAP_ENTRY;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>  }<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>  @Override protected boolean canBeFlattened() {<a name="line.51"></a>
-<span class="sourceLineNo">052</span>    return true;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>  }<a name="line.53"></a>
-<span class="sourceLineNo">054</span>}<a name="line.54"></a>
+<span class="sourceLineNo">044</span>    if (memstoreSizing != null) {<a name="line.44"></a>
+<span class="sourceLineNo">045</span>      memstoreSizing.incMemStoreSize(0, indexOverhead, 0);<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><a name="line.48"></a>
+<span class="sourceLineNo">049</span>  @Override<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  protected long indexEntrySize() {<a name="line.50"></a>
+<span class="sourceLineNo">051</span>    return ClassSize.CONCURRENT_SKIPLISTMAP_ENTRY;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  }<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>  @Override protected boolean canBeFlattened() {<a name="line.54"></a>
+<span class="sourceLineNo">055</span>    return true;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  }<a name="line.56"></a>
+<span class="sourceLineNo">057</span>}<a name="line.57"></a>
 
 
 


[28/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
index db8431b..a8cb7c4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
@@ -885,7766 +885,7797 @@
 <span class="sourceLineNo">877</span>   * @return What the next sequence (edit) id should be.<a name="line.877"></a>
 <span class="sourceLineNo">878</span>   * @throws IOException e<a name="line.878"></a>
 <span class="sourceLineNo">879</span>   */<a name="line.879"></a>
-<span class="sourceLineNo">880</span>  private long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.880"></a>
-<span class="sourceLineNo">881</span><a name="line.881"></a>
-<span class="sourceLineNo">882</span>    //Refuse to open the region if there is no column family in the table<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.884"></a>
-<span class="sourceLineNo">885</span>          " should have at least one column family.");<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    long nextSeqId = -1;<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    try {<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.891"></a>
-<span class="sourceLineNo">892</span>      return nextSeqId;<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    } finally {<a name="line.893"></a>
-<span class="sourceLineNo">894</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      // At least it will be 0 otherwise.<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      if (nextSeqId == -1) {<a name="line.896"></a>
-<span class="sourceLineNo">897</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.897"></a>
-<span class="sourceLineNo">898</span>          " initialization.");<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      }<a name="line.899"></a>
-<span class="sourceLineNo">900</span>    }<a name="line.900"></a>
-<span class="sourceLineNo">901</span>  }<a name="line.901"></a>
-<span class="sourceLineNo">902</span><a name="line.902"></a>
-<span class="sourceLineNo">903</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.903"></a>
-<span class="sourceLineNo">904</span>      final MonitoredTask status) throws IOException {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    if (coprocessorHost != null) {<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      coprocessorHost.preOpen();<a name="line.907"></a>
-<span class="sourceLineNo">908</span>    }<a name="line.908"></a>
-<span class="sourceLineNo">909</span><a name="line.909"></a>
-<span class="sourceLineNo">910</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.910"></a>
-<span class="sourceLineNo">911</span>    // Only the primary replica should write .regioninfo<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      status.setStatus("Writing region info on filesystem");<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      fs.checkRegionInfoOnFilesystem();<a name="line.914"></a>
-<span class="sourceLineNo">915</span>    }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>    // Initialize all the HStores<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    status.setStatus("Initializing all the Stores");<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.920"></a>
-<span class="sourceLineNo">921</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.922"></a>
-<span class="sourceLineNo">923</span>      try {<a name="line.923"></a>
-<span class="sourceLineNo">924</span>        // update the stores that we are replaying<a name="line.924"></a>
-<span class="sourceLineNo">925</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        // Recover any edits if available.<a name="line.927"></a>
-<span class="sourceLineNo">928</span>        maxSeqId = Math.max(maxSeqId,<a name="line.928"></a>
-<span class="sourceLineNo">929</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        // Make sure mvcc is up to max.<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      } finally {<a name="line.932"></a>
-<span class="sourceLineNo">933</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        // update the stores that we are done replaying<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        stores.forEach(HStore::stopReplayingFromWAL);<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>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    this.writestate.flushRequested = false;<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    this.writestate.compacting.set(0);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>    if (this.writestate.writesEnabled) {<a name="line.944"></a>
-<span class="sourceLineNo">945</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      // Remove temporary data left over from old regions<a name="line.946"></a>
-<span class="sourceLineNo">947</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.947"></a>
-<span class="sourceLineNo">948</span>      fs.cleanupTempDir();<a name="line.948"></a>
-<span class="sourceLineNo">949</span>    }<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>    if (this.writestate.writesEnabled) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      // these directories here on open.  We may be opening a region that was<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      // being split but we crashed in the middle of it all.<a name="line.955"></a>
-<span class="sourceLineNo">956</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      fs.cleanupAnySplitDetritus();<a name="line.957"></a>
-<span class="sourceLineNo">958</span>      fs.cleanupMergesDir();<a name="line.958"></a>
-<span class="sourceLineNo">959</span>    }<a name="line.959"></a>
+<span class="sourceLineNo">880</span>  @VisibleForTesting<a name="line.880"></a>
+<span class="sourceLineNo">881</span>  long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>    //Refuse to open the region if there is no column family in the table<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.885"></a>
+<span class="sourceLineNo">886</span>          " should have at least one column family.");<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    }<a name="line.887"></a>
+<span class="sourceLineNo">888</span><a name="line.888"></a>
+<span class="sourceLineNo">889</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>    long nextSeqId = -1;<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    try {<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      return nextSeqId;<a name="line.893"></a>
+<span class="sourceLineNo">894</span>    } catch (IOException e) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      LOG.warn("Failed initialize of region= {}, starting to roll back memstore",<a name="line.895"></a>
+<span class="sourceLineNo">896</span>          getRegionInfo().getRegionNameAsString(), e);<a name="line.896"></a>
+<span class="sourceLineNo">897</span>      // global memstore size will be decreased when dropping memstore<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      try {<a name="line.898"></a>
+<span class="sourceLineNo">899</span>        //drop the memory used by memstore if open region fails<a name="line.899"></a>
+<span class="sourceLineNo">900</span>        dropMemStoreContents();<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      } catch (IOException ioE) {<a name="line.901"></a>
+<span class="sourceLineNo">902</span>        if (conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {<a name="line.902"></a>
+<span class="sourceLineNo">903</span>          LOG.warn("Failed drop memstore of region= {}, "<a name="line.903"></a>
+<span class="sourceLineNo">904</span>                  + "some chunks may not released forever since MSLAB is enabled",<a name="line.904"></a>
+<span class="sourceLineNo">905</span>              getRegionInfo().getRegionNameAsString());<a name="line.905"></a>
+<span class="sourceLineNo">906</span>        }<a name="line.906"></a>
+<span class="sourceLineNo">907</span><a name="line.907"></a>
+<span class="sourceLineNo">908</span>      }<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      throw e;<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    } finally {<a name="line.910"></a>
+<span class="sourceLineNo">911</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      // At least it will be 0 otherwise.<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      if (nextSeqId == -1) {<a name="line.913"></a>
+<span class="sourceLineNo">914</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.914"></a>
+<span class="sourceLineNo">915</span>          " initialization.");<a name="line.915"></a>
+<span class="sourceLineNo">916</span>      }<a name="line.916"></a>
+<span class="sourceLineNo">917</span>    }<a name="line.917"></a>
+<span class="sourceLineNo">918</span>  }<a name="line.918"></a>
+<span class="sourceLineNo">919</span><a name="line.919"></a>
+<span class="sourceLineNo">920</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.920"></a>
+<span class="sourceLineNo">921</span>      final MonitoredTask status) throws IOException {<a name="line.921"></a>
+<span class="sourceLineNo">922</span>    if (coprocessorHost != null) {<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.923"></a>
+<span class="sourceLineNo">924</span>      coprocessorHost.preOpen();<a name="line.924"></a>
+<span class="sourceLineNo">925</span>    }<a name="line.925"></a>
+<span class="sourceLineNo">926</span><a name="line.926"></a>
+<span class="sourceLineNo">927</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.927"></a>
+<span class="sourceLineNo">928</span>    // Only the primary replica should write .regioninfo<a name="line.928"></a>
+<span class="sourceLineNo">929</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>      status.setStatus("Writing region info on filesystem");<a name="line.930"></a>
+<span class="sourceLineNo">931</span>      fs.checkRegionInfoOnFilesystem();<a name="line.931"></a>
+<span class="sourceLineNo">932</span>    }<a name="line.932"></a>
+<span class="sourceLineNo">933</span><a name="line.933"></a>
+<span class="sourceLineNo">934</span>    // Initialize all the HStores<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    status.setStatus("Initializing all the Stores");<a name="line.935"></a>
+<span class="sourceLineNo">936</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.937"></a>
+<span class="sourceLineNo">938</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.938"></a>
+<span class="sourceLineNo">939</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.939"></a>
+<span class="sourceLineNo">940</span>      try {<a name="line.940"></a>
+<span class="sourceLineNo">941</span>        // update the stores that we are replaying<a name="line.941"></a>
+<span class="sourceLineNo">942</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.942"></a>
+<span class="sourceLineNo">943</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.943"></a>
+<span class="sourceLineNo">944</span>        // Recover any edits if available.<a name="line.944"></a>
+<span class="sourceLineNo">945</span>        maxSeqId = Math.max(maxSeqId,<a name="line.945"></a>
+<span class="sourceLineNo">946</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.946"></a>
+<span class="sourceLineNo">947</span>        // Make sure mvcc is up to max.<a name="line.947"></a>
+<span class="sourceLineNo">948</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      } finally {<a name="line.949"></a>
+<span class="sourceLineNo">950</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        // update the stores that we are done replaying<a name="line.951"></a>
+<span class="sourceLineNo">952</span>        stores.forEach(HStore::stopReplayingFromWAL);<a name="line.952"></a>
+<span class="sourceLineNo">953</span>      }<a name="line.953"></a>
+<span class="sourceLineNo">954</span>    }<a name="line.954"></a>
+<span class="sourceLineNo">955</span>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.955"></a>
+<span class="sourceLineNo">956</span><a name="line.956"></a>
+<span class="sourceLineNo">957</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.957"></a>
+<span class="sourceLineNo">958</span>    this.writestate.flushRequested = false;<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    this.writestate.compacting.set(0);<a name="line.959"></a>
 <span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>    // Initialize split policy<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.962"></a>
-<span class="sourceLineNo">963</span><a name="line.963"></a>
-<span class="sourceLineNo">964</span>    // Initialize flush policy<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.965"></a>
-<span class="sourceLineNo">966</span><a name="line.966"></a>
-<span class="sourceLineNo">967</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    for (HStore store: stores.values()) {<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<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>    // Use maximum of log sequenceid or that which was found in stores<a name="line.972"></a>
-<span class="sourceLineNo">973</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.973"></a>
-<span class="sourceLineNo">974</span>    long maxSeqIdFromFile =<a name="line.974"></a>
-<span class="sourceLineNo">975</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.975"></a>
-<span class="sourceLineNo">976</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.976"></a>
-<span class="sourceLineNo">977</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    // the max sequence id file.<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.985"></a>
-<span class="sourceLineNo">986</span><a name="line.986"></a>
-<span class="sourceLineNo">987</span>    // A region can be reopened if failed a split; reset flags<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    this.closing.set(false);<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    this.closed.set(false);<a name="line.989"></a>
-<span class="sourceLineNo">990</span><a name="line.990"></a>
-<span class="sourceLineNo">991</span>    if (coprocessorHost != null) {<a name="line.991"></a>
-<span class="sourceLineNo">992</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.992"></a>
-<span class="sourceLineNo">993</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.993"></a>
-<span class="sourceLineNo">994</span>      coprocessorHost.postOpen();<a name="line.994"></a>
-<span class="sourceLineNo">995</span>    }<a name="line.995"></a>
-<span class="sourceLineNo">996</span><a name="line.996"></a>
-<span class="sourceLineNo">997</span>    status.markComplete("Region opened successfully");<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    return nextSeqId;<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>   * Open all Stores.<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>   * @param reporter<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   * @param status<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>   * @return Highest sequenceId found out in a Store.<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * @throws IOException<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   */<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      throws IOException {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>    // Load in all the HStores.<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    long maxSeqId = -1;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    long maxMemstoreTS = -1;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span><a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span><a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      // initialize each store in parallel<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>          @Override<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>          public HStore call() throws IOException {<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>            return instantiateHStore(family);<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          }<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>        });<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      }<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>      boolean allStoresOpened = false;<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>      boolean hasSloppyStores = false;<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>      try {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>          HStore store = future.get();<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>          if (store.isSloppyMemStore()) {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            hasSloppyStores = true;<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>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>              storeMaxSequenceId);<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            maxSeqId = storeMaxSequenceId;<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>          }<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>          }<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>        }<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>        allStoresOpened = true;<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>        if(hasSloppyStores) {<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>                  .build();<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        }<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>      } catch (InterruptedException e) {<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>      } catch (ExecutionException e) {<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        throw new IOException(e.getCause());<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>      } finally {<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        if (!allStoresOpened) {<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>          // something went wrong, close all opened stores<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>          for (HStore store : this.stores.values()) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>            try {<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>              store.close();<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>            } catch (IOException e) {<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>              LOG.warn("close store failed", e);<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>            }<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          }<a name="line.1075"></a>
+<span class="sourceLineNo">961</span>    if (this.writestate.writesEnabled) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      // Remove temporary data left over from old regions<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      fs.cleanupTempDir();<a name="line.965"></a>
+<span class="sourceLineNo">966</span>    }<a name="line.966"></a>
+<span class="sourceLineNo">967</span><a name="line.967"></a>
+<span class="sourceLineNo">968</span>    if (this.writestate.writesEnabled) {<a name="line.968"></a>
+<span class="sourceLineNo">969</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.969"></a>
+<span class="sourceLineNo">970</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.970"></a>
+<span class="sourceLineNo">971</span>      // these directories here on open.  We may be opening a region that was<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      // being split but we crashed in the middle of it all.<a name="line.972"></a>
+<span class="sourceLineNo">973</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.973"></a>
+<span class="sourceLineNo">974</span>      fs.cleanupAnySplitDetritus();<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      fs.cleanupMergesDir();<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    }<a name="line.976"></a>
+<span class="sourceLineNo">977</span><a name="line.977"></a>
+<span class="sourceLineNo">978</span>    // Initialize split policy<a name="line.978"></a>
+<span class="sourceLineNo">979</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.979"></a>
+<span class="sourceLineNo">980</span><a name="line.980"></a>
+<span class="sourceLineNo">981</span>    // Initialize flush policy<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.982"></a>
+<span class="sourceLineNo">983</span><a name="line.983"></a>
+<span class="sourceLineNo">984</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.984"></a>
+<span class="sourceLineNo">985</span>    for (HStore store: stores.values()) {<a name="line.985"></a>
+<span class="sourceLineNo">986</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<a name="line.986"></a>
+<span class="sourceLineNo">987</span>    }<a name="line.987"></a>
+<span class="sourceLineNo">988</span><a name="line.988"></a>
+<span class="sourceLineNo">989</span>    // Use maximum of log sequenceid or that which was found in stores<a name="line.989"></a>
+<span class="sourceLineNo">990</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.990"></a>
+<span class="sourceLineNo">991</span>    long maxSeqIdFromFile =<a name="line.991"></a>
+<span class="sourceLineNo">992</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.994"></a>
+<span class="sourceLineNo">995</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.995"></a>
+<span class="sourceLineNo">996</span>    // the max sequence id file.<a name="line.996"></a>
+<span class="sourceLineNo">997</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.997"></a>
+<span class="sourceLineNo">998</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.998"></a>
+<span class="sourceLineNo">999</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<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>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span><a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>    // A region can be reopened if failed a split; reset flags<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>    this.closing.set(false);<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    this.closed.set(false);<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span><a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>    if (coprocessorHost != null) {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>      coprocessorHost.postOpen();<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>    }<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span><a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>    status.markComplete("Region opened successfully");<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>    return nextSeqId;<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>  }<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span><a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>  /**<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>   * Open all Stores.<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>   * @param reporter<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>   * @param status<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>   * @return Highest sequenceId found out in a Store.<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>   * @throws IOException<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>   */<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>      throws IOException {<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    // Load in all the HStores.<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>    long maxSeqId = -1;<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>    long maxMemstoreTS = -1;<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span><a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>      // initialize each store in parallel<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>          @Override<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>          public HStore call() throws IOException {<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>            return instantiateHStore(family);<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>          }<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>        });<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>      }<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>      boolean allStoresOpened = false;<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>      boolean hasSloppyStores = false;<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>      try {<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>          HStore store = future.get();<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>          if (store.isSloppyMemStore()) {<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>            hasSloppyStores = true;<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>          }<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span><a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>              storeMaxSequenceId);<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>            maxSeqId = storeMaxSequenceId;<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>          }<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>          }<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span>        }<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>        allStoresOpened = true;<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>        if(hasSloppyStores) {<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>                  .build();<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1075"></a>
 <span class="sourceLineNo">1076</span>        }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      }<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    }<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>  }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span><a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>    // Initialize all the HStores<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>    status.setStatus("Warming up all the Stores");<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    try {<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>      initializeStores(reporter, status);<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>    } finally {<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>      status.markComplete("Done warming up.");<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>    }<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>  }<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>   * @return Map of StoreFiles by column family<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>   */<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    for (HStore store : stores.values()) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      if (storeFiles == null) {<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>        continue;<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>        storeFileNames.add(storeFile.getPath());<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      }<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>    }<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>    return allStoreFiles;<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>  }<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span><a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>  @VisibleForTesting<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>        mvcc);<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  }<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span><a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>        mvcc);<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span><a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>    // Store SeqId in HDFS when a region closes<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    // table is still online<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>        mvcc.getReadPoint());<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>    }<a name="line.1136"></a>
+<span class="sourceLineNo">1077</span>      } catch (InterruptedException e) {<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>      } catch (ExecutionException e) {<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>        throw new IOException(e.getCause());<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      } finally {<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>        if (!allStoresOpened) {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>          // something went wrong, close all opened stores<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>          for (HStore store : this.stores.values()) {<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>            try {<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>              store.close();<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>            } catch (IOException e) {<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>              LOG.warn("close store failed", e);<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>            }<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>      }<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>    }<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>  }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span><a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>    // Initialize all the HStores<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>    status.setStatus("Warming up all the Stores");<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>    try {<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>      initializeStores(reporter, status);<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>    } finally {<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>      status.markComplete("Done warming up.");<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>    }<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>  }<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span><a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>  /**<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>   * @return Map of StoreFiles by column family<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>   */<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>    for (HStore store : stores.values()) {<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>      if (storeFiles == null) {<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>        continue;<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span>      }<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>        storeFileNames.add(storeFile.getPath());<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>      }<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>    }<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>    return allStoreFiles;<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>  }<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span><a name="line.1128"></a>
+<span class="sourceLineNo">1129</span>  @VisibleForTesting<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>        mvcc);<a name="line.1136"></a>
 <span class="sourceLineNo">1137</span>  }<a name="line.1137"></a>
 <span class="sourceLineNo">1138</span><a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>  /**<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>   * @return True if this region has references.<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>   */<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>  public boolean hasReferences() {<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<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>  public void blockUpdates() {<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>    this.updatesLock.writeLock().lock();<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>  }<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span><a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>  public void unblockUpdates() {<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>    this.updatesLock.writeLock().unlock();<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>  }<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span><a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>    return hdfsBlocksDistribution;<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>  }<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span><a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>  /**<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>   * @param conf configuration<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>   * @param regionInfo encoded name of the region<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>   * @throws IOException<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>   */<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>  }<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span><a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>  /**<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>   * @param conf configuration<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>   * @param regionInfo encoded name of the region<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>   * @param tablePath the table directory<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>   * @throws IOException<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>   */<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1186"></a>
-<span class="sourceLineNo">1187</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1188"></a>
-<span class="sourceLineNo">1189</span><a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span>      if (locatedFileStatusList == null) {<a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>        continue;<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>      }<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span><a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>        Path p = status.getPath();<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>          // creation<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>              status.getBlockLocations());<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span>        } else {<a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>          throw new IOException("path=" + p<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>              + " doesn't look like a valid StoreFile");<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>        }<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>      }<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>    }<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>    return hdfsBlocksDistribution;<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>   * Increase the size of mem store in this region and the size of global mem<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>   * store<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>   */<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>  }<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span><a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>    if (this.rsAccounting != null) {<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>    }<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>    long dataSize =<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1234"></a>
+<span class="sourceLineNo">1139</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span>        mvcc);<a name="line.1145"></a>
+<span class="sourceLineNo">1146</span><a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>    // Store SeqId in HDFS when a region closes<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>    // table is still online<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span>        mvcc.getReadPoint());<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>    }<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>  }<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span><a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>  /**<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>   * @return True if this region has references.<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>   */<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>  public boolean hasReferences() {<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>  }<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span><a name="line.1162"></a>
+<span class="sourceLineNo">1163</span>  public void blockUpdates() {<a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>    this.updatesLock.writeLock().lock();<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>  }<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span><a name="line.1166"></a>
+<span class="sourceLineNo">1167</span>  public void unblockUpdates() {<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>    this.updatesLock.writeLock().unlock();<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>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1172"></a>
+<span class="sourceLineNo">1173</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1174"></a>
+<span class="sourceLineNo">1175</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>    return hdfsBlocksDistribution;<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span>  }<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span><a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>  /**<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>   * @param conf configuration<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1182"></a>
+<span class="sourceLineNo">1183</span>   * @param regionInfo encoded name of the region<a name="line.1183"></a>
+<span class="sourceLineNo">1184</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1184"></a>
+<span class="sourceLineNo">1185</span>   * @throws IOException<a name="line.1185"></a>
+<span class="sourceLineNo">1186</span>   */<a name="line.1186"></a>
+<span class="sourceLineNo">1187</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1187"></a>
+<span class="sourceLineNo">1188</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1188"></a>
+<span class="sourceLineNo">1189</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1189"></a>
+<span class="sourceLineNo">1190</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1190"></a>
+<span class="sourceLineNo">1191</span>  }<a name="line.1191"></a>
+<span class="sourceLineNo">1192</span><a name="line.1192"></a>
+<span class="sourceLineNo">1193</span>  /**<a name="line.1193"></a>
+<span class="sourceLineNo">1194</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1194"></a>
+<span class="sourceLineNo">1195</span>   * @param conf configuration<a name="line.1195"></a>
+<span class="sourceLineNo">1196</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1196"></a>
+<span class="sourceLineNo">1197</span>   * @param regionInfo encoded name of the region<a name="line.1197"></a>
+<span class="sourceLineNo">1198</span>   * @param tablePath the table directory<a name="line.1198"></a>
+<span class="sourceLineNo">1199</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1199"></a>
+<span class="sourceLineNo">1200</span>   * @throws IOException<a name="line.1200"></a>
+<span class="sourceLineNo">1201</span>   */<a name="line.1201"></a>
+<span class="sourceLineNo">1202</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1202"></a>
+<span class="sourceLineNo">1203</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1203"></a>
+<span class="sourceLineNo">1204</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1204"></a>
+<span class="sourceLineNo">1205</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1205"></a>
+<span class="sourceLineNo">1206</span><a name="line.1206"></a>
+<span class="sourceLineNo">1207</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1207"></a>
+<span class="sourceLineNo">1208</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1208"></a>
+<span class="sourceLineNo">1209</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1209"></a>
+<span class="sourceLineNo">1210</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1210"></a>
+<span class="sourceLineNo">1211</span>      if (locatedFileStatusList == null) {<a name="line.1211"></a>
+<span class="sourceLineNo">1212</span>        continue;<a name="line.1212"></a>
+<span class="sourceLineNo">1213</span>      }<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span><a name="line.1214"></a>
+<span class="sourceLineNo">1215</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1215"></a>
+<span class="sourceLineNo">1216</span>        Path p = status.getPath();<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1217"></a>
+<span class="sourceLineNo">1218</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span>          // creation<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1224"></a>
+<span class="sourceLineNo">1225</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1225"></a>
+<span class="sourceLineNo">1226</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1226"></a>
+<span class="sourceLineNo">1227</span>              status.getBlockLocations());<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span>        } else {<a name="line.1228"></a>
+<span class="sourceLineNo">1229</span>          throw new IOException("path=" + p<a name="line.1229"></a>
+<span class="sourceLineNo">1230</span>              + " doesn't look like a valid StoreFile");<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>    }<a name="line.1233"></a>
+<span class="sourceLineNo">1234</span>    return hdfsBlocksDistribution;<a name="line.1234"></a>
 <span class="sourceLineNo">1235</span>  }<a name="line.1235"></a>
 <span class="sourceLineNo">1236</span><a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>  }<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span><a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>    if (this.rsAccounting != null) {<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>    }<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>    long dataSize =<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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 checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    if (memStoreDataSize &lt; 0) {<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>    }<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>  }<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span><a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>  @Override<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>  public RegionInfo getRegionInfo() {<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>    return this.fs.getRegionInfo();<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>  }<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span><a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>  /**<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>   * @return Instance of {@link RegionServerServices} used by this HRegion.<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>   * Can be null.<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>   */<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>  RegionServerServices getRegionServerServices() {<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>    return this.rsServices;<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>  }<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span><a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>  @Override<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>  public long getReadRequestsCount() {<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>    return readRequestsCount.sum();<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>  }<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span><a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>  @Override<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>  public long getCpRequestsCount() {<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>    return cpRequestsCount.sum();<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>  @Override<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>  public long getFilteredReadRequestsCount() {<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>    return filteredReadRequestsCount.sum();<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>  @Override<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>  public long getWriteRequestsCount() {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    return writeRequestsCount.sum();<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>  }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>  @Override<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>  public long getMemStoreDataSize() {<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>    return memStoreSizing.getDataSize();<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>  @Override<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>  public long getMemStoreHeapSize() {<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>    return memStoreSizing.getHeapSize();<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>  }<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span><a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>  @Override<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>  public long getMemStoreOffHeapSize() {<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>    return memStoreSizing.getOffHeapSize();<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>  }<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span><a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>  /** @return store services for this region, to access services required by store level needs */<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>  public RegionServicesForStores getRegionServicesForStores() {<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>    return regionServicesForStores;<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>  @Override<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>  public long getNumMutationsWithoutWAL() {<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>    return numMutationsWithoutWAL.sum();<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>  @Override<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>  public long getDataInMemoryWithoutWAL() {<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>    return dataInMemoryWithoutWAL.sum();<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>  }<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span><a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>  @Override<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>  public long getBlockedRequestsCount() {<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>    return blockedRequestsCount.sum();<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>  }<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span><a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>  @Override<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>  public long getCheckAndMutateChecksPassed() {<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>    return checkAndMutateChecksPassed.sum();<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 long getCheckAndMutateChecksFailed() {<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    return checkAndMutateChecksFailed.sum();<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>  // TODO Needs to check whether we should expose our metrics system to CPs. If CPs themselves doing<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>  // the op and bypassing the core, this might be needed? Should be stop supporting the bypass<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>  // feature?<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>  public MetricsRegion getMetrics() {<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>    return metricsRegion;<a name="line.1342"></a>
+<span class="sourceLineNo">1237</span>  /**<a name="line.1237"></a>
+<span class="sourceLineNo">1238</span>   * Increase the size of mem store in this region and the size of global mem<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span>   * store<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span>   */<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>  }<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span><a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>    if (this.rsAccounting != null) {<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>    }<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>    long dataSize =<a name="line.1249"></a>
+<span class="sourceLineNo">1250</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1250"></a>
+<span class="sourceLineNo">1251</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>  }<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span><a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span>  }<a name="line.1256"></a>
+<span class="sourceLineNo">1257</span><a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>    if (this.rsAccounting != null) {<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>    }<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>    long dataSize =<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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>  private void checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>    if (memStoreDataSize &lt; 0) {<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>    }<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>  }<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span><a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>  @Override<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>  public RegionInfo getRegionInfo() {<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>    return this.fs.getRegionInfo();<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>  }<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="s

<TRUNCATED>

[06/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html
index 5d2c1df..7959886 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.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};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.59">TestCreateTableProcedure</a>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.55">TestCreateTableProcedure</a>
 extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestTableDDLProcedureBase.html" title="class in org.apache.hadoop.hbase.master.procedure">TestTableDDLProcedureBase</a></pre>
 </li>
 </ul>
@@ -166,10 +166,6 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Test
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#F2">F2</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/master/procedure/TestCreateTableProcedure.html#LOG">LOG</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><code>org.junit.rules.TestName</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#name">name</a></span></code>&nbsp;</td>
 </tr>
@@ -222,38 +218,34 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Test
 </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/master/procedure/TestCreateTableProcedure.html#testMRegions--">testMRegions</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/master/procedure/TestCreateTableProcedure.html#testOnHDFSFailure--">testOnHDFSFailure</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i4" 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/master/procedure/TestCreateTableProcedure.html#testRecoveryAndDoubleExecution--">testRecoveryAndDoubleExecution</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i4" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#testRollbackAndDoubleExecution--">testRollbackAndDoubleExecution</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#testRollbackAndDoubleExecution-org.apache.hadoop.hbase.client.TableDescriptorBuilder-">testRollbackAndDoubleExecution</a></span>(org.apache.hadoop.hbase.client.TableDescriptorBuilder&nbsp;builder)</code>&nbsp;</td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#testRollbackAndDoubleExecutionOnMobTable--">testRollbackAndDoubleExecutionOnMobTable</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#testSimpleCreate--">testSimpleCreate</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#testSimpleCreate-org.apache.hadoop.hbase.TableName-byte:A:A-">testSimpleCreate</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                 byte[][]&nbsp;splitKeys)</code>&nbsp;</td>
 </tr>
-<tr id="i10" class="altColor">
+<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/master/procedure/TestCreateTableProcedure.html#testSimpleCreateWithSplits--">testSimpleCreateWithSplits</a></span>()</code>&nbsp;</td>
 </tr>
@@ -292,16 +284,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Test
 <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/master/procedure/TestCreateTableProcedure.html#line.62">CLASS_RULE</a></pre>
-</li>
-</ul>
-<a name="LOG">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.65">LOG</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/master/procedure/TestCreateTableProcedure.html#line.58">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="F1">
@@ -310,7 +293,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Test
 <ul class="blockList">
 <li class="blockList">
 <h4>F1</h4>
-<pre>private 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/procedure/TestCreateTableProcedure.html#line.67">F1</a></pre>
+<pre>private 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/procedure/TestCreateTableProcedure.html#line.61">F1</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.master.procedure.TestCreateTableProcedure.F1">Constant Field Values</a></dd>
@@ -323,7 +306,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Test
 <ul class="blockList">
 <li class="blockList">
 <h4>F2</h4>
-<pre>private 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/procedure/TestCreateTableProcedure.html#line.68">F2</a></pre>
+<pre>private 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/procedure/TestCreateTableProcedure.html#line.62">F2</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.master.procedure.TestCreateTableProcedure.F2">Constant Field Values</a></dd>
@@ -336,7 +319,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Test
 <ul class="blockListLast">
 <li class="blockList">
 <h4>name</h4>
-<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.70">name</a></pre>
+<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.65">name</a></pre>
 </li>
 </ul>
 </li>
@@ -353,7 +336,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Test
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestCreateTableProcedure</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.59">TestCreateTableProcedure</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.55">TestCreateTableProcedure</a>()</pre>
 </li>
 </ul>
 </li>
@@ -370,7 +353,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Test
 <ul class="blockList">
 <li class="blockList">
 <h4>testSimpleCreate</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.73">testSimpleCreate</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.68">testSimpleCreate</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>
@@ -384,7 +367,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Test
 <ul class="blockList">
 <li class="blockList">
 <h4>testSimpleCreateWithSplits</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.80">testSimpleCreateWithSplits</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.75">testSimpleCreateWithSplits</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>
@@ -398,7 +381,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Test
 <ul class="blockList">
 <li class="blockList">
 <h4>testSimpleCreate</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.88">testSimpleCreate</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.83">testSimpleCreate</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                               byte[][]&nbsp;splitKeys)
                        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>
@@ -413,7 +396,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Test
 <ul class="blockList">
 <li class="blockList">
 <h4>testCreateWithoutColumnFamily</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.95">testCreateWithoutColumnFamily</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.90">testCreateWithoutColumnFamily</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>
@@ -427,7 +410,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Test
 <ul class="blockList">
 <li class="blockList">
 <h4>testCreateExisting</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.118">testCreateExisting</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.113">testCreateExisting</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>
@@ -441,7 +424,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Test
 <ul class="blockList">
 <li class="blockList">
 <h4>testRecoveryAndDoubleExecution</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.141">testRecoveryAndDoubleExecution</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.136">testRecoveryAndDoubleExecution</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>
@@ -455,7 +438,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Test
 <ul class="blockList">
 <li class="blockList">
 <h4>testRollbackAndDoubleExecution</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.161">testRollbackAndDoubleExecution</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.156">testRollbackAndDoubleExecution</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>
@@ -469,7 +452,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Test
 <ul class="blockList">
 <li class="blockList">
 <h4>testRollbackAndDoubleExecutionOnMobTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.168">testRollbackAndDoubleExecutionOnMobTable</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.163">testRollbackAndDoubleExecutionOnMobTable</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>
@@ -483,7 +466,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Test
 <ul class="blockList">
 <li class="blockList">
 <h4>testRollbackAndDoubleExecution</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.179">testRollbackAndDoubleExecution</a>(org.apache.hadoop.hbase.client.TableDescriptorBuilder&nbsp;builder)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.174">testRollbackAndDoubleExecution</a>(org.apache.hadoop.hbase.client.TableDescriptorBuilder&nbsp;builder)
                                      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>
@@ -491,27 +474,13 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Test
 </dl>
 </li>
 </ul>
-<a name="testMRegions--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>testMRegions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.206">testMRegions</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="testOnHDFSFailure--">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testOnHDFSFailure</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.262">testOnHDFSFailure</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.243">testOnHDFSFailure</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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html
new file mode 100644
index 0000000..69c3847
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html
@@ -0,0 +1,396 @@
+<!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>TestCreateTableProcedureMuitipleRegions (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="TestCreateTableProcedureMuitipleRegions (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9,"i1":9,"i2":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/TestCreateTableProcedureMuitipleRegions.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/master/procedure/TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedureFromClient.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html" target="_top">Frames</a></li>
+<li><a href="TestCreateTableProcedureMuitipleRegions.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.master.procedure</div>
+<h2 title="Class TestCreateTableProcedureMuitipleRegions" class="title">Class TestCreateTableProcedureMuitipleRegions</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.master.procedure.TestCreateTableProcedureMuitipleRegions</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/master/procedure/TestCreateTableProcedureMuitipleRegions.html#line.34">TestCreateTableProcedureMuitipleRegions</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/master/procedure/TestCreateTableProcedureMuitipleRegions.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static <a href="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/master/procedure/TestCreateTableProcedureMuitipleRegions.html#F1">F1</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static <a href="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/master/procedure/TestCreateTableProcedureMuitipleRegions.html#F2">F2</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/master/procedure/TestCreateTableProcedureMuitipleRegions.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/master/procedure/TestCreateTableProcedureMuitipleRegions.html#TestCreateTableProcedureMuitipleRegions--">TestCreateTableProcedureMuitipleRegions</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/master/procedure/TestCreateTableProcedureMuitipleRegions.html#setUp--">setUp</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/master/procedure/TestCreateTableProcedureMuitipleRegions.html#tearDown--">tearDown</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/master/procedure/TestCreateTableProcedureMuitipleRegions.html#testMRegions--">testMRegions</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/master/procedure/TestCreateTableProcedureMuitipleRegions.html#line.37">CLASS_RULE</a></pre>
+</li>
+</ul>
+<a name="UTIL">
+<!--   -->
+</a>
+<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/master/procedure/TestCreateTableProcedureMuitipleRegions.html#line.40">UTIL</a></pre>
+</li>
+</ul>
+<a name="F1">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>F1</h4>
+<pre>private 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/procedure/TestCreateTableProcedureMuitipleRegions.html#line.42">F1</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.master.procedure.TestCreateTableProcedureMuitipleRegions.F1">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="F2">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>F2</h4>
+<pre>private 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/procedure/TestCreateTableProcedureMuitipleRegions.html#line.43">F2</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.master.procedure.TestCreateTableProcedureMuitipleRegions.F2">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="TestCreateTableProcedureMuitipleRegions--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestCreateTableProcedureMuitipleRegions</h4>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html#line.34">TestCreateTableProcedureMuitipleRegions</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="setUp--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setUp</h4>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html#line.46">setUp</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="tearDown--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>tearDown</h4>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html#line.51">tearDown</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="testMRegions--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testMRegions</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html#line.56">testMRegions</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/TestCreateTableProcedureMuitipleRegions.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/master/procedure/TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedureFromClient.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html" target="_top">Frames</a></li>
+<li><a href="TestCreateTableProcedureMuitipleRegions.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/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedureFromClient.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedureFromClient.html b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedureFromClient.html
index 12e6f89..d24b71d 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedureFromClient.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedureFromClient.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestDeleteNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -401,7 +401,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/master/procedure/TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestDeleteNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TestCreateTableProcedureMuitipleRegions.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TestCreateTableProcedureMuitipleRegions.html b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TestCreateTableProcedureMuitipleRegions.html
new file mode 100644
index 0000000..597d714
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TestCreateTableProcedureMuitipleRegions.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.master.procedure.TestCreateTableProcedureMuitipleRegions (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.master.procedure.TestCreateTableProcedureMuitipleRegions (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/master/procedure/TestCreateTableProcedureMuitipleRegions.html" title="class in org.apache.hadoop.hbase.master.procedure">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/master/procedure/class-use/TestCreateTableProcedureMuitipleRegions.html" target="_top">Frames</a></li>
+<li><a href="TestCreateTableProcedureMuitipleRegions.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.master.procedure.TestCreateTableProcedureMuitipleRegions" class="title">Uses of Class<br>org.apache.hadoop.hbase.master.procedure.TestCreateTableProcedureMuitipleRegions</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.master.procedure.TestCreateTableProcedureMuitipleRegions</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/master/procedure/TestCreateTableProcedureMuitipleRegions.html" title="class in org.apache.hadoop.hbase.master.procedure">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/master/procedure/class-use/TestCreateTableProcedureMuitipleRegions.html" target="_top">Frames</a></li>
+<li><a href="TestCreateTableProcedureMuitipleRegions.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/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/master/procedure/package-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/package-frame.html
index 0067a0c..f12dbff 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/package-frame.html
@@ -25,6 +25,7 @@
 <li><a href="TestCreateNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">TestCreateNamespaceProcedure</a></li>
 <li><a href="TestCreateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">TestCreateTableProcedure</a></li>
 <li><a href="TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure</a></li>
+<li><a href="TestCreateTableProcedureMuitipleRegions.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">TestCreateTableProcedureMuitipleRegions</a></li>
 <li><a href="TestDeleteColumnFamilyProcedureFromClient.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">TestDeleteColumnFamilyProcedureFromClient</a></li>
 <li><a href="TestDeleteNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">TestDeleteNamespaceProcedure</a></li>
 <li><a href="TestDeleteTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">TestDeleteTableProcedure</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/master/procedure/package-summary.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/package-summary.html
index 4678ebc..f406f53 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/package-summary.html
@@ -135,100 +135,104 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedureFromClient.html" title="class in org.apache.hadoop.hbase.master.procedure">TestDeleteColumnFamilyProcedureFromClient</a></td>
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html" title="class in org.apache.hadoop.hbase.master.procedure">TestCreateTableProcedureMuitipleRegions</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestDeleteNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestDeleteNamespaceProcedure</a></td>
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedureFromClient.html" title="class in org.apache.hadoop.hbase.master.procedure">TestDeleteColumnFamilyProcedureFromClient</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestDeleteTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestDeleteTableProcedure</a></td>
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestDeleteNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestDeleteNamespaceProcedure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestDisableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestDisableTableProcedure</a></td>
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestDeleteTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestDeleteTableProcedure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestEnableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestEnableTableProcedure</a></td>
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestDisableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestDisableTableProcedure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestFastFailOnProcedureNotRegistered.html" title="class in org.apache.hadoop.hbase.master.procedure">TestFastFailOnProcedureNotRegistered</a></td>
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestEnableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestEnableTableProcedure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterFailoverWithProcedures.html" title="class in org.apache.hadoop.hbase.master.procedure">TestMasterFailoverWithProcedures</a></td>
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestFastFailOnProcedureNotRegistered.html" title="class in org.apache.hadoop.hbase.master.procedure">TestFastFailOnProcedureNotRegistered</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterFailoverWithProcedures.html" title="class in org.apache.hadoop.hbase.master.procedure">TestMasterFailoverWithProcedures</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterObserverPostCalls.html" title="class in org.apache.hadoop.hbase.master.procedure">TestMasterObserverPostCalls</a></td>
 <td class="colLast">
 <div class="block">Tests class that validates that "post" observer hook methods are only invoked when the operation was successful.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterObserverPostCalls.MasterObserverForTest.html" title="class in org.apache.hadoop.hbase.master.procedure">TestMasterObserverPostCalls.MasterObserverForTest</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterProcedureEvents.html" title="class in org.apache.hadoop.hbase.master.procedure">TestMasterProcedureEvents</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterProcedureScheduler.html" title="class in org.apache.hadoop.hbase.master.procedure">TestMasterProcedureScheduler</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterProcedureScheduler.TestNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestMasterProcedureScheduler.TestNamespaceProcedure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterProcedureScheduler.TestPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestMasterProcedureScheduler.TestPeerProcedure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterProcedureScheduler.TestRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestMasterProcedureScheduler.TestRegionProcedure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterProcedureScheduler.TestTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestMasterProcedureScheduler.TestTableProcedure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterProcedureScheduler.TestTableProcedureWithEvent.html" title="class in org.apache.hadoop.hbase.master.procedure">TestMasterProcedureScheduler.TestTableProcedureWithEvent</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterProcedureSchedulerConcurrency.html" title="class in org.apache.hadoop.hbase.master.procedure">TestMasterProcedureSchedulerConcurrency</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterProcedureSchedulerConcurrency.TestPeerProcedureSet.html" title="class in org.apache.hadoop.hbase.master.procedure">TestMasterProcedureSchedulerConcurrency.TestPeerProcedureSet</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterProcedureSchedulerConcurrency.TestTableProcSet.html" title="class in org.apache.hadoop.hbase.master.procedure">TestMasterProcedureSchedulerConcurrency.TestTableProcSet</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterProcedureWalLease.html" title="class in org.apache.hadoop.hbase.master.procedure">TestMasterProcedureWalLease</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestModifyNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestModifyNamespaceProcedure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestModifyTableProcedure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestProcedureAdmin.html" title="class in org.apache.hadoop.hbase.master.procedure">TestProcedureAdmin</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestProcedurePriority.html" title="class in org.apache.hadoop.hbase.master.procedure">TestProcedurePriority</a></td>
 <td class="colLast">
 <div class="block">Test to ensure that the priority for procedures and stuck checker can partially solve the problem
@@ -236,42 +240,42 @@
  period of time.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestProcedurePriority.MyCP.html" title="class in org.apache.hadoop.hbase.master.procedure">TestProcedurePriority.MyCP</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestRestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestRestoreSnapshotProcedure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestSafemodeBringsDownMaster.html" title="class in org.apache.hadoop.hbase.master.procedure">TestSafemodeBringsDownMaster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestServerCrashProcedure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestTableDDLProcedureBase.html" title="class in org.apache.hadoop.hbase.master.procedure">TestTableDDLProcedureBase</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestTableDescriptorModificationFromClient.html" title="class in org.apache.hadoop.hbase.master.procedure">TestTableDescriptorModificationFromClient</a></td>
 <td class="colLast">
 <div class="block">Verify that the HTableDescriptor is updated after
  addColumn(), deleteColumn() and modifyTable() operations.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestTruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestTruncateTableProcedure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestTruncateTableProcedure.TruncateTableProcedureOnHDFSFailure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestTruncateTableProcedure.TruncateTableProcedureOnHDFSFailure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestWALProcedureStoreOnHDFS.html" title="class in org.apache.hadoop.hbase.master.procedure">TestWALProcedureStoreOnHDFS</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
index 7e94b78..93cff0c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
@@ -134,6 +134,7 @@
 </ul>
 </li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TestCreateNamespaceProcedure</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TestCreateTableProcedureMuitipleRegions</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedureFromClient.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TestDeleteColumnFamilyProcedureFromClient</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestDeleteNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TestDeleteNamespaceProcedure</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterFailoverWithProcedures.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TestMasterFailoverWithProcedures</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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 e9d0595..391cb8c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -576,15 +576,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/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/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/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>
+<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/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/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ACTION.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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.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/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/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/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>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html
index 1df0607..99358cc 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html
@@ -225,7 +225,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegion</h3>
-<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkFamily, checkReadOnly, checkReadsEnabled, checkResources, checkRow, checkSplit, checkTimestamps, clearSplit, close, close, closeRegionOperation, closeRegionOperation, compact, compact, compact, compactStore, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, decrMemStoreSize, decrMemStoreSize, delete, delete, deregisterChildren, doRegionCompactionPrep, equals, execService, flush, flushcache, forceSplit, get, get, get, getBaseConf, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliestFlushTimeForAllStores,
  getEffectiveDurability, getExplicitSplitPoint, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLockedRows, getMaxFlushedSeqId, getMaxStoreSeqId, getMemStoreDataSize, getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNextSequenceId, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenAndCloseThreadPool, getOpenSeqNum, getPrepareFlushResult, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServerServices, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, incMemStoreSize, incMemStoreSize, increment, increment, inc
 rementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateHStore, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLoadingCfsOnDemandDefault, isMergeable, isReadOnly, isSplittable, metricsUpdateForGet, mutateRow, mutateRowsWithLocks, newHRegion, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, prepareGet, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, put, refreshStoreFiles, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, replayWALBulkLoadEventMarker, replayWALCompactionMarker, replayWALFlushCommitMarker, replayWALFlushMarker, replayWALFlushStartMarker, replayWALRegionEventMarker, reportCompactionRequestEnd, reportComp
 actionRequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rewriteCellTags, rowIsInRange, rowIsInRange, setClosing, setCompleteSequenceId, setCoprocessorHost, setHTableSpecificConf, setReadsEnabled, setTableDescriptor, setTimeoutForWriteLock, shouldFlush, shouldFlushStore, shouldForceSplit, startRegionOperation, startRegionOperation, throwException, toString, unblockUpdates, updateDeleteLatestVersionTimestamp, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion, writeRegionOpenMarker</code></li>
+<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkFamily, checkReadOnly, checkReadsEnabled, checkResources, checkRow, checkSplit, checkTimestamps, clearSplit, close, close, closeRegionOperation, closeRegionOperation, compact, compact, compact, compactStore, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, decrMemStoreSize, decrMemStoreSize, delete, delete, deregisterChildren, doRegionCompactionPrep, dropMemStoreContents, equals, execService, flush, flushcache, forceSplit, get, get, get, getBaseConf, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliest
 FlushTimeForAllStores, getEffectiveDurability, getExplicitSplitPoint, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLockedRows, getMaxFlushedSeqId, getMaxStoreSeqId, getMemStoreDataSize, getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNextSequenceId, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenAndCloseThreadPool, getOpenSeqNum, getPrepareFlushResult, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServerServices, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, incMemStoreSize, incMemStoreSize, inc
 rement, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, initialize, instantiateHStore, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLoadingCfsOnDemandDefault, isMergeable, isReadOnly, isSplittable, metricsUpdateForGet, mutateRow, mutateRowsWithLocks, newHRegion, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, prepareGet, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, put, refreshStoreFiles, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, replayWALBulkLoadEventMarker, replayWALCompactionMarker, replayWALFlushCommitMarker, replayWALFlushMarker, replayWALFlushStartMarker, replayWALRegionEventMarker, repo
 rtCompactionRequestEnd, reportCompactionRequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rewriteCellTags, rowIsInRange, rowIsInRange, setClosing, setCompleteSequenceId, setCoprocessorHost, setHTableSpecificConf, setReadsEnabled, setTableDescriptor, setTimeoutForWriteLock, shouldFlush, shouldFlushStore, shouldForceSplit, startRegionOperation, startRegionOperation, throwException, toString, unblockUpdates, updateDeleteLatestVersionTimestamp, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion, writeRegionOpenMarker</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/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.MyCompactingMemStore.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.MyCompactingMemStore.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.MyCompactingMemStore.html
index 4341727..b3a861f 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.MyCompactingMemStore.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.MyCompactingMemStore.html
@@ -168,7 +168,7 @@ extends org.apache.hadoop.hbase.regionserver.CompactingMemStore</pre>
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.AbstractMemStore</h3>
-<code>FIXED_OVERHEAD, snapshot, snapshotId</code></li>
+<code>FIXED_OVERHEAD, regionServices, snapshot, snapshotId</code></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html
index f318c67..f558d1f 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4489">TestHRegion.Appender</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4519">TestHRegion.Appender</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="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></pre>
 <div class="block">TestCase for append</div>
@@ -228,7 +228,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockList">
 <li class="blockList">
 <h4>region</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4490">region</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4520">region</a></pre>
 </li>
 </ul>
 <a name="appendRow">
@@ -237,7 +237,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockList">
 <li class="blockList">
 <h4>appendRow</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4491">appendRow</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4521">appendRow</a></pre>
 </li>
 </ul>
 <a name="family">
@@ -246,7 +246,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockList">
 <li class="blockList">
 <h4>family</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4492">family</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4522">family</a></pre>
 </li>
 </ul>
 <a name="qualifier">
@@ -255,7 +255,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockList">
 <li class="blockList">
 <h4>qualifier</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4493">qualifier</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4523">qualifier</a></pre>
 </li>
 </ul>
 <a name="CHAR">
@@ -264,7 +264,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockList">
 <li class="blockList">
 <h4>CHAR</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4494">CHAR</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4524">CHAR</a></pre>
 </li>
 </ul>
 <a name="appendCounter">
@@ -273,7 +273,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockListLast">
 <li class="blockList">
 <h4>appendCounter</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4495">appendCounter</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4525">appendCounter</a></pre>
 </li>
 </ul>
 </li>
@@ -290,7 +290,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockListLast">
 <li class="blockList">
 <h4>Appender</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4497">Appender</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4527">Appender</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
                 int&nbsp;appendCounter)</pre>
 </li>
 </ul>
@@ -308,7 +308,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4503">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4533">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>


[02/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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 fc8d06b..aa6810b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
@@ -941,519 +941,527 @@
 </td>
 </tr>
 <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
+ If replay edits fails, we need to make sure memstore is rollbacked
+ And if MSLAB is used, all chunk is released too.</div>
+</td>
+</tr>
+<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/1ff05a18/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 7bb13b6..2641e4e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -537,6 +537,7 @@
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestPerColumnFamilyFlush</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestPriorityRpc.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestPriorityRpc</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRecoveredEdits</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRecoveredEditsReplayAndAbort</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionFavoredNodes</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionIncrement</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfoBuilder.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionInfoBuilder</span></a></li>
@@ -668,11 +669,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.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DataBlockEncodingTool.Manipulation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCacheOnWriteInSchema.CacheOnWriteType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiLogThreshold.ActionType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMultiLogThreshold.ActionType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestAtomicOperation.TestStep</span></a></li>
+<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/TestRegionServerReadRequestMetrics.Metric.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionServerReadRequestMetrics.Metric</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DataBlockEncodingTool.Manipulation</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/rest/model/TestScannerModel.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/rest/model/TestScannerModel.html b/testdevapidocs/org/apache/hadoop/hbase/rest/model/TestScannerModel.html
index c9018fb..31a3c61 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/rest/model/TestScannerModel.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/rest/model/TestScannerModel.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.31">TestScannerModel</a>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.36">TestScannerModel</a>
 extends <a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestModelBase.html" title="class in org.apache.hadoop.hbase.rest.model">TestModelBase</a>&lt;org.apache.hadoop.hbase.rest.model.ScannerModel&gt;</pre>
 </li>
 </ul>
@@ -229,6 +229,26 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestModelB
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestScannerModel.html#checkModel-org.apache.hadoop.hbase.rest.model.ScannerModel-">checkModel</a></span>(org.apache.hadoop.hbase.rest.model.ScannerModel&nbsp;model)</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/rest/model/TestScannerModel.html#tesIncorrecttFilterThrowsJPE--">tesIncorrecttFilterThrowsJPE</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/rest/model/TestScannerModel.html#testExistingFilter--">testExistingFilter</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestScannerModel.html#testIncorrectFilterThrowsJME--">testIncorrectFilterThrowsJME</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestScannerModel.html#testNonExistingFilter--">testNonExistingFilter</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestScannerModel.html#verifyException-java.lang.String-">verifyException</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;FILTER)</code>&nbsp;</td>
+</tr>
 </table>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.rest.model.TestModelBase">
@@ -264,7 +284,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestModelB
 <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/rest/model/TestScannerModel.html#line.34">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/rest/model/TestScannerModel.html#line.39">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="PRIVATE">
@@ -273,7 +293,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestModelB
 <ul class="blockList">
 <li class="blockList">
 <h4>PRIVATE</h4>
-<pre>private 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/rest/model/TestScannerModel.html#line.37">PRIVATE</a></pre>
+<pre>private 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/rest/model/TestScannerModel.html#line.42">PRIVATE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.rest.model.TestScannerModel.PRIVATE">Constant Field Values</a></dd>
@@ -286,7 +306,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestModelB
 <ul class="blockList">
 <li class="blockList">
 <h4>PUBLIC</h4>
-<pre>private 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/rest/model/TestScannerModel.html#line.38">PUBLIC</a></pre>
+<pre>private 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/rest/model/TestScannerModel.html#line.43">PUBLIC</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.rest.model.TestScannerModel.PUBLIC">Constant Field Values</a></dd>
@@ -299,7 +319,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestModelB
 <ul class="blockList">
 <li class="blockList">
 <h4>START_ROW</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.39">START_ROW</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.44">START_ROW</a></pre>
 </li>
 </ul>
 <a name="END_ROW">
@@ -308,7 +328,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestModelB
 <ul class="blockList">
 <li class="blockList">
 <h4>END_ROW</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.40">END_ROW</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.45">END_ROW</a></pre>
 </li>
 </ul>
 <a name="COLUMN1">
@@ -317,7 +337,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestModelB
 <ul class="blockList">
 <li class="blockList">
 <h4>COLUMN1</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.41">COLUMN1</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.46">COLUMN1</a></pre>
 </li>
 </ul>
 <a name="COLUMN2">
@@ -326,7 +346,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestModelB
 <ul class="blockList">
 <li class="blockList">
 <h4>COLUMN2</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.42">COLUMN2</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.47">COLUMN2</a></pre>
 </li>
 </ul>
 <a name="START_TIME">
@@ -335,7 +355,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestModelB
 <ul class="blockList">
 <li class="blockList">
 <h4>START_TIME</h4>
-<pre>private static final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.43">START_TIME</a></pre>
+<pre>private static final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.48">START_TIME</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.rest.model.TestScannerModel.START_TIME">Constant Field Values</a></dd>
@@ -348,7 +368,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestModelB
 <ul class="blockList">
 <li class="blockList">
 <h4>END_TIME</h4>
-<pre>private static final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.44">END_TIME</a></pre>
+<pre>private static final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.49">END_TIME</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.rest.model.TestScannerModel.END_TIME">Constant Field Values</a></dd>
@@ -361,7 +381,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestModelB
 <ul class="blockList">
 <li class="blockList">
 <h4>CACHING</h4>
-<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.45">CACHING</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.50">CACHING</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.rest.model.TestScannerModel.CACHING">Constant Field Values</a></dd>
@@ -374,7 +394,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestModelB
 <ul class="blockList">
 <li class="blockList">
 <h4>BATCH</h4>
-<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.46">BATCH</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.51">BATCH</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.rest.model.TestScannerModel.BATCH">Constant Field Values</a></dd>
@@ -387,7 +407,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestModelB
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CACHE_BLOCKS</h4>
-<pre>private static final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.47">CACHE_BLOCKS</a></pre>
+<pre>private static final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.52">CACHE_BLOCKS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.rest.model.TestScannerModel.CACHE_BLOCKS">Constant Field Values</a></dd>
@@ -408,7 +428,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestModelB
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestScannerModel</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.49">TestScannerModel</a>()
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.54">TestScannerModel</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>
@@ -430,7 +450,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestModelB
 <ul class="blockList">
 <li class="blockList">
 <h4>buildTestModel</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.rest.model.ScannerModel&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.70">buildTestModel</a>()</pre>
+<pre>protected&nbsp;org.apache.hadoop.hbase.rest.model.ScannerModel&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.75">buildTestModel</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestModelBase.html#buildTestModel--">buildTestModel</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestModelBase.html" title="class in org.apache.hadoop.hbase.rest.model">TestModelBase</a>&lt;org.apache.hadoop.hbase.rest.model.ScannerModel&gt;</code></dd>
@@ -440,16 +460,86 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestModelB
 <a name="checkModel-org.apache.hadoop.hbase.rest.model.ScannerModel-">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>checkModel</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.87">checkModel</a>(org.apache.hadoop.hbase.rest.model.ScannerModel&nbsp;model)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.92">checkModel</a>(org.apache.hadoop.hbase.rest.model.ScannerModel&nbsp;model)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestModelBase.html#checkModel-T-">checkModel</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/rest/model/TestModelBase.html" title="class in org.apache.hadoop.hbase.rest.model">TestModelBase</a>&lt;org.apache.hadoop.hbase.rest.model.ScannerModel&gt;</code></dd>
 </dl>
 </li>
 </ul>
+<a name="testExistingFilter--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testExistingFilter</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.126">testExistingFilter</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="testNonExistingFilter--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testNonExistingFilter</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.132">testNonExistingFilter</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="testIncorrectFilterThrowsJME--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testIncorrectFilterThrowsJME</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.138">testIncorrectFilterThrowsJME</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="tesIncorrecttFilterThrowsJPE--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>tesIncorrecttFilterThrowsJPE</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.144">tesIncorrecttFilterThrowsJPE</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="verifyException-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>verifyException</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/TestScannerModel.html#line.149">verifyException</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;FILTER)
+                      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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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 29ba8c2..929782e 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/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>
+<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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
index 4d091e3..68397c8 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -142,8 +142,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.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/FaultyFSLog.FailureType.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">FaultyFSLog.FailureType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestWALSplit.Corruptions.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALSplit.Corruptions</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/IOTestProvider.AllowedOperations.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">IOTestProvider.AllowedOperations</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestWALSplit.Corruptions.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALSplit.Corruptions</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/overview-tree.html b/testdevapidocs/overview-tree.html
index 0dd7771..50a9756 100644
--- a/testdevapidocs/overview-tree.html
+++ b/testdevapidocs/overview-tree.html
@@ -2605,6 +2605,7 @@
 <li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestCounter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">TestCounter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.metrics.impl.<a href="org/apache/hadoop/hbase/metrics/impl/TestCounterImpl.html" title="class in org.apache.hadoop.hbase.metrics.impl"><span class="typeNameLink">TestCounterImpl</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestCreateNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TestCreateNamespaceProcedure</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TestCreateTableProcedureMuitipleRegions</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/TestCustomWALCellCodec.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">TestCustomWALCellCodec</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.encoding.<a href="org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.html" title="class in org.apache.hadoop.hbase.io.encoding"><span class="typeNameLink">TestDataBlockEncoders</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.encoding.<a href="org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoding.html" title="class in org.apache.hadoop.hbase.io.encoding"><span class="typeNameLink">TestDataBlockEncoding</span></a></li>
@@ -3219,6 +3220,7 @@
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/TestReadWriteSeqIdFiles.html" title="class in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestReadWriteSeqIdFiles</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/TestRecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">TestRecoverableZooKeeper</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRecoveredEdits</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRecoveredEditsReplayAndAbort</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.master.<a href="org/apache/hadoop/hbase/replication/master/TestRecoverStandbyProcedure.html" title="class in org.apache.hadoop.hbase.replication.master"><span class="typeNameLink">TestRecoverStandbyProcedure</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.metrics.impl.<a href="org/apache/hadoop/hbase/metrics/impl/TestRefCountingMap.html" title="class in org.apache.hadoop.hbase.metrics.impl"><span class="typeNameLink">TestRefCountingMap</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.coprocessor.example.<a href="org/apache/hadoop/hbase/coprocessor/example/TestRefreshHFilesEndpoint.html" title="class in org.apache.hadoop.hbase.coprocessor.example"><span class="typeNameLink">TestRefreshHFilesEndpoint</span></a></li>


[18/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
index db8431b..a8cb7c4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
@@ -885,7766 +885,7797 @@
 <span class="sourceLineNo">877</span>   * @return What the next sequence (edit) id should be.<a name="line.877"></a>
 <span class="sourceLineNo">878</span>   * @throws IOException e<a name="line.878"></a>
 <span class="sourceLineNo">879</span>   */<a name="line.879"></a>
-<span class="sourceLineNo">880</span>  private long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.880"></a>
-<span class="sourceLineNo">881</span><a name="line.881"></a>
-<span class="sourceLineNo">882</span>    //Refuse to open the region if there is no column family in the table<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.884"></a>
-<span class="sourceLineNo">885</span>          " should have at least one column family.");<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    long nextSeqId = -1;<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    try {<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.891"></a>
-<span class="sourceLineNo">892</span>      return nextSeqId;<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    } finally {<a name="line.893"></a>
-<span class="sourceLineNo">894</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      // At least it will be 0 otherwise.<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      if (nextSeqId == -1) {<a name="line.896"></a>
-<span class="sourceLineNo">897</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.897"></a>
-<span class="sourceLineNo">898</span>          " initialization.");<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      }<a name="line.899"></a>
-<span class="sourceLineNo">900</span>    }<a name="line.900"></a>
-<span class="sourceLineNo">901</span>  }<a name="line.901"></a>
-<span class="sourceLineNo">902</span><a name="line.902"></a>
-<span class="sourceLineNo">903</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.903"></a>
-<span class="sourceLineNo">904</span>      final MonitoredTask status) throws IOException {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    if (coprocessorHost != null) {<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      coprocessorHost.preOpen();<a name="line.907"></a>
-<span class="sourceLineNo">908</span>    }<a name="line.908"></a>
-<span class="sourceLineNo">909</span><a name="line.909"></a>
-<span class="sourceLineNo">910</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.910"></a>
-<span class="sourceLineNo">911</span>    // Only the primary replica should write .regioninfo<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      status.setStatus("Writing region info on filesystem");<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      fs.checkRegionInfoOnFilesystem();<a name="line.914"></a>
-<span class="sourceLineNo">915</span>    }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>    // Initialize all the HStores<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    status.setStatus("Initializing all the Stores");<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.920"></a>
-<span class="sourceLineNo">921</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.922"></a>
-<span class="sourceLineNo">923</span>      try {<a name="line.923"></a>
-<span class="sourceLineNo">924</span>        // update the stores that we are replaying<a name="line.924"></a>
-<span class="sourceLineNo">925</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        // Recover any edits if available.<a name="line.927"></a>
-<span class="sourceLineNo">928</span>        maxSeqId = Math.max(maxSeqId,<a name="line.928"></a>
-<span class="sourceLineNo">929</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        // Make sure mvcc is up to max.<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      } finally {<a name="line.932"></a>
-<span class="sourceLineNo">933</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        // update the stores that we are done replaying<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        stores.forEach(HStore::stopReplayingFromWAL);<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>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    this.writestate.flushRequested = false;<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    this.writestate.compacting.set(0);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>    if (this.writestate.writesEnabled) {<a name="line.944"></a>
-<span class="sourceLineNo">945</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      // Remove temporary data left over from old regions<a name="line.946"></a>
-<span class="sourceLineNo">947</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.947"></a>
-<span class="sourceLineNo">948</span>      fs.cleanupTempDir();<a name="line.948"></a>
-<span class="sourceLineNo">949</span>    }<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>    if (this.writestate.writesEnabled) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      // these directories here on open.  We may be opening a region that was<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      // being split but we crashed in the middle of it all.<a name="line.955"></a>
-<span class="sourceLineNo">956</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      fs.cleanupAnySplitDetritus();<a name="line.957"></a>
-<span class="sourceLineNo">958</span>      fs.cleanupMergesDir();<a name="line.958"></a>
-<span class="sourceLineNo">959</span>    }<a name="line.959"></a>
+<span class="sourceLineNo">880</span>  @VisibleForTesting<a name="line.880"></a>
+<span class="sourceLineNo">881</span>  long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>    //Refuse to open the region if there is no column family in the table<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.885"></a>
+<span class="sourceLineNo">886</span>          " should have at least one column family.");<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    }<a name="line.887"></a>
+<span class="sourceLineNo">888</span><a name="line.888"></a>
+<span class="sourceLineNo">889</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>    long nextSeqId = -1;<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    try {<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      return nextSeqId;<a name="line.893"></a>
+<span class="sourceLineNo">894</span>    } catch (IOException e) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      LOG.warn("Failed initialize of region= {}, starting to roll back memstore",<a name="line.895"></a>
+<span class="sourceLineNo">896</span>          getRegionInfo().getRegionNameAsString(), e);<a name="line.896"></a>
+<span class="sourceLineNo">897</span>      // global memstore size will be decreased when dropping memstore<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      try {<a name="line.898"></a>
+<span class="sourceLineNo">899</span>        //drop the memory used by memstore if open region fails<a name="line.899"></a>
+<span class="sourceLineNo">900</span>        dropMemStoreContents();<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      } catch (IOException ioE) {<a name="line.901"></a>
+<span class="sourceLineNo">902</span>        if (conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {<a name="line.902"></a>
+<span class="sourceLineNo">903</span>          LOG.warn("Failed drop memstore of region= {}, "<a name="line.903"></a>
+<span class="sourceLineNo">904</span>                  + "some chunks may not released forever since MSLAB is enabled",<a name="line.904"></a>
+<span class="sourceLineNo">905</span>              getRegionInfo().getRegionNameAsString());<a name="line.905"></a>
+<span class="sourceLineNo">906</span>        }<a name="line.906"></a>
+<span class="sourceLineNo">907</span><a name="line.907"></a>
+<span class="sourceLineNo">908</span>      }<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      throw e;<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    } finally {<a name="line.910"></a>
+<span class="sourceLineNo">911</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      // At least it will be 0 otherwise.<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      if (nextSeqId == -1) {<a name="line.913"></a>
+<span class="sourceLineNo">914</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.914"></a>
+<span class="sourceLineNo">915</span>          " initialization.");<a name="line.915"></a>
+<span class="sourceLineNo">916</span>      }<a name="line.916"></a>
+<span class="sourceLineNo">917</span>    }<a name="line.917"></a>
+<span class="sourceLineNo">918</span>  }<a name="line.918"></a>
+<span class="sourceLineNo">919</span><a name="line.919"></a>
+<span class="sourceLineNo">920</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.920"></a>
+<span class="sourceLineNo">921</span>      final MonitoredTask status) throws IOException {<a name="line.921"></a>
+<span class="sourceLineNo">922</span>    if (coprocessorHost != null) {<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.923"></a>
+<span class="sourceLineNo">924</span>      coprocessorHost.preOpen();<a name="line.924"></a>
+<span class="sourceLineNo">925</span>    }<a name="line.925"></a>
+<span class="sourceLineNo">926</span><a name="line.926"></a>
+<span class="sourceLineNo">927</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.927"></a>
+<span class="sourceLineNo">928</span>    // Only the primary replica should write .regioninfo<a name="line.928"></a>
+<span class="sourceLineNo">929</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>      status.setStatus("Writing region info on filesystem");<a name="line.930"></a>
+<span class="sourceLineNo">931</span>      fs.checkRegionInfoOnFilesystem();<a name="line.931"></a>
+<span class="sourceLineNo">932</span>    }<a name="line.932"></a>
+<span class="sourceLineNo">933</span><a name="line.933"></a>
+<span class="sourceLineNo">934</span>    // Initialize all the HStores<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    status.setStatus("Initializing all the Stores");<a name="line.935"></a>
+<span class="sourceLineNo">936</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.937"></a>
+<span class="sourceLineNo">938</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.938"></a>
+<span class="sourceLineNo">939</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.939"></a>
+<span class="sourceLineNo">940</span>      try {<a name="line.940"></a>
+<span class="sourceLineNo">941</span>        // update the stores that we are replaying<a name="line.941"></a>
+<span class="sourceLineNo">942</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.942"></a>
+<span class="sourceLineNo">943</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.943"></a>
+<span class="sourceLineNo">944</span>        // Recover any edits if available.<a name="line.944"></a>
+<span class="sourceLineNo">945</span>        maxSeqId = Math.max(maxSeqId,<a name="line.945"></a>
+<span class="sourceLineNo">946</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.946"></a>
+<span class="sourceLineNo">947</span>        // Make sure mvcc is up to max.<a name="line.947"></a>
+<span class="sourceLineNo">948</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      } finally {<a name="line.949"></a>
+<span class="sourceLineNo">950</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        // update the stores that we are done replaying<a name="line.951"></a>
+<span class="sourceLineNo">952</span>        stores.forEach(HStore::stopReplayingFromWAL);<a name="line.952"></a>
+<span class="sourceLineNo">953</span>      }<a name="line.953"></a>
+<span class="sourceLineNo">954</span>    }<a name="line.954"></a>
+<span class="sourceLineNo">955</span>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.955"></a>
+<span class="sourceLineNo">956</span><a name="line.956"></a>
+<span class="sourceLineNo">957</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.957"></a>
+<span class="sourceLineNo">958</span>    this.writestate.flushRequested = false;<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    this.writestate.compacting.set(0);<a name="line.959"></a>
 <span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>    // Initialize split policy<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.962"></a>
-<span class="sourceLineNo">963</span><a name="line.963"></a>
-<span class="sourceLineNo">964</span>    // Initialize flush policy<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.965"></a>
-<span class="sourceLineNo">966</span><a name="line.966"></a>
-<span class="sourceLineNo">967</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    for (HStore store: stores.values()) {<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<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>    // Use maximum of log sequenceid or that which was found in stores<a name="line.972"></a>
-<span class="sourceLineNo">973</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.973"></a>
-<span class="sourceLineNo">974</span>    long maxSeqIdFromFile =<a name="line.974"></a>
-<span class="sourceLineNo">975</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.975"></a>
-<span class="sourceLineNo">976</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.976"></a>
-<span class="sourceLineNo">977</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    // the max sequence id file.<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.985"></a>
-<span class="sourceLineNo">986</span><a name="line.986"></a>
-<span class="sourceLineNo">987</span>    // A region can be reopened if failed a split; reset flags<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    this.closing.set(false);<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    this.closed.set(false);<a name="line.989"></a>
-<span class="sourceLineNo">990</span><a name="line.990"></a>
-<span class="sourceLineNo">991</span>    if (coprocessorHost != null) {<a name="line.991"></a>
-<span class="sourceLineNo">992</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.992"></a>
-<span class="sourceLineNo">993</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.993"></a>
-<span class="sourceLineNo">994</span>      coprocessorHost.postOpen();<a name="line.994"></a>
-<span class="sourceLineNo">995</span>    }<a name="line.995"></a>
-<span class="sourceLineNo">996</span><a name="line.996"></a>
-<span class="sourceLineNo">997</span>    status.markComplete("Region opened successfully");<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    return nextSeqId;<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>   * Open all Stores.<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>   * @param reporter<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   * @param status<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>   * @return Highest sequenceId found out in a Store.<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * @throws IOException<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   */<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      throws IOException {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>    // Load in all the HStores.<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    long maxSeqId = -1;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    long maxMemstoreTS = -1;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span><a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span><a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      // initialize each store in parallel<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>          @Override<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>          public HStore call() throws IOException {<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>            return instantiateHStore(family);<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          }<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>        });<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      }<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>      boolean allStoresOpened = false;<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>      boolean hasSloppyStores = false;<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>      try {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>          HStore store = future.get();<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>          if (store.isSloppyMemStore()) {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            hasSloppyStores = true;<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>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>              storeMaxSequenceId);<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            maxSeqId = storeMaxSequenceId;<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>          }<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>          }<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>        }<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>        allStoresOpened = true;<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>        if(hasSloppyStores) {<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>                  .build();<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        }<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>      } catch (InterruptedException e) {<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>      } catch (ExecutionException e) {<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        throw new IOException(e.getCause());<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>      } finally {<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        if (!allStoresOpened) {<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>          // something went wrong, close all opened stores<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>          for (HStore store : this.stores.values()) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>            try {<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>              store.close();<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>            } catch (IOException e) {<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>              LOG.warn("close store failed", e);<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>            }<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          }<a name="line.1075"></a>
+<span class="sourceLineNo">961</span>    if (this.writestate.writesEnabled) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      // Remove temporary data left over from old regions<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      fs.cleanupTempDir();<a name="line.965"></a>
+<span class="sourceLineNo">966</span>    }<a name="line.966"></a>
+<span class="sourceLineNo">967</span><a name="line.967"></a>
+<span class="sourceLineNo">968</span>    if (this.writestate.writesEnabled) {<a name="line.968"></a>
+<span class="sourceLineNo">969</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.969"></a>
+<span class="sourceLineNo">970</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.970"></a>
+<span class="sourceLineNo">971</span>      // these directories here on open.  We may be opening a region that was<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      // being split but we crashed in the middle of it all.<a name="line.972"></a>
+<span class="sourceLineNo">973</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.973"></a>
+<span class="sourceLineNo">974</span>      fs.cleanupAnySplitDetritus();<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      fs.cleanupMergesDir();<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    }<a name="line.976"></a>
+<span class="sourceLineNo">977</span><a name="line.977"></a>
+<span class="sourceLineNo">978</span>    // Initialize split policy<a name="line.978"></a>
+<span class="sourceLineNo">979</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.979"></a>
+<span class="sourceLineNo">980</span><a name="line.980"></a>
+<span class="sourceLineNo">981</span>    // Initialize flush policy<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.982"></a>
+<span class="sourceLineNo">983</span><a name="line.983"></a>
+<span class="sourceLineNo">984</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.984"></a>
+<span class="sourceLineNo">985</span>    for (HStore store: stores.values()) {<a name="line.985"></a>
+<span class="sourceLineNo">986</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<a name="line.986"></a>
+<span class="sourceLineNo">987</span>    }<a name="line.987"></a>
+<span class="sourceLineNo">988</span><a name="line.988"></a>
+<span class="sourceLineNo">989</span>    // Use maximum of log sequenceid or that which was found in stores<a name="line.989"></a>
+<span class="sourceLineNo">990</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.990"></a>
+<span class="sourceLineNo">991</span>    long maxSeqIdFromFile =<a name="line.991"></a>
+<span class="sourceLineNo">992</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.994"></a>
+<span class="sourceLineNo">995</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.995"></a>
+<span class="sourceLineNo">996</span>    // the max sequence id file.<a name="line.996"></a>
+<span class="sourceLineNo">997</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.997"></a>
+<span class="sourceLineNo">998</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.998"></a>
+<span class="sourceLineNo">999</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<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>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span><a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>    // A region can be reopened if failed a split; reset flags<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>    this.closing.set(false);<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    this.closed.set(false);<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span><a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>    if (coprocessorHost != null) {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>      coprocessorHost.postOpen();<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>    }<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span><a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>    status.markComplete("Region opened successfully");<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>    return nextSeqId;<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>  }<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span><a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>  /**<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>   * Open all Stores.<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>   * @param reporter<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>   * @param status<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>   * @return Highest sequenceId found out in a Store.<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>   * @throws IOException<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>   */<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>      throws IOException {<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    // Load in all the HStores.<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>    long maxSeqId = -1;<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>    long maxMemstoreTS = -1;<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span><a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>      // initialize each store in parallel<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>          @Override<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>          public HStore call() throws IOException {<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>            return instantiateHStore(family);<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>          }<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>        });<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>      }<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>      boolean allStoresOpened = false;<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>      boolean hasSloppyStores = false;<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>      try {<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>          HStore store = future.get();<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>          if (store.isSloppyMemStore()) {<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>            hasSloppyStores = true;<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>          }<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span><a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>              storeMaxSequenceId);<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>            maxSeqId = storeMaxSequenceId;<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>          }<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>          }<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span>        }<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>        allStoresOpened = true;<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>        if(hasSloppyStores) {<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>                  .build();<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1075"></a>
 <span class="sourceLineNo">1076</span>        }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      }<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    }<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>  }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span><a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>    // Initialize all the HStores<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>    status.setStatus("Warming up all the Stores");<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    try {<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>      initializeStores(reporter, status);<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>    } finally {<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>      status.markComplete("Done warming up.");<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>    }<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>  }<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>   * @return Map of StoreFiles by column family<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>   */<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    for (HStore store : stores.values()) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      if (storeFiles == null) {<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>        continue;<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>        storeFileNames.add(storeFile.getPath());<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      }<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>    }<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>    return allStoreFiles;<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>  }<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span><a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>  @VisibleForTesting<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>        mvcc);<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  }<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span><a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>        mvcc);<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span><a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>    // Store SeqId in HDFS when a region closes<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    // table is still online<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>        mvcc.getReadPoint());<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>    }<a name="line.1136"></a>
+<span class="sourceLineNo">1077</span>      } catch (InterruptedException e) {<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>      } catch (ExecutionException e) {<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>        throw new IOException(e.getCause());<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      } finally {<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>        if (!allStoresOpened) {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>          // something went wrong, close all opened stores<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>          for (HStore store : this.stores.values()) {<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>            try {<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>              store.close();<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>            } catch (IOException e) {<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>              LOG.warn("close store failed", e);<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>            }<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>      }<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>    }<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>  }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span><a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>    // Initialize all the HStores<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>    status.setStatus("Warming up all the Stores");<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>    try {<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>      initializeStores(reporter, status);<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>    } finally {<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>      status.markComplete("Done warming up.");<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>    }<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>  }<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span><a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>  /**<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>   * @return Map of StoreFiles by column family<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>   */<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>    for (HStore store : stores.values()) {<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>      if (storeFiles == null) {<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>        continue;<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span>      }<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>        storeFileNames.add(storeFile.getPath());<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>      }<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>    }<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>    return allStoreFiles;<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>  }<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span><a name="line.1128"></a>
+<span class="sourceLineNo">1129</span>  @VisibleForTesting<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>        mvcc);<a name="line.1136"></a>
 <span class="sourceLineNo">1137</span>  }<a name="line.1137"></a>
 <span class="sourceLineNo">1138</span><a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>  /**<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>   * @return True if this region has references.<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>   */<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>  public boolean hasReferences() {<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<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>  public void blockUpdates() {<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>    this.updatesLock.writeLock().lock();<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>  }<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span><a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>  public void unblockUpdates() {<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>    this.updatesLock.writeLock().unlock();<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>  }<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span><a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>    return hdfsBlocksDistribution;<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>  }<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span><a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>  /**<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>   * @param conf configuration<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>   * @param regionInfo encoded name of the region<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>   * @throws IOException<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>   */<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>  }<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span><a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>  /**<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>   * @param conf configuration<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>   * @param regionInfo encoded name of the region<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>   * @param tablePath the table directory<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>   * @throws IOException<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>   */<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1186"></a>
-<span class="sourceLineNo">1187</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1188"></a>
-<span class="sourceLineNo">1189</span><a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span>      if (locatedFileStatusList == null) {<a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>        continue;<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>      }<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span><a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>        Path p = status.getPath();<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>          // creation<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>              status.getBlockLocations());<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span>        } else {<a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>          throw new IOException("path=" + p<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>              + " doesn't look like a valid StoreFile");<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>        }<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>      }<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>    }<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>    return hdfsBlocksDistribution;<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>   * Increase the size of mem store in this region and the size of global mem<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>   * store<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>   */<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>  }<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span><a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>    if (this.rsAccounting != null) {<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>    }<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>    long dataSize =<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1234"></a>
+<span class="sourceLineNo">1139</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span>        mvcc);<a name="line.1145"></a>
+<span class="sourceLineNo">1146</span><a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>    // Store SeqId in HDFS when a region closes<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>    // table is still online<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span>        mvcc.getReadPoint());<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>    }<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>  }<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span><a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>  /**<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>   * @return True if this region has references.<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>   */<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>  public boolean hasReferences() {<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>  }<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span><a name="line.1162"></a>
+<span class="sourceLineNo">1163</span>  public void blockUpdates() {<a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>    this.updatesLock.writeLock().lock();<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>  }<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span><a name="line.1166"></a>
+<span class="sourceLineNo">1167</span>  public void unblockUpdates() {<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>    this.updatesLock.writeLock().unlock();<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>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1172"></a>
+<span class="sourceLineNo">1173</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1174"></a>
+<span class="sourceLineNo">1175</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>    return hdfsBlocksDistribution;<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span>  }<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span><a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>  /**<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>   * @param conf configuration<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1182"></a>
+<span class="sourceLineNo">1183</span>   * @param regionInfo encoded name of the region<a name="line.1183"></a>
+<span class="sourceLineNo">1184</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1184"></a>
+<span class="sourceLineNo">1185</span>   * @throws IOException<a name="line.1185"></a>
+<span class="sourceLineNo">1186</span>   */<a name="line.1186"></a>
+<span class="sourceLineNo">1187</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1187"></a>
+<span class="sourceLineNo">1188</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1188"></a>
+<span class="sourceLineNo">1189</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1189"></a>
+<span class="sourceLineNo">1190</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1190"></a>
+<span class="sourceLineNo">1191</span>  }<a name="line.1191"></a>
+<span class="sourceLineNo">1192</span><a name="line.1192"></a>
+<span class="sourceLineNo">1193</span>  /**<a name="line.1193"></a>
+<span class="sourceLineNo">1194</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1194"></a>
+<span class="sourceLineNo">1195</span>   * @param conf configuration<a name="line.1195"></a>
+<span class="sourceLineNo">1196</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1196"></a>
+<span class="sourceLineNo">1197</span>   * @param regionInfo encoded name of the region<a name="line.1197"></a>
+<span class="sourceLineNo">1198</span>   * @param tablePath the table directory<a name="line.1198"></a>
+<span class="sourceLineNo">1199</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1199"></a>
+<span class="sourceLineNo">1200</span>   * @throws IOException<a name="line.1200"></a>
+<span class="sourceLineNo">1201</span>   */<a name="line.1201"></a>
+<span class="sourceLineNo">1202</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1202"></a>
+<span class="sourceLineNo">1203</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1203"></a>
+<span class="sourceLineNo">1204</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1204"></a>
+<span class="sourceLineNo">1205</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1205"></a>
+<span class="sourceLineNo">1206</span><a name="line.1206"></a>
+<span class="sourceLineNo">1207</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1207"></a>
+<span class="sourceLineNo">1208</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1208"></a>
+<span class="sourceLineNo">1209</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1209"></a>
+<span class="sourceLineNo">1210</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1210"></a>
+<span class="sourceLineNo">1211</span>      if (locatedFileStatusList == null) {<a name="line.1211"></a>
+<span class="sourceLineNo">1212</span>        continue;<a name="line.1212"></a>
+<span class="sourceLineNo">1213</span>      }<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span><a name="line.1214"></a>
+<span class="sourceLineNo">1215</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1215"></a>
+<span class="sourceLineNo">1216</span>        Path p = status.getPath();<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1217"></a>
+<span class="sourceLineNo">1218</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span>          // creation<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1224"></a>
+<span class="sourceLineNo">1225</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1225"></a>
+<span class="sourceLineNo">1226</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1226"></a>
+<span class="sourceLineNo">1227</span>              status.getBlockLocations());<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span>        } else {<a name="line.1228"></a>
+<span class="sourceLineNo">1229</span>          throw new IOException("path=" + p<a name="line.1229"></a>
+<span class="sourceLineNo">1230</span>              + " doesn't look like a valid StoreFile");<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>    }<a name="line.1233"></a>
+<span class="sourceLineNo">1234</span>    return hdfsBlocksDistribution;<a name="line.1234"></a>
 <span class="sourceLineNo">1235</span>  }<a name="line.1235"></a>
 <span class="sourceLineNo">1236</span><a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>  }<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span><a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>    if (this.rsAccounting != null) {<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>    }<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>    long dataSize =<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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 checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    if (memStoreDataSize &lt; 0) {<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>    }<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>  }<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span><a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>  @Override<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>  public RegionInfo getRegionInfo() {<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>    return this.fs.getRegionInfo();<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>  }<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span><a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>  /**<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>   * @return Instance of {@link RegionServerServices} used by this HRegion.<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>   * Can be null.<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>   */<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>  RegionServerServices getRegionServerServices() {<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>    return this.rsServices;<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>  }<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span><a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>  @Override<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>  public long getReadRequestsCount() {<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>    return readRequestsCount.sum();<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>  }<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span><a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>  @Override<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>  public long getCpRequestsCount() {<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>    return cpRequestsCount.sum();<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>  @Override<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>  public long getFilteredReadRequestsCount() {<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>    return filteredReadRequestsCount.sum();<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>  @Override<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>  public long getWriteRequestsCount() {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    return writeRequestsCount.sum();<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>  }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>  @Override<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>  public long getMemStoreDataSize() {<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>    return memStoreSizing.getDataSize();<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>  @Override<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>  public long getMemStoreHeapSize() {<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>    return memStoreSizing.getHeapSize();<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>  }<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span><a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>  @Override<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>  public long getMemStoreOffHeapSize() {<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>    return memStoreSizing.getOffHeapSize();<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>  }<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span><a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>  /** @return store services for this region, to access services required by store level needs */<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>  public RegionServicesForStores getRegionServicesForStores() {<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>    return regionServicesForStores;<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>  @Override<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>  public long getNumMutationsWithoutWAL() {<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>    return numMutationsWithoutWAL.sum();<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>  @Override<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>  public long getDataInMemoryWithoutWAL() {<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>    return dataInMemoryWithoutWAL.sum();<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>  }<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span><a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>  @Override<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>  public long getBlockedRequestsCount() {<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>    return blockedRequestsCount.sum();<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>  }<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span><a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>  @Override<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>  public long getCheckAndMutateChecksPassed() {<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>    return checkAndMutateChecksPassed.sum();<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 long getCheckAndMutateChecksFailed() {<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    return checkAndMutateChecksFailed.sum();<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>  // TODO Needs to check whether we should expose our metrics system to CPs. If CPs themselves doing<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>  // the op and bypassing the core, this might be needed? Should be stop supporting the bypass<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>  // feature?<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>  public MetricsRegion getMetrics() {<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>    return metricsRegion;<a name="line.1342"></a>
+<span class="sourceLineNo">1237</span>  /**<a name="line.1237"></a>
+<span class="sourceLineNo">1238</span>   * Increase the size of mem store in this region and the size of global mem<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span>   * store<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span>   */<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>  }<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span><a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>    if (this.rsAccounting != null) {<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>    }<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>    long dataSize =<a name="line.1249"></a>
+<span class="sourceLineNo">1250</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1250"></a>
+<span class="sourceLineNo">1251</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>  }<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span><a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span>  }<a name="line.1256"></a>
+<span class="sourceLineNo">1257</span><a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>    if (this.rsAccounting != null) {<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>    }<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>    long dataSize =<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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>  private void checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>    if (memStoreDataSize &lt; 0) {<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>    }<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>  }<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span><a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>  @Override<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>  public RegionInfo getRegionInfo() {<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>    return this.fs.getRegionInfo();<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>  }<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> 

<TRUNCATED>

[46/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html b/devapidocs/org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html
index 8f25e59..77384c1 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html
@@ -189,7 +189,8 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>protected </code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html#CSLMImmutableSegment-org.apache.hadoop.hbase.regionserver.Segment-">CSLMImmutableSegment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&nbsp;segment)</code>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html#CSLMImmutableSegment-org.apache.hadoop.hbase.regionserver.Segment-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">CSLMImmutableSegment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&nbsp;segment,
+                    <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>
 <div class="block">------------------------------------------------------------------------
  Copy C-tor to be used when new CSLMImmutableSegment is being built from a Mutable one.</div>
 </td>
@@ -277,13 +278,14 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="CSLMImmutableSegment-org.apache.hadoop.hbase.regionserver.Segment-">
+<a name="CSLMImmutableSegment-org.apache.hadoop.hbase.regionserver.Segment-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CSLMImmutableSegment</h4>
-<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html#line.39">CSLMImmutableSegment</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&nbsp;segment)</pre>
+<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html#line.39">CSLMImmutableSegment</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&nbsp;segment,
+                               <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 <div class="block">------------------------------------------------------------------------
  Copy C-tor to be used when new CSLMImmutableSegment is being built from a Mutable one.
  This C-tor should be used when active MutableSegment is pushed into the compaction
@@ -304,7 +306,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <ul class="blockList">
 <li class="blockList">
 <h4>indexEntrySize</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html#line.47">indexEntrySize</a>()</pre>
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html#line.50">indexEntrySize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntrySize--">indexEntrySize</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></code></dd>
@@ -317,7 +319,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <ul class="blockListLast">
 <li class="blockList">
 <h4>canBeFlattened</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html#line.51">canBeFlattened</a>()</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html#line.54">canBeFlattened</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html#canBeFlattened--">canBeFlattened</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html b/devapidocs/org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html
index 7352032..3a13db9 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html
@@ -249,7 +249,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>values</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver">ChunkCreator.ChunkType</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html#line.92">values</a>()</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver">ChunkCreator.ChunkType</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html#line.91">values</a>()</pre>
 <div class="block">Returns an array containing the constants of this enum type, in
 the order they are declared.  This method may be used to iterate
 over the constants as follows:
@@ -269,7 +269,7 @@ for (ChunkCreator.ChunkType c : ChunkCreator.ChunkType.values())
 <ul class="blockListLast">
 <li class="blockList">
 <h4>valueOf</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver">ChunkCreator.ChunkType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html#line.92">valueOf</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver">ChunkCreator.ChunkType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html#line.91">valueOf</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
 <div class="block">Returns the enum constant of this type with the specified name.
 The string must match <i>exactly</i> an identifier used to declare an
 enum constant in this type.  (Extraneous whitespace characters are 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html b/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html
index 478c724..0ae4764 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.587">CompactingMemStore.InMemoryCompactionRunnable</a>
+<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.586">CompactingMemStore.InMemoryCompactionRunnable</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="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></pre>
 <div class="block">The in-memory-flusher thread performs the flush asynchronously.
@@ -193,7 +193,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockListLast">
 <li class="blockList">
 <h4>InMemoryCompactionRunnable</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html#line.587">InMemoryCompactionRunnable</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html#line.586">InMemoryCompactionRunnable</a>()</pre>
 </li>
 </ul>
 </li>
@@ -210,7 +210,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html#line.589">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html#line.588">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/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html b/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html
index b9b6f76..7c1d7ef 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.87">CompactingMemStore.IndexType</a>
+<pre>public static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.86">CompactingMemStore.IndexType</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang">Enum</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a>&gt;</pre>
 <div class="block">Types of indexes (part of immutable segments) to be used after flattening,
  compaction, or merge are applied.</div>
@@ -215,7 +215,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>CSLM_MAP</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html#line.88">CSLM_MAP</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html#line.87">CSLM_MAP</a></pre>
 </li>
 </ul>
 <a name="ARRAY_MAP">
@@ -224,7 +224,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>ARRAY_MAP</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html#line.89">ARRAY_MAP</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html#line.88">ARRAY_MAP</a></pre>
 </li>
 </ul>
 <a name="CHUNK_MAP">
@@ -233,7 +233,7 @@ the order they are declared.</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CHUNK_MAP</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html#line.90">CHUNK_MAP</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html#line.89">CHUNK_MAP</a></pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html b/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html
index 1d60a43..93beb8b 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html
@@ -233,10 +233,6 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#pipeline">pipeline</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#regionServices">regionServices</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#store">store</a></span></code>&nbsp;</td>
 </tr>
@@ -246,7 +242,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#FIXED_OVERHEAD">FIXED_OVERHEAD</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#snapshot">snapshot</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#snapshotId">snapshotId</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#FIXED_OVERHEAD">FIXED_OVERHEAD</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#regionServices">regionServices</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#snapshot">snapshot</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#snapshotId">snapshotId</a></code></li>
 </ul>
 </li>
 </ul>
@@ -608,22 +604,13 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.68">store</a></pre>
 </li>
 </ul>
-<a name="regionServices">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>regionServices</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.69">regionServices</a></pre>
-</li>
-</ul>
 <a name="pipeline">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>pipeline</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactionPipeline.html" title="class in org.apache.hadoop.hbase.regionserver">CompactionPipeline</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.70">pipeline</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactionPipeline.html" title="class in org.apache.hadoop.hbase.regionserver">CompactionPipeline</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.69">pipeline</a></pre>
 </li>
 </ul>
 <a name="compactor">
@@ -632,7 +619,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>compactor</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreCompactor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.71">compactor</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreCompactor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.70">compactor</a></pre>
 </li>
 </ul>
 <a name="inmemoryFlushSize">
@@ -641,7 +628,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>inmemoryFlushSize</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.73">inmemoryFlushSize</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.72">inmemoryFlushSize</a></pre>
 </li>
 </ul>
 <a name="inMemoryCompactionInProgress">
@@ -650,7 +637,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>inMemoryCompactionInProgress</h4>
-<pre>private final&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/CompactingMemStore.html#line.74">inMemoryCompactionInProgress</a></pre>
+<pre>private final&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/CompactingMemStore.html#line.73">inMemoryCompactionInProgress</a></pre>
 </li>
 </ul>
 <a name="inWalReplay">
@@ -659,7 +646,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>inWalReplay</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.77">inWalReplay</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.76">inWalReplay</a></pre>
 </li>
 </ul>
 <a name="allowCompaction">
@@ -668,7 +655,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>allowCompaction</h4>
-<pre>protected final&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/CompactingMemStore.html#line.80">allowCompaction</a></pre>
+<pre>protected final&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/CompactingMemStore.html#line.79">allowCompaction</a></pre>
 </li>
 </ul>
 <a name="compositeSnapshot">
@@ -677,7 +664,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>compositeSnapshot</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.81">compositeSnapshot</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.80">compositeSnapshot</a></pre>
 </li>
 </ul>
 <a name="indexType">
@@ -686,7 +673,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>indexType</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.93">indexType</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.92">indexType</a></pre>
 </li>
 </ul>
 <a name="DEEP_OVERHEAD">
@@ -695,7 +682,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DEEP_OVERHEAD</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.95">DEEP_OVERHEAD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.94">DEEP_OVERHEAD</a></pre>
 </li>
 </ul>
 </li>
@@ -712,7 +699,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CompactingMemStore</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.104">CompactingMemStore</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.103">CompactingMemStore</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                           <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;c,
                           <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
                           <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a>&nbsp;regionServices,
@@ -738,7 +725,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>createMemStoreCompactor</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreCompactor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.129">createMemStoreCompactor</a>(<a href="../../../../../org/apache/hadoop/hbase/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase">MemoryCompactionPolicy</a>&nbsp;compactionPolicy)
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreCompactor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.128">createMemStoreCompactor</a>(<a href="../../../../../org/apache/hadoop/hbase/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase">MemoryCompactionPolicy</a>&nbsp;compactionPolicy)
                                              throws <a href="../../../../../org/apache/hadoop/hbase/exceptions/IllegalArgumentIOException.html" title="class in org.apache.hadoop.hbase.exceptions">IllegalArgumentIOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -752,7 +739,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>initInmemoryFlushSize</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.134">initInmemoryFlushSize</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.133">initInmemoryFlushSize</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 <a name="size--">
@@ -761,7 +748,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>size</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.160">size</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.159">size</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Total memory occupied by this MemStore. This won't include any size occupied by the
@@ -777,7 +764,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>preFlushSeqIDEstimation</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.175">preFlushSeqIDEstimation</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.174">preFlushSeqIDEstimation</a>()</pre>
 <div class="block">This method is called before the flush is executed.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -792,7 +779,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>isSloppy</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.187">isSloppy</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.186">isSloppy</a>()</pre>
 </li>
 </ul>
 <a name="snapshot--">
@@ -801,7 +788,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshot</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.199">snapshot</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.198">snapshot</a>()</pre>
 <div class="block">Push the current active memstore segment into the pipeline
  and create a snapshot of the tail of current compaction pipeline
  Snapshot must be cleared by call to <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#clearSnapshot-long-"><code>AbstractMemStore.clearSnapshot(long)</code></a>.
@@ -818,7 +805,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getFlushableSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.225">getFlushableSize</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.224">getFlushableSize</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html#getFlushableSize--">MemStore</a></code></span></div>
 <div class="block">Flush will first clear out the data in snapshot if any (It will take a second flush
  invocation to clear the current Cell set). If snapshot is empty, current
@@ -835,7 +822,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>setInMemoryCompactionCompleted</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.244">setInMemoryCompactionCompleted</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.243">setInMemoryCompactionCompleted</a>()</pre>
 </li>
 </ul>
 <a name="setInMemoryCompactionFlag--">
@@ -844,7 +831,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>setInMemoryCompactionFlag</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.248">setInMemoryCompactionFlag</a>()</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.247">setInMemoryCompactionFlag</a>()</pre>
 </li>
 </ul>
 <a name="keySize--">
@@ -853,7 +840,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>keySize</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.253">keySize</a>()</pre>
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.252">keySize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#keySize--">keySize</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
@@ -868,7 +855,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>heapSize</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.263">heapSize</a>()</pre>
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.262">heapSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#heapSize--">heapSize</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
@@ -884,7 +871,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>updateLowestUnflushedSequenceIdInWAL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.273">updateLowestUnflushedSequenceIdInWAL</a>(boolean&nbsp;onlyIfGreater)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.272">updateLowestUnflushedSequenceIdInWAL</a>(boolean&nbsp;onlyIfGreater)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#updateLowestUnflushedSequenceIdInWAL-boolean-">AbstractMemStore</a></code></span></div>
 <div class="block">Updates the wal with the lowest sequence id (oldest entry) that is still in memory</div>
 <dl>
@@ -902,7 +889,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>startReplayingFromWAL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.290">startReplayingFromWAL</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.289">startReplayingFromWAL</a>()</pre>
 <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>
 </li>
@@ -913,7 +900,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>stopReplayingFromWAL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.299">stopReplayingFromWAL</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.298">stopReplayingFromWAL</a>()</pre>
 <div class="block">This message intends to inform the MemStore that the replaying edits from WAL
  are done</div>
 </li>
@@ -924,7 +911,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>preUpdate</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.312">preUpdate</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.311">preUpdate</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
                             <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                             <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 <div class="block">Issue any synchronization and test needed before applying the update
@@ -948,7 +935,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>postUpdate</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.323">postUpdate</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.322">postUpdate</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#postUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-">AbstractMemStore</a></code></span></div>
 <div class="block">Issue any post update synchronization and tests</div>
 <dl>
@@ -965,7 +952,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>sizeAddedPreOperation</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.327">sizeAddedPreOperation</a>()</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.326">sizeAddedPreOperation</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#sizeAddedPreOperation--">sizeAddedPreOperation</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
@@ -978,7 +965,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getSegments</h4>
-<pre>protected&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/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.334">getSegments</a>()</pre>
+<pre>protected&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/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.333">getSegments</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#getSegments--">getSegments</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
@@ -993,7 +980,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>setCompositeSnapshot</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.345">setCompositeSnapshot</a>(boolean&nbsp;useCompositeSnapshot)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.344">setCompositeSnapshot</a>(boolean&nbsp;useCompositeSnapshot)</pre>
 </li>
 </ul>
 <a name="swapCompactedSegments-org.apache.hadoop.hbase.regionserver.VersionedSegmentsList-org.apache.hadoop.hbase.regionserver.ImmutableSegment-boolean-">
@@ -1002,7 +989,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>swapCompactedSegments</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.349">swapCompactedSegments</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a>&nbsp;versionedList,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.348">swapCompactedSegments</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a>&nbsp;versionedList,
                                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;result,
                                      boolean&nbsp;merge)</pre>
 </li>
@@ -1013,7 +1000,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>flattenOneSegment</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.360">flattenOneSegment</a>(long&nbsp;requesterVersion,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.359">flattenOneSegment</a>(long&nbsp;requesterVersion,
                               <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1029,7 +1016,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>setIndexType</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.366">setIndexType</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a>&nbsp;type)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.365">setIndexType</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a>&nbsp;type)</pre>
 </li>
 </ul>
 <a name="getIndexType--">
@@ -1038,7 +1025,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getIndexType</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.373">getIndexType</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.372">getIndexType</a>()</pre>
 </li>
 </ul>
 <a name="hasImmutableSegments--">
@@ -1047,7 +1034,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>hasImmutableSegments</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.377">hasImmutableSegments</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.376">hasImmutableSegments</a>()</pre>
 </li>
 </ul>
 <a name="getImmutableSegments--">
@@ -1056,7 +1043,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getImmutableSegments</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.381">getImmutableSegments</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.380">getImmutableSegments</a>()</pre>
 </li>
 </ul>
 <a name="getSmallestReadPoint--">
@@ -1065,7 +1052,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getSmallestReadPoint</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.385">getSmallestReadPoint</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.384">getSmallestReadPoint</a>()</pre>
 </li>
 </ul>
 <a name="getStore--">
@@ -1074,7 +1061,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getStore</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.389">getStore</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.388">getStore</a>()</pre>
 </li>
 </ul>
 <a name="getFamilyName--">
@@ -1083,7 +1070,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getFamilyName</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/CompactingMemStore.html#line.393">getFamilyName</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/CompactingMemStore.html#line.392">getFamilyName</a>()</pre>
 </li>
 </ul>
 <a name="getScanners-long-">
@@ -1092,7 +1079,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanners</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/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.398">getScanners</a>(long&nbsp;readPt)
+<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/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.397">getScanners</a>(long&nbsp;readPt)
                                   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>
@@ -1109,7 +1096,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>createList</h4>
-<pre>protected&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/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.412">createList</a>(int&nbsp;capacity)</pre>
+<pre>protected&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/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.411">createList</a>(int&nbsp;capacity)</pre>
 </li>
 </ul>
 <a name="checkAndAddToActiveSize-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
@@ -1118,7 +1105,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndAddToActiveSize</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.426">checkAndAddToActiveSize</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.425">checkAndAddToActiveSize</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive,
                                         <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
                                         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 <div class="block">Check whether anything need to be done based on the current active set size.
@@ -1141,7 +1128,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>flushInMemory</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.450">flushInMemory</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.449">flushInMemory</a>()</pre>
 </li>
 </ul>
 <a name="flushInMemory-org.apache.hadoop.hbase.regionserver.MutableSegment-">
@@ -1150,7 +1137,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>flushInMemory</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.458">flushInMemory</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.457">flushInMemory</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive)</pre>
 </li>
 </ul>
 <a name="inMemoryCompaction--">
@@ -1159,7 +1146,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>inMemoryCompaction</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.463">inMemoryCompaction</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.462">inMemoryCompaction</a>()</pre>
 </li>
 </ul>
 <a name="getLastSegment--">
@@ -1168,7 +1155,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastSegment</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.483">getLastSegment</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.482">getLastSegment</a>()</pre>
 </li>
 </ul>
 <a name="getFamilyNameInBytes--">
@@ -1177,7 +1164,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getFamilyNameInBytes</h4>
-<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.489">getFamilyNameInBytes</a>()</pre>
+<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.488">getFamilyNameInBytes</a>()</pre>
 </li>
 </ul>
 <a name="getPool--">
@@ -1186,7 +1173,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getPool</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent">ThreadPoolExecutor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.493">getPool</a>()</pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent">ThreadPoolExecutor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.492">getPool</a>()</pre>
 </li>
 </ul>
 <a name="shouldFlushInMemory-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
@@ -1195,7 +1182,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>shouldFlushInMemory</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.498">shouldFlushInMemory</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.497">shouldFlushInMemory</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive,
                                       <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
                                       <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 </li>
@@ -1206,7 +1193,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>stopCompaction</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.523">stopCompaction</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.522">stopCompaction</a>()</pre>
 <div class="block">The request to cancel the compaction asynchronous task (caused by in-memory flush)
  The compaction may still happen if the request was sent too late
  Non-blocking request</div>
@@ -1218,7 +1205,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>pushActiveToPipeline</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.529">pushActiveToPipeline</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.528">pushActiveToPipeline</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive)</pre>
 </li>
 </ul>
 <a name="pushTailToSnapshot--">
@@ -1227,7 +1214,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>pushTailToSnapshot</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.536">pushTailToSnapshot</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.535">pushTailToSnapshot</a>()</pre>
 </li>
 </ul>
 <a name="pushPipelineToSnapshot--">
@@ -1236,7 +1223,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>pushPipelineToSnapshot</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.543">pushPipelineToSnapshot</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.542">pushPipelineToSnapshot</a>()</pre>
 </li>
 </ul>
 <a name="pushToSnapshot-java.util.List-">
@@ -1245,7 +1232,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>pushToSnapshot</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.566">pushToSnapshot</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/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&gt;&nbsp;segments)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.565">pushToSnapshot</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/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&gt;&nbsp;segments)</pre>
 </li>
 </ul>
 <a name="getRegionServices--">
@@ -1254,7 +1241,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionServices</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.577">getRegionServices</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.576">getRegionServices</a>()</pre>
 </li>
 </ul>
 <a name="isMemStoreFlushingInMemory--">
@@ -1263,7 +1250,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>isMemStoreFlushingInMemory</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.595">isMemStoreFlushingInMemory</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.594">isMemStoreFlushingInMemory</a>()</pre>
 </li>
 </ul>
 <a name="getNextRow-org.apache.hadoop.hbase.Cell-">
@@ -1272,7 +1259,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getNextRow</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.604">getNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.603">getNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>cell</code> - Find the row that comes after this one.  If null, we return the
@@ -1288,7 +1275,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getInmemoryFlushSize</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.618">getInmemoryFlushSize</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.617">getInmemoryFlushSize</a>()</pre>
 </li>
 </ul>
 <a name="debug--">
@@ -1297,7 +1284,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockListLast">
 <li class="blockList">
 <h4>debug</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.623">debug</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.622">debug</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html b/devapidocs/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html
index f705e22..499ae9f 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html
@@ -425,7 +425,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getVersionedList</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.84">getVersionedList</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.91">getVersionedList</a>()</pre>
 </li>
 </ul>
 <a name="getVersionedTail--">
@@ -434,7 +434,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getVersionedTail</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.90">getVersionedTail</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.97">getVersionedTail</a>()</pre>
 </li>
 </ul>
 <a name="swap-org.apache.hadoop.hbase.regionserver.VersionedSegmentsList-org.apache.hadoop.hbase.regionserver.ImmutableSegment-boolean-boolean-">
@@ -443,7 +443,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>swap</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.117">swap</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a>&nbsp;versionedList,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.124">swap</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a>&nbsp;versionedList,
                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;segment,
                     boolean&nbsp;closeSuffix,
                     boolean&nbsp;updateRegionSize)</pre>
@@ -472,7 +472,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getSegmentsHeapSize</h4>
-<pre>private static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.161">getSegmentsHeapSize</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/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;list)</pre>
+<pre>private static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.168">getSegmentsHeapSize</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/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;list)</pre>
 </li>
 </ul>
 <a name="getSegmentsOffHeapSize-java.util.List-">
@@ -481,7 +481,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getSegmentsOffHeapSize</h4>
-<pre>private static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.169">getSegmentsOffHeapSize</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/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;list)</pre>
+<pre>private static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.176">getSegmentsOffHeapSize</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/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;list)</pre>
 </li>
 </ul>
 <a name="getSegmentsKeySize-java.util.List-">
@@ -490,7 +490,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getSegmentsKeySize</h4>
-<pre>private static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.177">getSegmentsKeySize</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/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;list)</pre>
+<pre>private static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.184">getSegmentsKeySize</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/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;list)</pre>
 </li>
 </ul>
 <a name="flattenOneSegment-long-org.apache.hadoop.hbase.regionserver.CompactingMemStore.IndexType-org.apache.hadoop.hbase.regionserver.MemStoreCompactionStrategy.Action-">
@@ -499,7 +499,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>flattenOneSegment</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.193">flattenOneSegment</a>(long&nbsp;requesterVersion,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.200">flattenOneSegment</a>(long&nbsp;requesterVersion,
                                  <a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a>&nbsp;idxType,
                                  <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)</pre>
 <div class="block">If the caller holds the current version, go over the the pipeline and try to flatten each
@@ -518,7 +518,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isEmpty</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.235">isEmpty</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.242">isEmpty</a>()</pre>
 </li>
 </ul>
 <a name="getSegments--">
@@ -527,7 +527,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getSegments</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;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.239">getSegments</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;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.246">getSegments</a>()</pre>
 </li>
 </ul>
 <a name="size--">
@@ -536,7 +536,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>size</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.243">size</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.250">size</a>()</pre>
 </li>
 </ul>
 <a name="getMinSequenceId--">
@@ -545,7 +545,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getMinSequenceId</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.247">getMinSequenceId</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.254">getMinSequenceId</a>()</pre>
 </li>
 </ul>
 <a name="getTailSize--">
@@ -554,7 +554,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getTailSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.256">getTailSize</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.263">getTailSize</a>()</pre>
 </li>
 </ul>
 <a name="getPipelineSize--">
@@ -563,7 +563,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getPipelineSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.261">getPipelineSize</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.268">getPipelineSize</a>()</pre>
 </li>
 </ul>
 <a name="swapSuffix-java.util.List-org.apache.hadoop.hbase.regionserver.ImmutableSegment-boolean-">
@@ -572,7 +572,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>swapSuffix</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.270">swapSuffix</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/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;suffix,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.277">swapSuffix</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/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;suffix,
                         <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;segment,
                         boolean&nbsp;closeSegmentsInSuffix)</pre>
 </li>
@@ -583,7 +583,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>replaceAtIndex</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.291">replaceAtIndex</a>(int&nbsp;idx,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.298">replaceAtIndex</a>(int&nbsp;idx,
                             <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;newSegment)</pre>
 </li>
 </ul>
@@ -593,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>getTail</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.301">getTail</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.308">getTail</a>()</pre>
 </li>
 </ul>
 <a name="addFirst-org.apache.hadoop.hbase.regionserver.ImmutableSegment-">
@@ -602,7 +602,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>addFirst</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.309">addFirst</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;segment)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.316">addFirst</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;segment)</pre>
 </li>
 </ul>
 <a name="validateSuffixList-java.util.LinkedList-">
@@ -611,7 +611,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>validateSuffixList</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.315">validateSuffixList</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html?is-external=true" title="class or interface in java.util">LinkedList</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&gt;&nbsp;suffix)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.322">validateSuffixList</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html?is-external=true" title="class or interface in java.util">LinkedList</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&gt;&nbsp;suffix)</pre>
 </li>
 </ul>
 </li>


[49/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index e038ba0..3604af9 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -25,8 +25,8 @@ under the License.
     <language>en-us</language>
     <copyright>&#169;2007 - 2018 The Apache Software Foundation</copyright>
     <item>
-      <title>File: 3712,
-             Errors: 15385,
+      <title>File: 3714,
+             Errors: 15386,
              Warnings: 0,
              Infos: 0
       </title>
@@ -8656,6 +8656,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestCreateTableProcedureMuitipleRegions.java">org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.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.replication.regionserver.TestMetricsReplicationSourceFactoryImpl.java">org/apache/hadoop/hbase/replication/regionserver/TestMetricsReplicationSourceFactoryImpl.java</a>
                 </td>
                 <td>
@@ -28704,6 +28718,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestRecoveredEditsReplayAndAbort.java">org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.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.regionserver.TestBulkLoad.java">org/apache/hadoop/hbase/regionserver/TestBulkLoad.java</a>
                 </td>
                 <td>
@@ -30547,7 +30575,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  1
                 </td>
               </tr>
                           <tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index 7aee9af..0348c50 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index ba14184..1d56516 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 58a1363..70dce3f 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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" />
@@ -890,7 +890,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index 22b1fd0..5161863 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index 08aaf5d..bdd6a56 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index a091b1e..61492ef 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3817,21 +3817,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>"Wed Aug 22 14:38:40 UTC 2018"</code></td>
+<td class="colLast"><code>"Thu Aug 23 14:38:46 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>"064388b4781828bb22c3ef17424d133804edc9b8"</code></td>
+<td class="colLast"><code>"6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4"</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>"170758ccf10039418b568bcc7f598a3c"</code></td>
+<td class="colLast"><code>"1e08aed9fad639e572ab4a3a705f2a05"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.url">
@@ -14000,6 +14000,34 @@
 <td class="colLast"><code>"Number of RegionServers"</code></td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.master.MetricsMasterSource.OFFLINE_REGION_COUNT_DESC">
+<!--   -->
+</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/master/MetricsMasterSource.html#OFFLINE_REGION_COUNT_DESC">OFFLINE_REGION_COUNT_DESC</a></code></td>
+<td class="colLast"><code>"Number of Offline Regions"</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.master.MetricsMasterSource.OFFLINE_REGION_COUNT_NAME">
+<!--   -->
+</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/master/MetricsMasterSource.html#OFFLINE_REGION_COUNT_NAME">OFFLINE_REGION_COUNT_NAME</a></code></td>
+<td class="colLast"><code>"offlineRegionCount"</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.master.MetricsMasterSource.ONLINE_REGION_COUNT_DESC">
+<!--   -->
+</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/master/MetricsMasterSource.html#ONLINE_REGION_COUNT_DESC">ONLINE_REGION_COUNT_DESC</a></code></td>
+<td class="colLast"><code>"Number of Online Regions"</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.master.MetricsMasterSource.ONLINE_REGION_COUNT_NAME">
+<!--   -->
+</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/master/MetricsMasterSource.html#ONLINE_REGION_COUNT_NAME">ONLINE_REGION_COUNT_NAME</a></code></td>
+<td class="colLast"><code>"onlineRegionCount"</code></td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.master.MetricsMasterSource.SERVER_CRASH_METRIC_PREFIX">
 <!--   -->
 </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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index c5b01f0..ef0e429 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -398,7 +398,7 @@
 <dd>
 <div class="block">An abstract class, which implements the behaviour shared by all concrete memstore instances.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#AbstractMemStore-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-">AbstractMemStore(Configuration, CellComparator)</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#AbstractMemStore-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.RegionServicesForStores-">AbstractMemStore(Configuration, CellComparator, RegionServicesForStores)</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/regionserver/AbstractMultiFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">AbstractMultiFileWriter</span></a> - Class in <a href="org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
 <dd>
@@ -2181,10 +2181,6 @@
 <dd>
 <div class="block">Add a region from the head or tail to the List of regions to return.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#addRegionReplayEditsSize-byte:A-org.apache.hadoop.hbase.regionserver.MemStoreSize-">addRegionReplayEditsSize(byte[], MemStoreSize)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerAccounting</a></dt>
-<dd>
-<div class="block">Add memStoreSize to replayEditsPerRegion.</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/LocalHBaseCluster.html#addRegionServer--">addRegionServer()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/LocalHBaseCluster.html" title="class in org.apache.hadoop.hbase">LocalHBaseCluster</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/LocalHBaseCluster.html#addRegionServer-org.apache.hadoop.conf.Configuration-int-">addRegionServer(Configuration, int)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/LocalHBaseCluster.html" title="class in org.apache.hadoop.hbase">LocalHBaseCluster</a></dt>
@@ -12142,10 +12138,6 @@
 <dd>
 <div class="block">Explicitly clears the region cache to fetch the latest value from META.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#clearRegionReplayEditsSize-byte:A-">clearRegionReplayEditsSize(byte[])</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerAccounting</a></dt>
-<dd>
-<div class="block">Clear a region from replayEditsPerRegion.</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/WALKeyImpl.html#clearReplicationScope--">clearReplicationScope()</a></span> - Method in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/WALKeyImpl.html" title="class in org.apache.hadoop.hbase.wal">WALKeyImpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompactSplit.html#clearShortCompactionsQueue--">clearShortCompactionsQueue()</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>
@@ -19986,8 +19978,11 @@
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#createIdentifier--">createIdentifier()</a></span> - Method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenSecretManager</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createImmutableSegment-org.apache.hadoop.hbase.CellComparator-">createImmutableSegment(CellComparator)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/SegmentFactory.html" title="class in org.apache.hadoop.hbase.regionserver">SegmentFactory</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createImmutableSegment-org.apache.hadoop.hbase.regionserver.MutableSegment-">createImmutableSegment(MutableSegment)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/SegmentFactory.html" title="class in org.apache.hadoop.hbase.regionserver">SegmentFactory</a></dt>
+<dd>
+<div class="block">create empty immutable segment for initializations
+ This ImmutableSegment is used as a place holder for snapshot in Memstore.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createImmutableSegment-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">createImmutableSegment(MutableSegment, MemStoreSizing)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/SegmentFactory.html" title="class in org.apache.hadoop.hbase.regionserver">SegmentFactory</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createImmutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreSegmentsIterator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-int-org.apache.hadoop.hbase.regionserver.MemStoreCompactionStrategy.Action-org.apache.hadoop.hbase.regionserver.CompactingMemStore.IndexType-">createImmutableSegment(Configuration, CellComparator, MemStoreSegmentsIterator, MemStoreLAB, int, MemStoreCompactionStrategy.Action, CompactingMemStore.IndexType)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/SegmentFactory.html" title="class in org.apache.hadoop.hbase.regionserver">SegmentFactory</a></dt>
 <dd>&nbsp;</dd>
@@ -20169,7 +20164,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#createMoveRegionProcedure-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">createMoveRegionProcedure(RegionInfo, ServerName)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-">createMutableSegment(Configuration, CellComparator)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/SegmentFactory.html" title="class in org.apache.hadoop.hbase.regionserver">SegmentFactory</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">createMutableSegment(Configuration, CellComparator, MemStoreSizing)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/SegmentFactory.html" title="class in org.apache.hadoop.hbase.regionserver">SegmentFactory</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegionServer.html#createMyEphemeralNode--">createMyEphemeralNode()</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>
@@ -21410,7 +21405,7 @@
 <div class="block">CSLMImmutableSegment is an abstract class that extends the API supported by a <a href="org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver"><code>Segment</code></a>,
  and <a href="org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver"><code>ImmutableSegment</code></a>.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html#CSLMImmutableSegment-org.apache.hadoop.hbase.regionserver.Segment-">CSLMImmutableSegment(Segment)</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">CSLMImmutableSegment</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html#CSLMImmutableSegment-org.apache.hadoop.hbase.regionserver.Segment-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">CSLMImmutableSegment(Segment, MemStoreSizing)</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">CSLMImmutableSegment</a></dt>
 <dd>
 <div class="block">------------------------------------------------------------------------
  Copy C-tor to be used when new CSLMImmutableSegment is being built from a Mutable one.</div>
@@ -23979,6 +23974,10 @@
 <dd>
 <div class="block">Constructor.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#DefaultMemStore-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.RegionServicesForStores-">DefaultMemStore(Configuration, CellComparator, RegionServicesForStores)</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/DefaultMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">DefaultMemStore</a></dt>
+<dd>
+<div class="block">Constructor.</div>
+</dd>
 <dt><a href="org/apache/hadoop/metrics2/lib/DefaultMetricsSystemHelper.html" title="class in org.apache.hadoop.metrics2.lib"><span class="typeNameLink">DefaultMetricsSystemHelper</span></a> - Class in <a href="org/apache/hadoop/metrics2/lib/package-summary.html">org.apache.hadoop.metrics2.lib</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/metrics2/lib/DefaultMetricsSystemHelper.html#DefaultMetricsSystemHelper--">DefaultMetricsSystemHelper()</a></span> - Constructor for class org.apache.hadoop.metrics2.lib.<a href="org/apache/hadoop/metrics2/lib/DefaultMetricsSystemHelper.html" title="class in org.apache.hadoop.metrics2.lib">DefaultMetricsSystemHelper</a></dt>
@@ -26682,6 +26681,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/visibility/DefinedSetFilterScanLabelGenerator.html#dropLabelsNotInUserAuths-java.util.List-java.util.List-java.lang.String-">dropLabelsNotInUserAuths(List&lt;String&gt;, List&lt;String&gt;, String)</a></span> - Method in class org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/DefinedSetFilterScanLabelGenerator.html" title="class in org.apache.hadoop.hbase.security.visibility">DefinedSetFilterScanLabelGenerator</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegion.html#dropMemStoreContents--">dropMemStoreContents()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a></dt>
+<dd>
+<div class="block">Be careful, this method will drop all data in the memstore of this region.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegion.html#dropMemStoreContentsForSeqId-long-org.apache.hadoop.hbase.regionserver.HStore-">dropMemStoreContentsForSeqId(long, HStore)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a></dt>
 <dd>
 <div class="block">Drops the memstore contents after replaying a flush descriptor or region open event replay
@@ -33796,7 +33799,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tool/Canary.RegionMonitor.html#generateMonitorTables-java.lang.String:A-">generateMonitorTables(String[])</a></span> - Method in class org.apache.hadoop.hbase.tool.<a href="org/apache/hadoop/hbase/tool/Canary.RegionMonitor.html" title="class in org.apache.hadoop.hbase.tool">Canary.RegionMonitor</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/SegmentFactory.html#generateMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-">generateMutableSegment(Configuration, CellComparator, MemStoreLAB)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/SegmentFactory.html" title="class in org.apache.hadoop.hbase.regionserver">SegmentFactory</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/SegmentFactory.html#generateMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">generateMutableSegment(Configuration, CellComparator, MemStoreLAB, MemStoreSizing)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/SegmentFactory.html" title="class in org.apache.hadoop.hbase.regionserver">SegmentFactory</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/ScannerIdGenerator.html#generateNewScannerId--">generateNewScannerId()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/ScannerIdGenerator.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerIdGenerator</a></dt>
 <dd>&nbsp;</dd>
@@ -46695,6 +46698,12 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/MasterQuotaManager.html#getRegionCountOfTable-org.apache.hadoop.hbase.TableName-">getRegionCountOfTable(TableName)</a></span> - Method in class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/MasterQuotaManager.html" title="class in org.apache.hadoop.hbase.quotas">MasterQuotaManager</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getRegionCounts--">getRegionCounts()</a></span> - Method in interface org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MetricsMasterWrapper.html" title="interface in org.apache.hadoop.hbase.master">MetricsMasterWrapper</a></dt>
+<dd>
+<div class="block">Get the online and offline region counts</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#getRegionCounts--">getRegionCounts()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html" title="class in org.apache.hadoop.hbase.master">MetricsMasterWrapperImpl</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/FSUtils.html#getRegionDegreeLocalityMappingFromFS-org.apache.hadoop.conf.Configuration-">getRegionDegreeLocalityMappingFromFS(Configuration)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/FSUtils.html" title="class in org.apache.hadoop.hbase.util">FSUtils</a></dt>
 <dd>
 <div class="block">This function is to scan the root path of the file system to get the
@@ -76201,7 +76210,7 @@
 <dd>
 <div class="block">A mutable segment in memstore, specifically the active segment.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MutableSegment.html#MutableSegment-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-">MutableSegment(CellSet, CellComparator, MemStoreLAB)</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MutableSegment.html#MutableSegment-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">MutableSegment(CellSet, CellComparator, MemStoreLAB, MemStoreSizing)</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/metrics2/lib/MutableSizeHistogram.html" title="class in org.apache.hadoop.metrics2.lib"><span class="typeNameLink">MutableSizeHistogram</span></a> - Class in <a href="org/apache/hadoop/metrics2/lib/package-summary.html">org.apache.hadoop.metrics2.lib</a></dt>
 <dd>
@@ -79063,6 +79072,10 @@
 <div class="block">This backwards-compatibility wrapper for permanently offlining a region
  that should not be alive.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MetricsMasterSource.html#OFFLINE_REGION_COUNT_DESC">OFFLINE_REGION_COUNT_DESC</a></span> - Static variable in interface org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MetricsMasterSource.html" title="interface in org.apache.hadoop.hbase.master">MetricsMasterSource</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MetricsMasterSource.html#OFFLINE_REGION_COUNT_NAME">OFFLINE_REGION_COUNT_NAME</a></span> - Static variable in interface org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MetricsMasterSource.html" title="interface in org.apache.hadoop.hbase.master">MetricsMasterSource</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/HBaseFsck.html#offlineHdfsIntegrityRepair--">offlineHdfsIntegrityRepair()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/HBaseFsck.html" title="class in org.apache.hadoop.hbase.util">HBaseFsck</a></dt>
 <dd>
 <div class="block">This repair method analyzes hbase data in hdfs and repairs it to satisfy
@@ -79420,6 +79433,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.RSGroupStartupWorker.html#online">online</a></span> - Variable in class org.apache.hadoop.hbase.rsgroup.<a href="org/apache/hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.RSGroupStartupWorker.html" title="class in org.apache.hadoop.hbase.rsgroup">RSGroupInfoManagerImpl.RSGroupStartupWorker</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MetricsMasterSource.html#ONLINE_REGION_COUNT_DESC">ONLINE_REGION_COUNT_DESC</a></span> - Static variable in interface org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MetricsMasterSource.html" title="interface in org.apache.hadoop.hbase.master">MetricsMasterSource</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MetricsMasterSource.html#ONLINE_REGION_COUNT_NAME">ONLINE_REGION_COUNT_NAME</a></span> - Static variable in interface org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MetricsMasterSource.html" title="interface in org.apache.hadoop.hbase.master">MetricsMasterSource</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/snapshot/SnapshotManager.html#ONLINE_SNAPSHOT_CONTROLLER_DESCRIPTION">ONLINE_SNAPSHOT_CONTROLLER_DESCRIPTION</a></span> - Static variable in class org.apache.hadoop.hbase.master.snapshot.<a href="org/apache/hadoop/hbase/master/snapshot/SnapshotManager.html" title="class in org.apache.hadoop.hbase.master.snapshot">SnapshotManager</a></dt>
 <dd>
 <div class="block">Name of the operation to use in the controller</div>
@@ -90848,7 +90865,7 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MetricsRegionServer.html#regionServerWrapper">regionServerWrapper</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MetricsRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">MetricsRegionServer</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#regionServices">regionServices</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">CompactingMemStore</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#regionServices">regionServices</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegion.html#regionServicesForStores">regionServicesForStores</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a></dt>
 <dd>&nbsp;</dd>
@@ -92836,8 +92853,6 @@ service.</div>
 <dd>
 <div class="block">Call to complete a compaction.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#replayEditsPerRegion">replayEditsPerRegion</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerAccounting</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#replayFlush-java.util.List-boolean-">replayFlush(List&lt;String&gt;, boolean)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HStore.StoreFlusherImpl</a></dt>
 <dd>
 <div class="block">Similar to commit, but called in secondary region replicas for replaying the
@@ -95733,11 +95748,6 @@ service.</div>
 <dd>
 <div class="block">undo delete directory</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#rollbackRegionReplayEditsSize-byte:A-">rollbackRegionReplayEditsSize(byte[])</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerAccounting</a></dt>
-<dd>
-<div class="block">Roll back the global MemStore size for a specified region when this region
- can't be opened.</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#rollbackStack">rollbackStack</a></span> - Variable in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor</a></dt>
 <dd>
 <div class="block">Map the the procId returned by submitProcedure(), the Root-ProcID, to the RootProcedureState.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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 a6b88dd..a48899f 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -169,8 +169,8 @@
 <ul>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupPhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupPhase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupRestoreConstants.BackupCommand.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupRestoreConstants.BackupCommand</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/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/BackupInfo.BackupState.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/class-use/CellComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/CellComparator.html b/devapidocs/org/apache/hadoop/hbase/class-use/CellComparator.html
index 9db8fac..ca5a079 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/CellComparator.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/CellComparator.html
@@ -722,7 +722,10 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a></code></td>
-<td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createImmutableSegment-org.apache.hadoop.hbase.CellComparator-">createImmutableSegment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createImmutableSegment-org.apache.hadoop.hbase.CellComparator-">createImmutableSegment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>
+<div class="block">create empty immutable segment for initializations
+ This ImmutableSegment is used as a place holder for snapshot in Memstore.</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a></code></td>
@@ -755,8 +758,9 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a></code></td>
-<td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-">createMutableSegment</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
-                    <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">createMutableSegment</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                    <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
+                    <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <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>
@@ -776,9 +780,10 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a></code></td>
-<td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#generateMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-">generateMutableSegment</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#generateMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">generateMutableSegment</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                       <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
-                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB)</code>&nbsp;</td>
+                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB,
+                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>(package private) static <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>
@@ -822,8 +827,9 @@
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#AbstractMemStore-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-">AbstractMemStore</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
-                <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;c)</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#AbstractMemStore-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.RegionServicesForStores-">AbstractMemStore</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;c,
+                <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a>&nbsp;regionServices)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeMultiFileWriter.BoundaryMultiWriter.html#BoundaryMultiWriter-org.apache.hadoop.hbase.CellComparator-java.util.List-byte:A-byte:A-">BoundaryMultiWriter</a></span>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
@@ -878,22 +884,29 @@
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#DefaultMemStore-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.RegionServicesForStores-">DefaultMemStore</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+               <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;c,
+               <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a>&nbsp;regionServices)</code>
+<div class="block">Constructor.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#DefaultStoreFileManager-org.apache.hadoop.hbase.CellComparator-java.util.Comparator-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration-">DefaultStoreFileManager</a></span>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;cellComparator,
                        <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;storeFileComparator,
                        org.apache.hadoop.conf.Configuration&nbsp;conf,
                        <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionConfiguration</a>&nbsp;comConf)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html#ImmutableSegment-org.apache.hadoop.hbase.CellComparator-">ImmutableSegment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>
 <div class="block">------------------------------------------------------------------------
  Empty C-tor to be used only for CompositeImmutableSegment</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html#ImmutableSegment-org.apache.hadoop.hbase.CellComparator-java.util.List-">ImmutableSegment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
                 <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/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&gt;&nbsp;segments)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html#ImmutableSegment-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-">ImmutableSegment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;cs,
                 <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB)</code>
@@ -901,43 +914,44 @@
  C-tor to be used to build the derived classes</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html#KeyValueHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">KeyValueHeap</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/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
             <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>
 <div class="block">Constructor.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.KVScannerComparator.html#KVScannerComparator-org.apache.hadoop.hbase.CellComparator-">KVScannerComparator</a></span>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;kvComparator)</code>
 <div class="block">Constructor</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactorSegmentsIterator.html#MemStoreCompactorSegmentsIterator-java.util.List-org.apache.hadoop.hbase.CellComparator-int-org.apache.hadoop.hbase.regionserver.HStore-">MemStoreCompactorSegmentsIterator</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/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&gt;&nbsp;segments,
                                  <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
                                  int&nbsp;compactionKVMax,
                                  <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreMergerSegmentsIterator.html#MemStoreMergerSegmentsIterator-java.util.List-org.apache.hadoop.hbase.CellComparator-int-">MemStoreMergerSegmentsIterator</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/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&gt;&nbsp;segments,
                               <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
                               int&nbsp;compactionKVMax)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#MutableSegment-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-">MutableSegment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;cellSet,
+<tr class="altColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#MutableSegment-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">MutableSegment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;cellSet,
               <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
-              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB)</code>&nbsp;</td>
+              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB,
+              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedKeyValueHeap.html#ReversedKeyValueHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">ReversedKeyValueHeap</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/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
                     <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedKeyValueHeap.ReversedKVScannerComparator.html#ReversedKVScannerComparator-org.apache.hadoop.hbase.CellComparator-">ReversedKVScannerComparator</a></span>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;kvComparator)</code>
 <div class="block">Constructor</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html#ScanInfo-byte:A-int-int-long-org.apache.hadoop.hbase.KeepDeletedCells-long-org.apache.hadoop.hbase.CellComparator-long-boolean-long-boolean-long-boolean-">ScanInfo</a></span>(byte[]&nbsp;family,
         int&nbsp;minVersions,
         int&nbsp;maxVersions,
@@ -952,7 +966,7 @@
         long&nbsp;preadMaxBytes,
         boolean&nbsp;newVersionBehavior)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html#ScanInfo-org.apache.hadoop.conf.Configuration-byte:A-int-int-long-org.apache.hadoop.hbase.KeepDeletedCells-long-long-org.apache.hadoop.hbase.CellComparator-boolean-">ScanInfo</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
         byte[]&nbsp;family,
         int&nbsp;minVersions,
@@ -964,41 +978,41 @@
         <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
         boolean&nbsp;newVersionBehavior)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html#ScanInfo-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-long-long-org.apache.hadoop.hbase.CellComparator-">ScanInfo</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
         <a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;family,
         long&nbsp;ttl,
         long&nbsp;timeToPurgeDeletes,
         <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#Segment-org.apache.hadoop.hbase.CellComparator-java.util.List-org.apache.hadoop.hbase.regionserver.TimeRangeTracker-">Segment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
        <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/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&gt;&nbsp;segments,
        <a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TimeRangeTracker</a>&nbsp;trt)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#Segment-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.TimeRangeTracker-">Segment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
        <a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TimeRangeTracker</a>&nbsp;trt)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#Segment-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-org.apache.hadoop.hbase.regionserver.TimeRangeTracker-">Segment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;cellSet,
        <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
        <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB,
        <a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TimeRangeTracker</a>&nbsp;trt)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeMultiFileWriter.SizeMultiWriter.html#SizeMultiWriter-org.apache.hadoop.hbase.CellComparator-int-long-byte:A-byte:A-">SizeMultiWriter</a></span>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
                int&nbsp;targetCount,
                long&nbsp;targetKvs,
                byte[]&nbsp;left,
                byte[]&nbsp;right)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFlusher.SizeStripeFlushRequest.html#SizeStripeFlushRequest-org.apache.hadoop.hbase.CellComparator-int-long-">SizeStripeFlushRequest</a></span>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
                       int&nbsp;targetCount,
                       long&nbsp;targetKvs)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#StoreFileWriter-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.io.hfile.CacheConfig-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.BloomType-long-java.net.InetSocketAddress:A-org.apache.hadoop.hbase.io.hfile.HFileContext-boolean-">StoreFileWriter</a></span>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
                org.apache.hadoop.fs.Path&nbsp;path,
                org.apache.hadoop.conf.Configuration&nbsp;conf,
@@ -1012,13 +1026,13 @@
 <div class="block">Creates an HFile.Writer that also write helpful meta data.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFlusher.StripeFlushRequest.html#StripeFlushRequest-org.apache.hadoop.hbase.CellComparator-">StripeFlushRequest</a></span>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeMultiFileWriter.html#StripeMultiFileWriter-org.apache.hadoop.hbase.CellComparator-">StripeMultiFileWriter</a></span>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#StripeStoreFileManager-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.regionserver.StripeStoreConfig-">StripeStoreFileManager</a></span>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;kvComparator,
                       org.apache.hadoop.conf.Configuration&nbsp;conf,
                       <a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreConfig.html" title="class in org.apache.hadoop.hbase.regionserver">StripeStoreConfig</a>&nbsp;config)</code>&nbsp;</td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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 3f044bc..32891c1 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -553,23 +553,23 @@
 <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/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Scan.ReadType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ScannerCallable.MoreResults.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">ScannerCallable.MoreResults</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/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/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/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/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/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/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Durability</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ScannerCallable.MoreResults.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">ScannerCallable.MoreResults</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.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/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/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/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/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/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/AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocateType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RegionLocateType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/RequestController.ReturnCode.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RequestController.ReturnCode</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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 e67b778..329f62f 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/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>
+<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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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 cc89280..a5df4f5 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/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/RegexStringComparator.EngineType.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">RegexStringComparator.EngineType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/BitComparator.BitwiseOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">BitComparator.BitwiseOp</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/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/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/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/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/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/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/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/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>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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..c12ae36 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/CallEvent.Type.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">CallEvent.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.BufferCallAction.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">BufferCallBeforeInitHandler.BufferCallAction</span></a></li>
 </ul>
 </li>
 </ul>


[11/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html
index 2709ea3..4a11f27 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html
@@ -37,309 +37,299 @@
 <span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.executor.EventType;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.regionserver.HRegion;<a name="line.30"></a>
 <span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.regionserver.Region;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.regionserver.RegionServerAccounting;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.regionserver.RegionServerServices;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.regionserver.RegionServerServices.PostOpenDeployContext;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.regionserver.RegionServerServices.RegionStateTransitionContext;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.slf4j.Logger;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.slf4j.LoggerFactory;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>/**<a name="line.41"></a>
-<span class="sourceLineNo">042</span> * Handles opening of a region on a region server.<a name="line.42"></a>
-<span class="sourceLineNo">043</span> * &lt;p&gt;<a name="line.43"></a>
-<span class="sourceLineNo">044</span> * This is executed after receiving an OPEN RPC from the master or client.<a name="line.44"></a>
-<span class="sourceLineNo">045</span> */<a name="line.45"></a>
-<span class="sourceLineNo">046</span>@InterfaceAudience.Private<a name="line.46"></a>
-<span class="sourceLineNo">047</span>public class OpenRegionHandler extends EventHandler {<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  private static final Logger LOG = LoggerFactory.getLogger(OpenRegionHandler.class);<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>  protected final RegionServerServices rsServices;<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>  private final RegionInfo regionInfo;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>  private final TableDescriptor htd;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>  private final long masterSystemTime;<a name="line.54"></a>
-<span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>  public OpenRegionHandler(final Server server,<a name="line.56"></a>
-<span class="sourceLineNo">057</span>      final RegionServerServices rsServices, RegionInfo regionInfo,<a name="line.57"></a>
-<span class="sourceLineNo">058</span>      TableDescriptor htd, long masterSystemTime) {<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    this(server, rsServices, regionInfo, htd, masterSystemTime, EventType.M_RS_OPEN_REGION);<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  }<a name="line.60"></a>
-<span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>  protected OpenRegionHandler(final Server server,<a name="line.62"></a>
-<span class="sourceLineNo">063</span>                              final RegionServerServices rsServices, final RegionInfo regionInfo,<a name="line.63"></a>
-<span class="sourceLineNo">064</span>                              final TableDescriptor htd, long masterSystemTime, EventType eventType) {<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    super(server, eventType);<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    this.rsServices = rsServices;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    this.regionInfo = regionInfo;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    this.htd = htd;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    this.masterSystemTime = masterSystemTime;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  }<a name="line.70"></a>
-<span class="sourceLineNo">071</span><a name="line.71"></a>
-<span class="sourceLineNo">072</span>  public RegionInfo getRegionInfo() {<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    return regionInfo;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  }<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  @Override<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  public void process() throws IOException {<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    boolean openSuccessful = false;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    final String regionName = regionInfo.getRegionNameAsString();<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    HRegion region = null;<a name="line.80"></a>
-<span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>    try {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      if (this.server.isStopped() || this.rsServices.isStopping()) {<a name="line.83"></a>
-<span class="sourceLineNo">084</span>        return;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      }<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      final String encodedName = regionInfo.getEncodedName();<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>      // 2 different difficult situations can occur<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      // 1) The opening was cancelled. This is an expected situation<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      // 2) The region is now marked as online while we're suppose to open. This would be a bug.<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>      // Check that this region is not already online<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      if (this.rsServices.getRegion(encodedName) != null) {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        LOG.error("Region " + encodedName +<a name="line.94"></a>
-<span class="sourceLineNo">095</span>            " was already online when we started processing the opening. " +<a name="line.95"></a>
-<span class="sourceLineNo">096</span>            "Marking this new attempt as failed");<a name="line.96"></a>
-<span class="sourceLineNo">097</span>        return;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>      // Check that we're still supposed to open the region.<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      // If fails, just return.  Someone stole the region from under us.<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      if (!isRegionStillOpening()){<a name="line.102"></a>
-<span class="sourceLineNo">103</span>        LOG.error("Region " + encodedName + " opening cancelled");<a name="line.103"></a>
-<span class="sourceLineNo">104</span>        return;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      }<a name="line.105"></a>
-<span class="sourceLineNo">106</span><a name="line.106"></a>
-<span class="sourceLineNo">107</span>      // Open region.  After a successful open, failures in subsequent<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      // processing needs to do a close as part of cleanup.<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      region = openRegion();<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      if (region == null) {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>        return;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      }<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>      if (!updateMeta(region, masterSystemTime) || this.server.isStopped() ||<a name="line.114"></a>
-<span class="sourceLineNo">115</span>          this.rsServices.isStopping()) {<a name="line.115"></a>
-<span class="sourceLineNo">116</span>        return;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      }<a name="line.117"></a>
-<span class="sourceLineNo">118</span><a name="line.118"></a>
-<span class="sourceLineNo">119</span>      if (!isRegionStillOpening()) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>        return;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      }<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>      // Successful region open, and add it to MutableOnlineRegions<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      this.rsServices.addRegion(region);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      openSuccessful = true;<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>      // Done!  Successful region open<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      LOG.debug("Opened " + regionName + " on " + this.server.getServerName());<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    } finally {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      // Do all clean up here<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      if (!openSuccessful) {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>        doCleanUpOnFailedOpen(region);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      final Boolean current = this.rsServices.getRegionsInTransitionInRS().<a name="line.134"></a>
-<span class="sourceLineNo">135</span>          remove(this.regionInfo.getEncodedNameAsBytes());<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>      // Let's check if we have met a race condition on open cancellation....<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      // A better solution would be to not have any race condition.<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      // this.rsServices.getRegionsInTransitionInRS().remove(<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      //  this.regionInfo.getEncodedNameAsBytes(), Boolean.TRUE);<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      // would help.<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      if (openSuccessful) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>        if (current == null) { // Should NEVER happen, but let's be paranoid.<a name="line.143"></a>
-<span class="sourceLineNo">144</span>          LOG.error("Bad state: we've just opened a region that was NOT in transition. Region="<a name="line.144"></a>
-<span class="sourceLineNo">145</span>              + regionName);<a name="line.145"></a>
-<span class="sourceLineNo">146</span>        } else if (Boolean.FALSE.equals(current)) { // Can happen, if we're<a name="line.146"></a>
-<span class="sourceLineNo">147</span>                                                    // really unlucky.<a name="line.147"></a>
-<span class="sourceLineNo">148</span>          LOG.error("Race condition: we've finished to open a region, while a close was requested "<a name="line.148"></a>
-<span class="sourceLineNo">149</span>              + " on region=" + regionName + ". It can be a critical error, as a region that"<a name="line.149"></a>
-<span class="sourceLineNo">150</span>              + " should be closed is now opened. Closing it now");<a name="line.150"></a>
-<span class="sourceLineNo">151</span>          cleanupFailedOpen(region);<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>    }<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  }<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  private void doCleanUpOnFailedOpen(HRegion region)<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      throws IOException {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    try {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      if (region != null) {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        cleanupFailedOpen(region);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      }<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    } finally {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      rsServices.reportRegionStateTransition(new RegionStateTransitionContext(<a name="line.164"></a>
-<span class="sourceLineNo">165</span>          TransitionCode.FAILED_OPEN, HConstants.NO_SEQNUM, -1, regionInfo));<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    }<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  }<a name="line.167"></a>
-<span class="sourceLineNo">168</span><a name="line.168"></a>
-<span class="sourceLineNo">169</span>  /**<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * Update ZK or META.  This can take a while if for example the<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * hbase:meta is not available -- if server hosting hbase:meta crashed and we are<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * waiting on it to come back -- so run in a thread and keep updating znode<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * state meantime so master doesn't timeout our region-in-transition.<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * Caller must cleanup region if this fails.<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   */<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  boolean updateMeta(final HRegion r, long masterSystemTime) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    if (this.server.isStopped() || this.rsServices.isStopping()) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      return false;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    // Object we do wait/notify on.  Make it boolean.  If set, we're done.<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    // Else, wait.<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    final AtomicBoolean signaller = new AtomicBoolean(false);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    PostOpenDeployTasksThread t = new PostOpenDeployTasksThread(r,<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      this.server, this.rsServices, signaller, masterSystemTime);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    t.start();<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    // Post open deploy task:<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    //   meta =&gt; update meta location in ZK<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    //   other region =&gt; update meta<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    while (!signaller.get() &amp;&amp; t.isAlive() &amp;&amp; !this.server.isStopped() &amp;&amp;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>        !this.rsServices.isStopping() &amp;&amp; isRegionStillOpening()) {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      synchronized (signaller) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        try {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>          // Wait for 10 seconds, so that server shutdown<a name="line.193"></a>
-<span class="sourceLineNo">194</span>          // won't take too long if this thread happens to run.<a name="line.194"></a>
-<span class="sourceLineNo">195</span>          if (!signaller.get()) signaller.wait(10000);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        } catch (InterruptedException e) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>          // Go to the loop check.<a name="line.197"></a>
-<span class="sourceLineNo">198</span>        }<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      }<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    // Is thread still alive?  We may have left above loop because server is<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    // stopping or we timed out the edit.  Is so, interrupt it.<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    if (t.isAlive()) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      if (!signaller.get()) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        // Thread still running; interrupt<a name="line.205"></a>
-<span class="sourceLineNo">206</span>        LOG.debug("Interrupting thread " + t);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>        t.interrupt();<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      }<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      try {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        t.join();<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      } catch (InterruptedException ie) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        LOG.warn("Interrupted joining " +<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          r.getRegionInfo().getRegionNameAsString(), ie);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        Thread.currentThread().interrupt();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      }<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    }<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>    // Was there an exception opening the region?  This should trigger on<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    // InterruptedException too.  If so, we failed.<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    return (!Thread.interrupted() &amp;&amp; t.getException() == null);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>  /**<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   * Thread to run region post open tasks. Call {@link #getException()} after the thread finishes<a name="line.224"></a>
-<span class="sourceLineNo">225</span>   * to check for exceptions running {@link RegionServerServices#postOpenDeployTasks(Region)}.<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   */<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  static class PostOpenDeployTasksThread extends Thread {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    private Throwable exception = null;<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    private final Server server;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    private final RegionServerServices services;<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    private final HRegion region;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    private final AtomicBoolean signaller;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    private final long masterSystemTime;<a name="line.233"></a>
-<span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>    PostOpenDeployTasksThread(final HRegion region, final Server server,<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        final RegionServerServices services, final AtomicBoolean signaller, long masterSystemTime) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      super("PostOpenDeployTasks:" + region.getRegionInfo().getEncodedName());<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      this.setDaemon(true);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      this.server = server;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      this.services = services;<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      this.region = region;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      this.signaller = signaller;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      this.masterSystemTime = masterSystemTime;<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>    @Override<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    public void run() {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      try {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        this.services.postOpenDeployTasks(new PostOpenDeployContext(region, masterSystemTime));<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      } catch (Throwable e) {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        String msg = "Exception running postOpenDeployTasks; region=" +<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          this.region.getRegionInfo().getEncodedName();<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        this.exception = e;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        if (e instanceof IOException<a name="line.254"></a>
-<span class="sourceLineNo">255</span>            &amp;&amp; isRegionStillOpening(region.getRegionInfo(), services)) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>          server.abort(msg, e);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        } else {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          LOG.warn(msg, e);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        }<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      }<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      // We're done.  Set flag then wake up anyone waiting on thread to complete.<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      this.signaller.set(true);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      synchronized (this.signaller) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        this.signaller.notify();<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      }<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>    /**<a name="line.268"></a>
-<span class="sourceLineNo">269</span>     * @return Null or the run exception; call this method after thread is done.<a name="line.269"></a>
-<span class="sourceLineNo">270</span>     */<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    Throwable getException() {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      return this.exception;<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><a name="line.275"></a>
-<span class="sourceLineNo">276</span>  /**<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   * @return Instance of HRegion if successful open else null.<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   */<a name="line.278"></a>
-<span class="sourceLineNo">279</span>  HRegion openRegion() {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    HRegion region = null;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    try {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      // Instantiate the region.  This also periodically tickles OPENING<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      // state so master doesn't timeout this region in transition.<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      region = HRegion.openHRegion(this.regionInfo, this.htd,<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        this.rsServices.getWAL(this.regionInfo),<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        this.server.getConfiguration(),<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        this.rsServices,<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        new CancelableProgressable() {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          @Override<a name="line.289"></a>
-<span class="sourceLineNo">290</span>          public boolean progress() {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>            if (!isRegionStillOpening()) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>              LOG.warn("Open region aborted since it isn't opening any more");<a name="line.292"></a>
-<span class="sourceLineNo">293</span>              return false;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>            }<a name="line.294"></a>
-<span class="sourceLineNo">295</span>            return true;<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>    } catch (Throwable t) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      // We failed open. Our caller will see the 'null' return value<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      // and transition the node back to FAILED_OPEN. If that fails,<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      // we rely on the Timeout Monitor in the master to reassign.<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      LOG.error(<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          "Failed open of region=" + this.regionInfo.getRegionNameAsString()<a name="line.303"></a>
-<span class="sourceLineNo">304</span>              + ", starting to roll back the global memstore size.", t);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      // Decrease the global memstore size.<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      if (this.rsServices != null) {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>        RegionServerAccounting rsAccounting =<a name="line.307"></a>
-<span class="sourceLineNo">308</span>          this.rsServices.getRegionServerAccounting();<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        if (rsAccounting != null) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>          rsAccounting.rollbackRegionReplayEditsSize(this.regionInfo.getRegionName());<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>    }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    return region;<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>  void cleanupFailedOpen(final HRegion region) throws IOException {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    if (region != null) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      this.rsServices.removeRegion(region, null);<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      region.close();<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><a name="line.323"></a>
-<span class="sourceLineNo">324</span>  private static boolean isRegionStillOpening(<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      RegionInfo regionInfo, RegionServerServices rsServices) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    byte[] encodedName = regionInfo.getEncodedNameAsBytes();<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    Boolean action = rsServices.getRegionsInTransitionInRS().get(encodedName);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    return Boolean.TRUE.equals(action); // true means opening for RIT<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>  private boolean isRegionStillOpening() {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    return isRegionStillOpening(regionInfo, rsServices);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
-<span class="sourceLineNo">334</span>}<a name="line.334"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.regionserver.RegionServerServices;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.regionserver.RegionServerServices.PostOpenDeployContext;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.regionserver.RegionServerServices.RegionStateTransitionContext;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.slf4j.Logger;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.slf4j.LoggerFactory;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>/**<a name="line.40"></a>
+<span class="sourceLineNo">041</span> * Handles opening of a region on a region server.<a name="line.41"></a>
+<span class="sourceLineNo">042</span> * &lt;p&gt;<a name="line.42"></a>
+<span class="sourceLineNo">043</span> * This is executed after receiving an OPEN RPC from the master or client.<a name="line.43"></a>
+<span class="sourceLineNo">044</span> */<a name="line.44"></a>
+<span class="sourceLineNo">045</span>@InterfaceAudience.Private<a name="line.45"></a>
+<span class="sourceLineNo">046</span>public class OpenRegionHandler extends EventHandler {<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  private static final Logger LOG = LoggerFactory.getLogger(OpenRegionHandler.class);<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>  protected final RegionServerServices rsServices;<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>  private final RegionInfo regionInfo;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  private final TableDescriptor htd;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  private final long masterSystemTime;<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>  public OpenRegionHandler(final Server server,<a name="line.55"></a>
+<span class="sourceLineNo">056</span>      final RegionServerServices rsServices, RegionInfo regionInfo,<a name="line.56"></a>
+<span class="sourceLineNo">057</span>      TableDescriptor htd, long masterSystemTime) {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    this(server, rsServices, regionInfo, htd, masterSystemTime, EventType.M_RS_OPEN_REGION);<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  }<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  protected OpenRegionHandler(final Server server,<a name="line.61"></a>
+<span class="sourceLineNo">062</span>                              final RegionServerServices rsServices, final RegionInfo regionInfo,<a name="line.62"></a>
+<span class="sourceLineNo">063</span>                              final TableDescriptor htd, long masterSystemTime, EventType eventType) {<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    super(server, eventType);<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    this.rsServices = rsServices;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    this.regionInfo = regionInfo;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    this.htd = htd;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    this.masterSystemTime = masterSystemTime;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  }<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>  public RegionInfo getRegionInfo() {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    return regionInfo;<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>  @Override<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  public void process() throws IOException {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    boolean openSuccessful = false;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    final String regionName = regionInfo.getRegionNameAsString();<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    HRegion region = null;<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>    try {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>      if (this.server.isStopped() || this.rsServices.isStopping()) {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>        return;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      }<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      final String encodedName = regionInfo.getEncodedName();<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>      // 2 different difficult situations can occur<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      // 1) The opening was cancelled. This is an expected situation<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      // 2) The region is now marked as online while we're suppose to open. This would be a bug.<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>      // Check that this region is not already online<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      if (this.rsServices.getRegion(encodedName) != null) {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>        LOG.error("Region " + encodedName +<a name="line.93"></a>
+<span class="sourceLineNo">094</span>            " was already online when we started processing the opening. " +<a name="line.94"></a>
+<span class="sourceLineNo">095</span>            "Marking this new attempt as failed");<a name="line.95"></a>
+<span class="sourceLineNo">096</span>        return;<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>      // Check that we're still supposed to open the region.<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      // If fails, just return.  Someone stole the region from under us.<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      if (!isRegionStillOpening()){<a name="line.101"></a>
+<span class="sourceLineNo">102</span>        LOG.error("Region " + encodedName + " opening cancelled");<a name="line.102"></a>
+<span class="sourceLineNo">103</span>        return;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      }<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span>      // Open region.  After a successful open, failures in subsequent<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      // processing needs to do a close as part of cleanup.<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      region = openRegion();<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      if (region == null) {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        return;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      }<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>      if (!updateMeta(region, masterSystemTime) || this.server.isStopped() ||<a name="line.113"></a>
+<span class="sourceLineNo">114</span>          this.rsServices.isStopping()) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>        return;<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>      if (!isRegionStillOpening()) {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>        return;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      }<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>      // Successful region open, and add it to MutableOnlineRegions<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      this.rsServices.addRegion(region);<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      openSuccessful = true;<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>      // Done!  Successful region open<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      LOG.debug("Opened " + regionName + " on " + this.server.getServerName());<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    } finally {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      // Do all clean up here<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      if (!openSuccessful) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>        doCleanUpOnFailedOpen(region);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      }<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      final Boolean current = this.rsServices.getRegionsInTransitionInRS().<a name="line.133"></a>
+<span class="sourceLineNo">134</span>          remove(this.regionInfo.getEncodedNameAsBytes());<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>      // Let's check if we have met a race condition on open cancellation....<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      // A better solution would be to not have any race condition.<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      // this.rsServices.getRegionsInTransitionInRS().remove(<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      //  this.regionInfo.getEncodedNameAsBytes(), Boolean.TRUE);<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      // would help.<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      if (openSuccessful) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>        if (current == null) { // Should NEVER happen, but let's be paranoid.<a name="line.142"></a>
+<span class="sourceLineNo">143</span>          LOG.error("Bad state: we've just opened a region that was NOT in transition. Region="<a name="line.143"></a>
+<span class="sourceLineNo">144</span>              + regionName);<a name="line.144"></a>
+<span class="sourceLineNo">145</span>        } else if (Boolean.FALSE.equals(current)) { // Can happen, if we're<a name="line.145"></a>
+<span class="sourceLineNo">146</span>                                                    // really unlucky.<a name="line.146"></a>
+<span class="sourceLineNo">147</span>          LOG.error("Race condition: we've finished to open a region, while a close was requested "<a name="line.147"></a>
+<span class="sourceLineNo">148</span>              + " on region=" + regionName + ". It can be a critical error, as a region that"<a name="line.148"></a>
+<span class="sourceLineNo">149</span>              + " should be closed is now opened. Closing it now");<a name="line.149"></a>
+<span class="sourceLineNo">150</span>          cleanupFailedOpen(region);<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>    }<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>  private void doCleanUpOnFailedOpen(HRegion region)<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      throws IOException {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    try {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      if (region != null) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        cleanupFailedOpen(region);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      }<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    } finally {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      rsServices.reportRegionStateTransition(new RegionStateTransitionContext(<a name="line.163"></a>
+<span class="sourceLineNo">164</span>          TransitionCode.FAILED_OPEN, HConstants.NO_SEQNUM, -1, regionInfo));<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>  /**<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * Update ZK or META.  This can take a while if for example the<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * hbase:meta is not available -- if server hosting hbase:meta crashed and we are<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * waiting on it to come back -- so run in a thread and keep updating znode<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   * state meantime so master doesn't timeout our region-in-transition.<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * Caller must cleanup region if this fails.<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   */<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  boolean updateMeta(final HRegion r, long masterSystemTime) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    if (this.server.isStopped() || this.rsServices.isStopping()) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      return false;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    // Object we do wait/notify on.  Make it boolean.  If set, we're done.<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    // Else, wait.<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    final AtomicBoolean signaller = new AtomicBoolean(false);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    PostOpenDeployTasksThread t = new PostOpenDeployTasksThread(r,<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      this.server, this.rsServices, signaller, masterSystemTime);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    t.start();<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    // Post open deploy task:<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    //   meta =&gt; update meta location in ZK<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    //   other region =&gt; update meta<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    while (!signaller.get() &amp;&amp; t.isAlive() &amp;&amp; !this.server.isStopped() &amp;&amp;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        !this.rsServices.isStopping() &amp;&amp; isRegionStillOpening()) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      synchronized (signaller) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        try {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>          // Wait for 10 seconds, so that server shutdown<a name="line.192"></a>
+<span class="sourceLineNo">193</span>          // won't take too long if this thread happens to run.<a name="line.193"></a>
+<span class="sourceLineNo">194</span>          if (!signaller.get()) signaller.wait(10000);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        } catch (InterruptedException e) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>          // Go to the loop check.<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>    }<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    // Is thread still alive?  We may have left above loop because server is<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    // stopping or we timed out the edit.  Is so, interrupt it.<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    if (t.isAlive()) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      if (!signaller.get()) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        // Thread still running; interrupt<a name="line.204"></a>
+<span class="sourceLineNo">205</span>        LOG.debug("Interrupting thread " + t);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        t.interrupt();<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      }<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      try {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        t.join();<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      } catch (InterruptedException ie) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        LOG.warn("Interrupted joining " +<a name="line.211"></a>
+<span class="sourceLineNo">212</span>          r.getRegionInfo().getRegionNameAsString(), ie);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        Thread.currentThread().interrupt();<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>    // Was there an exception opening the region?  This should trigger on<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    // InterruptedException too.  If so, we failed.<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    return (!Thread.interrupted() &amp;&amp; t.getException() == null);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  }<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>  /**<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * Thread to run region post open tasks. Call {@link #getException()} after the thread finishes<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * to check for exceptions running {@link RegionServerServices#postOpenDeployTasks(Region)}.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   */<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  static class PostOpenDeployTasksThread extends Thread {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    private Throwable exception = null;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    private final Server server;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    private final RegionServerServices services;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    private final HRegion region;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    private final AtomicBoolean signaller;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    private final long masterSystemTime;<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>    PostOpenDeployTasksThread(final HRegion region, final Server server,<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        final RegionServerServices services, final AtomicBoolean signaller, long masterSystemTime) {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      super("PostOpenDeployTasks:" + region.getRegionInfo().getEncodedName());<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      this.setDaemon(true);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      this.server = server;<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      this.services = services;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      this.region = region;<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      this.signaller = signaller;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      this.masterSystemTime = masterSystemTime;<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 void run() {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      try {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        this.services.postOpenDeployTasks(new PostOpenDeployContext(region, masterSystemTime));<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      } catch (Throwable e) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        String msg = "Exception running postOpenDeployTasks; region=" +<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          this.region.getRegionInfo().getEncodedName();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        this.exception = e;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        if (e instanceof IOException<a name="line.253"></a>
+<span class="sourceLineNo">254</span>            &amp;&amp; isRegionStillOpening(region.getRegionInfo(), services)) {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>          server.abort(msg, e);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        } else {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>          LOG.warn(msg, e);<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        }<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      }<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      // We're done.  Set flag then wake up anyone waiting on thread to complete.<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      this.signaller.set(true);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      synchronized (this.signaller) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        this.signaller.notify();<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    }<a name="line.265"></a>
+<span class="sourceLineNo">266</span><a name="line.266"></a>
+<span class="sourceLineNo">267</span>    /**<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     * @return Null or the run exception; call this method after thread is done.<a name="line.268"></a>
+<span class="sourceLineNo">269</span>     */<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    Throwable getException() {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      return this.exception;<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><a name="line.274"></a>
+<span class="sourceLineNo">275</span>  /**<a name="line.275"></a>
+<span class="sourceLineNo">276</span>   * @return Instance of HRegion if successful open else null.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>   */<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  HRegion openRegion() {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    HRegion region = null;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    try {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      // Instantiate the region.  This also periodically tickles OPENING<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      // state so master doesn't timeout this region in transition.<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      region = HRegion.openHRegion(this.regionInfo, this.htd,<a name="line.283"></a>
+<span class="sourceLineNo">284</span>        this.rsServices.getWAL(this.regionInfo),<a name="line.284"></a>
+<span class="sourceLineNo">285</span>        this.server.getConfiguration(),<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        this.rsServices,<a name="line.286"></a>
+<span class="sourceLineNo">287</span>        new CancelableProgressable() {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          @Override<a name="line.288"></a>
+<span class="sourceLineNo">289</span>          public boolean progress() {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>            if (!isRegionStillOpening()) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>              LOG.warn("Open region aborted since it isn't opening any more");<a name="line.291"></a>
+<span class="sourceLineNo">292</span>              return false;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            }<a name="line.293"></a>
+<span class="sourceLineNo">294</span>            return true;<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>    } catch (Throwable t) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      // We failed open. Our caller will see the 'null' return value<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      // and transition the node back to FAILED_OPEN. If that fails,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      // we rely on the Timeout Monitor in the master to reassign.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      LOG.error(<a name="line.301"></a>
+<span class="sourceLineNo">302</span>          "Failed open of region=" + this.regionInfo.getRegionNameAsString(), t);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    return region;<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>  void cleanupFailedOpen(final HRegion region) throws IOException {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    if (region != null) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      this.rsServices.removeRegion(region, null);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      region.close();<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><a name="line.313"></a>
+<span class="sourceLineNo">314</span>  private static boolean isRegionStillOpening(<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      RegionInfo regionInfo, RegionServerServices rsServices) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    byte[] encodedName = regionInfo.getEncodedNameAsBytes();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    Boolean action = rsServices.getRegionsInTransitionInRS().get(encodedName);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    return Boolean.TRUE.equals(action); // true means opening for RIT<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  }<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  private boolean isRegionStillOpening() {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    return isRegionStillOpening(regionInfo, rsServices);<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/rest/ScannerResource.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/rest/ScannerResource.html b/devapidocs/src-html/org/apache/hadoop/hbase/rest/ScannerResource.html
index 61bc70f..e210521 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/rest/ScannerResource.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/rest/ScannerResource.html
@@ -46,127 +46,133 @@
 <span class="sourceLineNo">038</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.38"></a>
 <span class="sourceLineNo">039</span>import org.slf4j.Logger;<a name="line.39"></a>
 <span class="sourceLineNo">040</span>import org.slf4j.LoggerFactory;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.rest.model.ScannerModel;<a name="line.43"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>import com.fasterxml.jackson.core.JsonParseException;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import com.fasterxml.jackson.databind.JsonMappingException;<a name="line.43"></a>
 <span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span>@InterfaceAudience.Private<a name="line.45"></a>
-<span class="sourceLineNo">046</span>public class ScannerResource extends ResourceBase {<a name="line.46"></a>
-<span class="sourceLineNo">047</span><a name="line.47"></a>
-<span class="sourceLineNo">048</span>  private static final Logger LOG = LoggerFactory.getLogger(ScannerResource.class);<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>  static final Map&lt;String,ScannerInstanceResource&gt; scanners =<a name="line.50"></a>
-<span class="sourceLineNo">051</span>   Collections.synchronizedMap(new HashMap&lt;String,ScannerInstanceResource&gt;());<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>  TableResource tableResource;<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>
-<span class="sourceLineNo">056</span>   * Constructor<a name="line.56"></a>
-<span class="sourceLineNo">057</span>   * @param tableResource<a name="line.57"></a>
-<span class="sourceLineNo">058</span>   * @throws IOException<a name="line.58"></a>
-<span class="sourceLineNo">059</span>   */<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  public ScannerResource(TableResource tableResource)throws IOException {<a name="line.60"></a>
-<span class="sourceLineNo">061</span>    super();<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    this.tableResource = tableResource;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  }<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  static boolean delete(final String id) {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    ScannerInstanceResource instance = scanners.remove(id);<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    if (instance != null) {<a name="line.67"></a>
-<span class="sourceLineNo">068</span>      instance.generator.close();<a name="line.68"></a>
-<span class="sourceLineNo">069</span>      return true;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    } else {<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      return false;<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><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  Response update(final ScannerModel model, final boolean replace,<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      final UriInfo uriInfo) {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    servlet.getMetrics().incrementRequests(1);<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    if (servlet.isReadOnly()) {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>      return Response.status(Response.Status.FORBIDDEN)<a name="line.79"></a>
-<span class="sourceLineNo">080</span>        .type(MIMETYPE_TEXT).entity("Forbidden" + CRLF)<a name="line.80"></a>
-<span class="sourceLineNo">081</span>        .build();<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    byte[] endRow = model.hasEndRow() ? model.getEndRow() : null;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    RowSpec spec = null;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    if (model.getLabels() != null) {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      spec = new RowSpec(model.getStartRow(), endRow, model.getColumns(), model.getStartTime(),<a name="line.86"></a>
-<span class="sourceLineNo">087</span>          model.getEndTime(), model.getMaxVersions(), model.getLabels());<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    } else {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      spec = new RowSpec(model.getStartRow(), endRow, model.getColumns(), model.getStartTime(),<a name="line.89"></a>
-<span class="sourceLineNo">090</span>          model.getEndTime(), model.getMaxVersions());<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    }<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>    try {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      Filter filter = ScannerResultGenerator.buildFilterFromModel(model);<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      String tableName = tableResource.getName();<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      ScannerResultGenerator gen =<a name="line.96"></a>
-<span class="sourceLineNo">097</span>        new ScannerResultGenerator(tableName, spec, filter, model.getCaching(),<a name="line.97"></a>
-<span class="sourceLineNo">098</span>          model.getCacheBlocks());<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      String id = gen.getID();<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      ScannerInstanceResource instance =<a name="line.100"></a>
-<span class="sourceLineNo">101</span>        new ScannerInstanceResource(tableName, id, gen, model.getBatch());<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      scanners.put(id, instance);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      if (LOG.isTraceEnabled()) {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>        LOG.trace("new scanner: " + id);<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      }<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      UriBuilder builder = uriInfo.getAbsolutePathBuilder();<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      URI uri = builder.path(id).build();<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      servlet.getMetrics().incrementSucessfulPutRequests(1);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      return Response.created(uri).build();<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    } catch (Exception e) {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      servlet.getMetrics().incrementFailedPutRequests(1);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      if (e instanceof TableNotFoundException) {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>        return Response.status(Response.Status.NOT_FOUND)<a name="line.113"></a>
-<span class="sourceLineNo">114</span>          .type(MIMETYPE_TEXT).entity("Not found" + CRLF)<a name="line.114"></a>
-<span class="sourceLineNo">115</span>          .build();<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      } else if (e instanceof RuntimeException) {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>        return Response.status(Response.Status.BAD_REQUEST)<a name="line.117"></a>
-<span class="sourceLineNo">118</span>          .type(MIMETYPE_TEXT).entity("Bad request" + CRLF)<a name="line.118"></a>
-<span class="sourceLineNo">119</span>          .build();<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      }<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      return Response.status(Response.Status.SERVICE_UNAVAILABLE)<a name="line.121"></a>
-<span class="sourceLineNo">122</span>        .type(MIMETYPE_TEXT).entity("Unavailable" + CRLF)<a name="line.122"></a>
-<span class="sourceLineNo">123</span>        .build();<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    }<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  }<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>  @PUT<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  @Consumes({MIMETYPE_XML, MIMETYPE_JSON, MIMETYPE_PROTOBUF,<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    MIMETYPE_PROTOBUF_IETF})<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  public Response put(final ScannerModel model,<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      final @Context UriInfo uriInfo) {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    if (LOG.isTraceEnabled()) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      LOG.trace("PUT " + uriInfo.getAbsolutePath());<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    }<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return update(model, true, uriInfo);<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>  @POST<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  @Consumes({MIMETYPE_XML, MIMETYPE_JSON, MIMETYPE_PROTOBUF,<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    MIMETYPE_PROTOBUF_IETF})<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  public Response post(final ScannerModel model,<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      final @Context UriInfo uriInfo) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    if (LOG.isTraceEnabled()) {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      LOG.trace("POST " + uriInfo.getAbsolutePath());<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    }<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    return update(model, false, uriInfo);<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>  @Path("{scanner: .+}")<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  public ScannerInstanceResource getScannerInstanceResource(<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      final @PathParam("scanner") String id) throws IOException {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    ScannerInstanceResource instance = scanners.get(id);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    if (instance == null) {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      servlet.getMetrics().incrementFailedGetRequests(1);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      return new ScannerInstanceResource();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    } else {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      servlet.getMetrics().incrementSucessfulGetRequests(1);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    return instance;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>}<a name="line.161"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.rest.model.ScannerModel;<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>@InterfaceAudience.Private<a name="line.49"></a>
+<span class="sourceLineNo">050</span>public class ScannerResource extends ResourceBase {<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>  private static final Logger LOG = LoggerFactory.getLogger(ScannerResource.class);<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>  static final Map&lt;String,ScannerInstanceResource&gt; scanners =<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   Collections.synchronizedMap(new HashMap&lt;String,ScannerInstanceResource&gt;());<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  TableResource tableResource;<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  /**<a name="line.59"></a>
+<span class="sourceLineNo">060</span>   * Constructor<a name="line.60"></a>
+<span class="sourceLineNo">061</span>   * @param tableResource<a name="line.61"></a>
+<span class="sourceLineNo">062</span>   * @throws IOException<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   */<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  public ScannerResource(TableResource tableResource)throws IOException {<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    super();<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    this.tableResource = tableResource;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  }<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>  static boolean delete(final String id) {<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    ScannerInstanceResource instance = scanners.remove(id);<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    if (instance != null) {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      instance.generator.close();<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      return true;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    } else {<a name="line.74"></a>
+<span class="sourceLineNo">075</span>      return false;<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><a name="line.78"></a>
+<span class="sourceLineNo">079</span>  Response update(final ScannerModel model, final boolean replace,<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      final UriInfo uriInfo) {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    servlet.getMetrics().incrementRequests(1);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    if (servlet.isReadOnly()) {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      return Response.status(Response.Status.FORBIDDEN)<a name="line.83"></a>
+<span class="sourceLineNo">084</span>        .type(MIMETYPE_TEXT).entity("Forbidden" + CRLF)<a name="line.84"></a>
+<span class="sourceLineNo">085</span>        .build();<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    byte[] endRow = model.hasEndRow() ? model.getEndRow() : null;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    RowSpec spec = null;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    if (model.getLabels() != null) {<a name="line.89"></a>
+<span class="sourceLineNo">090</span>      spec = new RowSpec(model.getStartRow(), endRow, model.getColumns(), model.getStartTime(),<a name="line.90"></a>
+<span class="sourceLineNo">091</span>          model.getEndTime(), model.getMaxVersions(), model.getLabels());<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    } else {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      spec = new RowSpec(model.getStartRow(), endRow, model.getColumns(), model.getStartTime(),<a name="line.93"></a>
+<span class="sourceLineNo">094</span>          model.getEndTime(), model.getMaxVersions());<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    }<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>    try {<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      Filter filter = ScannerResultGenerator.buildFilterFromModel(model);<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      String tableName = tableResource.getName();<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      ScannerResultGenerator gen =<a name="line.100"></a>
+<span class="sourceLineNo">101</span>        new ScannerResultGenerator(tableName, spec, filter, model.getCaching(),<a name="line.101"></a>
+<span class="sourceLineNo">102</span>          model.getCacheBlocks());<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      String id = gen.getID();<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      ScannerInstanceResource instance =<a name="line.104"></a>
+<span class="sourceLineNo">105</span>        new ScannerInstanceResource(tableName, id, gen, model.getBatch());<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      scanners.put(id, instance);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      if (LOG.isTraceEnabled()) {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>        LOG.trace("new scanner: " + id);<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      }<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      UriBuilder builder = uriInfo.getAbsolutePathBuilder();<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      URI uri = builder.path(id).build();<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      servlet.getMetrics().incrementSucessfulPutRequests(1);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      return Response.created(uri).build();<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    } catch (Exception e) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      LOG.error("Exception occured while processing " + uriInfo.getAbsolutePath() + " : ", e);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      servlet.getMetrics().incrementFailedPutRequests(1);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      if (e instanceof TableNotFoundException) {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>        return Response.status(Response.Status.NOT_FOUND)<a name="line.118"></a>
+<span class="sourceLineNo">119</span>          .type(MIMETYPE_TEXT).entity("Not found" + CRLF)<a name="line.119"></a>
+<span class="sourceLineNo">120</span>          .build();<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      } else if (e instanceof RuntimeException<a name="line.121"></a>
+<span class="sourceLineNo">122</span>          || e instanceof JsonMappingException | e instanceof JsonParseException) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>        return Response.status(Response.Status.BAD_REQUEST)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>          .type(MIMETYPE_TEXT).entity("Bad request" + CRLF)<a name="line.124"></a>
+<span class="sourceLineNo">125</span>          .build();<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      }<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      return Response.status(Response.Status.SERVICE_UNAVAILABLE)<a name="line.127"></a>
+<span class="sourceLineNo">128</span>        .type(MIMETYPE_TEXT).entity("Unavailable" + CRLF)<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        .build();<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><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  @PUT<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  @Consumes({MIMETYPE_XML, MIMETYPE_JSON, MIMETYPE_PROTOBUF,<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    MIMETYPE_PROTOBUF_IETF})<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  public Response put(final ScannerModel model,<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      final @Context UriInfo uriInfo) {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    if (LOG.isTraceEnabled()) {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      LOG.trace("PUT " + uriInfo.getAbsolutePath());<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    }<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    return update(model, true, uriInfo);<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>  @POST<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  @Consumes({MIMETYPE_XML, MIMETYPE_JSON, MIMETYPE_PROTOBUF,<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    MIMETYPE_PROTOBUF_IETF})<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  public Response post(final ScannerModel model,<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      final @Context UriInfo uriInfo) {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    if (LOG.isTraceEnabled()) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      LOG.trace("POST " + uriInfo.getAbsolutePath());<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    }<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    return update(model, false, uriInfo);<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>  @Path("{scanner: .+}")<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  public ScannerInstanceResource getScannerInstanceResource(<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      final @PathParam("scanner") String id) throws IOException {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    ScannerInstanceResource instance = scanners.get(id);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    if (instance == null) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      servlet.getMetrics().incrementFailedGetRequests(1);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      return new ScannerInstanceResource();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    } else {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      servlet.getMetrics().incrementSucessfulGetRequests(1);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    }<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    return instance;<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/downloads.html
----------------------------------------------------------------------
diff --git a/downloads.html b/downloads.html
index 52a13e4..be28b84 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index af0867b..d562145 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index 1f323e8..d2aacc1 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index a1c4e90..c548f8a 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index 1274dd7..e852055 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 


[15/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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 3559952..bd7445a 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
@@ -359,2396 +359,2401 @@
 <span class="sourceLineNo">351</span>    switch (inMemoryCompaction) {<a name="line.351"></a>
 <span class="sourceLineNo">352</span>      case NONE:<a name="line.352"></a>
 <span class="sourceLineNo">353</span>        ms = ReflectionUtils.newInstance(DefaultMemStore.class,<a name="line.353"></a>
-<span class="sourceLineNo">354</span>            new Object[]{conf, this.comparator});<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        break;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      default:<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        Class&lt;? extends CompactingMemStore&gt; clz = conf.getClass(MEMSTORE_CLASS_NAME,<a name="line.357"></a>
-<span class="sourceLineNo">358</span>            CompactingMemStore.class, CompactingMemStore.class);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        ms = ReflectionUtils.newInstance(clz, new Object[]{conf, this.comparator, this,<a name="line.359"></a>
-<span class="sourceLineNo">360</span>            this.getHRegion().getRegionServicesForStores(), inMemoryCompaction});<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    }<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    return ms;<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  }<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>  /**<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * Creates the cache config.<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * @param family The current column family.<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   */<a name="line.368"></a>
-<span class="sourceLineNo">369</span>  protected void createCacheConf(final ColumnFamilyDescriptor family) {<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    this.cacheConf = new CacheConfig(conf, family);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  }<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>  /**<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * Creates the store engine configured for the given Store.<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   * @param store The store. An unfortunate dependency needed due to it<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   *              being passed to coprocessors via the compactor.<a name="line.376"></a>
-<span class="sourceLineNo">377</span>   * @param conf Store configuration.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>   * @param kvComparator KVComparator for storeFileManager.<a name="line.378"></a>
-<span class="sourceLineNo">379</span>   * @return StoreEngine to use.<a name="line.379"></a>
-<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  protected StoreEngine&lt;?, ?, ?, ?&gt; createStoreEngine(HStore store, Configuration conf,<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      CellComparator kvComparator) throws IOException {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    return StoreEngine.create(store, conf, comparator);<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>   * @param family<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * @return TTL in seconds of the specified family<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   */<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  public static long determineTTLFromFamily(final ColumnFamilyDescriptor family) {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    // HCD.getTimeToLive returns ttl in seconds.  Convert to milliseconds.<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    long ttl = family.getTimeToLive();<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    if (ttl == HConstants.FOREVER) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      // Default is unlimited ttl.<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      ttl = Long.MAX_VALUE;<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    } else if (ttl == -1) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      ttl = Long.MAX_VALUE;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    } else {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      // Second -&gt; ms adjust for user data<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      ttl *= 1000;<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    return ttl;<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  }<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>  @Override<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  public String getColumnFamilyName() {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    return this.family.getNameAsString();<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>  @Override<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  public TableName getTableName() {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    return this.getRegionInfo().getTable();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  }<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>  @Override<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  public FileSystem getFileSystem() {<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    return this.fs.getFileSystem();<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>  public HRegionFileSystem getRegionFileSystem() {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    return this.fs;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  }<a name="line.422"></a>
-<span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>  /* Implementation of StoreConfigInformation */<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  @Override<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  public long getStoreFileTtl() {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    // TTL only applies if there's no MIN_VERSIONs setting on the column.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    return (this.scanInfo.getMinVersions() == 0) ? this.scanInfo.getTtl() : Long.MAX_VALUE;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  }<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>  @Override<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  public long getMemStoreFlushSize() {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    // TODO: Why is this in here?  The flushsize of the region rather than the store?  St.Ack<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    return this.region.memstoreFlushSize;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  @Override<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  public MemStoreSize getFlushableSize() {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    return this.memstore.getFlushableSize();<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>  @Override<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  public MemStoreSize getSnapshotSize() {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    return this.memstore.getSnapshotSize();<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>  @Override<a name="line.447"></a>
-<span class="sourceLineNo">448</span>  public long getCompactionCheckMultiplier() {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    return this.compactionCheckMultiplier;<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  @Override<a name="line.452"></a>
-<span class="sourceLineNo">453</span>  public long getBlockingFileCount() {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    return blockingFileCount;<a name="line.454"></a>
-<span class="sourceLineNo">455</span>  }<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  /* End implementation of StoreConfigInformation */<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>   * Returns the configured bytesPerChecksum value.<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   * @param conf The configuration<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * @return The bytesPerChecksum that is set in the configuration<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   */<a name="line.462"></a>
-<span class="sourceLineNo">463</span>  public static int getBytesPerChecksum(Configuration conf) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    return conf.getInt(HConstants.BYTES_PER_CHECKSUM,<a name="line.464"></a>
-<span class="sourceLineNo">465</span>                       HFile.DEFAULT_BYTES_PER_CHECKSUM);<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>  /**<a name="line.468"></a>
-<span class="sourceLineNo">469</span>   * Returns the configured checksum algorithm.<a name="line.469"></a>
-<span class="sourceLineNo">470</span>   * @param conf The configuration<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   * @return The checksum algorithm that is set in the configuration<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   */<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  public static ChecksumType getChecksumType(Configuration conf) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    String checksumName = conf.get(HConstants.CHECKSUM_TYPE_NAME);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    if (checksumName == null) {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      return ChecksumType.getDefaultChecksumType();<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    } else {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      return ChecksumType.nameToType(checksumName);<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>   * @return how many bytes to write between status checks<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   */<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  public static int getCloseCheckInterval() {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    return closeCheckInterval;<a name="line.486"></a>
-<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>  @Override<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  public ColumnFamilyDescriptor getColumnFamilyDescriptor() {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    return this.family;<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>  @Override<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  public OptionalLong getMaxSequenceId() {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    return StoreUtils.getMaxSequenceIdInList(this.getStorefiles());<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  }<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>  @Override<a name="line.499"></a>
-<span class="sourceLineNo">500</span>  public OptionalLong getMaxMemStoreTS() {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    return StoreUtils.getMaxMemStoreTSInList(this.getStorefiles());<a name="line.501"></a>
-<span class="sourceLineNo">502</span>  }<a name="line.502"></a>
-<span class="sourceLineNo">503</span><a name="line.503"></a>
-<span class="sourceLineNo">504</span>  /**<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @param tabledir {@link Path} to where the table is being stored<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @param hri {@link RegionInfo} for the region.<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * @param family {@link ColumnFamilyDescriptor} describing the column family<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   * @return Path to family/Store home directory.<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   */<a name="line.509"></a>
-<span class="sourceLineNo">510</span>  @Deprecated<a name="line.510"></a>
-<span class="sourceLineNo">511</span>  public static Path getStoreHomedir(final Path tabledir,<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      final RegionInfo hri, final byte[] family) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    return getStoreHomedir(tabledir, hri.getEncodedName(), family);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>  }<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>   * @param tabledir {@link Path} to where the table is being stored<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * @param encodedName Encoded region name.<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * @param family {@link ColumnFamilyDescriptor} describing the column family<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   * @return Path to family/Store home directory.<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   */<a name="line.521"></a>
-<span class="sourceLineNo">522</span>  @Deprecated<a name="line.522"></a>
-<span class="sourceLineNo">523</span>  public static Path getStoreHomedir(final Path tabledir,<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      final String encodedName, final byte[] family) {<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    return new Path(tabledir, new Path(encodedName, Bytes.toString(family)));<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>   * @return the data block encoder<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   */<a name="line.530"></a>
-<span class="sourceLineNo">531</span>  public HFileDataBlockEncoder getDataBlockEncoder() {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    return dataBlockEncoder;<a name="line.532"></a>
-<span class="sourceLineNo">533</span>  }<a name="line.533"></a>
-<span class="sourceLineNo">534</span><a name="line.534"></a>
-<span class="sourceLineNo">535</span>  /**<a name="line.535"></a>
-<span class="sourceLineNo">536</span>   * Should be used only in tests.<a name="line.536"></a>
-<span class="sourceLineNo">537</span>   * @param blockEncoder the block delta encoder to use<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   */<a name="line.538"></a>
-<span class="sourceLineNo">539</span>  void setDataBlockEncoderInTest(HFileDataBlockEncoder blockEncoder) {<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    this.dataBlockEncoder = blockEncoder;<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>  /**<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   * Creates an unsorted list of StoreFile loaded in parallel<a name="line.544"></a>
-<span class="sourceLineNo">545</span>   * from the given directory.<a name="line.545"></a>
-<span class="sourceLineNo">546</span>   * @throws IOException<a name="line.546"></a>
-<span class="sourceLineNo">547</span>   */<a name="line.547"></a>
-<span class="sourceLineNo">548</span>  private List&lt;HStoreFile&gt; loadStoreFiles() throws IOException {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    Collection&lt;StoreFileInfo&gt; files = fs.getStoreFiles(getColumnFamilyName());<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    return openStoreFiles(files);<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>  private List&lt;HStoreFile&gt; openStoreFiles(Collection&lt;StoreFileInfo&gt; files) throws IOException {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    if (CollectionUtils.isEmpty(files)) {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      return Collections.emptyList();<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    }<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    // initialize the thread pool for opening store files in parallel..<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    ThreadPoolExecutor storeFileOpenerThreadPool =<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      this.region.getStoreFileOpenAndCloseThreadPool("StoreFileOpenerThread-"<a name="line.559"></a>
-<span class="sourceLineNo">560</span>        + this.region.getRegionInfo().getEncodedName() + "-" + this.getColumnFamilyName());<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    CompletionService&lt;HStoreFile&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeFileOpenerThreadPool);<a name="line.561"></a>
-<span class="sourceLineNo">562</span><a name="line.562"></a>
-<span class="sourceLineNo">563</span>    int totalValidStoreFile = 0;<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    for (StoreFileInfo storeFileInfo : files) {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      // open each store file in parallel<a name="line.565"></a>
-<span class="sourceLineNo">566</span>      completionService.submit(() -&gt; this.createStoreFileAndReader(storeFileInfo));<a name="line.566"></a>
-<span class="sourceLineNo">567</span>      totalValidStoreFile++;<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>    ArrayList&lt;HStoreFile&gt; results = new ArrayList&lt;&gt;(files.size());<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    IOException ioe = null;<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    try {<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      for (int i = 0; i &lt; totalValidStoreFile; i++) {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>        try {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>          HStoreFile storeFile = completionService.take().get();<a name="line.575"></a>
-<span class="sourceLineNo">576</span>          if (storeFile != null) {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>            long length = storeFile.getReader().length();<a name="line.577"></a>
-<span class="sourceLineNo">578</span>            this.storeSize.addAndGet(length);<a name="line.578"></a>
-<span class="sourceLineNo">579</span>            this.totalUncompressedBytes<a name="line.579"></a>
-<span class="sourceLineNo">580</span>                .addAndGet(storeFile.getReader().getTotalUncompressedBytes());<a name="line.580"></a>
-<span class="sourceLineNo">581</span>            LOG.debug("loaded {}", storeFile);<a name="line.581"></a>
-<span class="sourceLineNo">582</span>            results.add(storeFile);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>          }<a name="line.583"></a>
-<span class="sourceLineNo">584</span>        } catch (InterruptedException e) {<a name="line.584"></a>
-<span class="sourceLineNo">585</span>          if (ioe == null) ioe = new InterruptedIOException(e.getMessage());<a name="line.585"></a>
-<span class="sourceLineNo">586</span>        } catch (ExecutionException e) {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>          if (ioe == null) ioe = new IOException(e.getCause());<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>    } finally {<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      storeFileOpenerThreadPool.shutdownNow();<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    }<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    if (ioe != null) {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      // close StoreFile readers<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      boolean evictOnClose =<a name="line.595"></a>
-<span class="sourceLineNo">596</span>          cacheConf != null? cacheConf.shouldEvictOnClose(): true;<a name="line.596"></a>
-<span class="sourceLineNo">597</span>      for (HStoreFile file : results) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>        try {<a name="line.598"></a>
-<span class="sourceLineNo">599</span>          if (file != null) {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>            file.closeStoreFile(evictOnClose);<a name="line.600"></a>
-<span class="sourceLineNo">601</span>          }<a name="line.601"></a>
-<span class="sourceLineNo">602</span>        } catch (IOException e) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>          LOG.warn("Could not close store file", e);<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>      throw ioe;<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>    return results;<a name="line.609"></a>
-<span class="sourceLineNo">610</span>  }<a name="line.610"></a>
-<span class="sourceLineNo">611</span><a name="line.611"></a>
-<span class="sourceLineNo">612</span>  @Override<a name="line.612"></a>
-<span class="sourceLineNo">613</span>  public void refreshStoreFiles() throws IOException {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    Collection&lt;StoreFileInfo&gt; newFiles = fs.getStoreFiles(getColumnFamilyName());<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    refreshStoreFilesInternal(newFiles);<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>  /**<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * Replaces the store files that the store has with the given files. Mainly used by secondary<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   * region replicas to keep up to date with the primary region files.<a name="line.620"></a>
-<span class="sourceLineNo">621</span>   * @throws IOException<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   */<a name="line.622"></a>
-<span class="sourceLineNo">623</span>  public void refreshStoreFiles(Collection&lt;String&gt; newFiles) throws IOException {<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    List&lt;StoreFileInfo&gt; storeFiles = new ArrayList&lt;&gt;(newFiles.size());<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    for (String file : newFiles) {<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      storeFiles.add(fs.getStoreFileInfo(getColumnFamilyName(), file));<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    }<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    refreshStoreFilesInternal(storeFiles);<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>  /**<a name="line.631"></a>
-<span class="sourceLineNo">632</span>   * Checks the underlying store files, and opens the files that  have not<a name="line.632"></a>
-<span class="sourceLineNo">633</span>   * been opened, and removes the store file readers for store files no longer<a name="line.633"></a>
-<span class="sourceLineNo">634</span>   * available. Mainly used by secondary region replicas to keep up to date with<a name="line.634"></a>
-<span class="sourceLineNo">635</span>   * the primary region files.<a name="line.635"></a>
-<span class="sourceLineNo">636</span>   * @throws IOException<a name="line.636"></a>
-<span class="sourceLineNo">637</span>   */<a name="line.637"></a>
-<span class="sourceLineNo">638</span>  private void refreshStoreFilesInternal(Collection&lt;StoreFileInfo&gt; newFiles) throws IOException {<a name="line.638"></a>
-<span class="sourceLineNo">639</span>    StoreFileManager sfm = storeEngine.getStoreFileManager();<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    Collection&lt;HStoreFile&gt; currentFiles = sfm.getStorefiles();<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    Collection&lt;HStoreFile&gt; compactedFiles = sfm.getCompactedfiles();<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    if (currentFiles == null) currentFiles = Collections.emptySet();<a name="line.642"></a>
-<span class="sourceLineNo">643</span>    if (newFiles == null) newFiles = Collections.emptySet();<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    if (compactedFiles == null) compactedFiles = Collections.emptySet();<a name="line.644"></a>
-<span class="sourceLineNo">645</span><a name="line.645"></a>
-<span class="sourceLineNo">646</span>    HashMap&lt;StoreFileInfo, HStoreFile&gt; currentFilesSet = new HashMap&lt;&gt;(currentFiles.size());<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    for (HStoreFile sf : currentFiles) {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>      currentFilesSet.put(sf.getFileInfo(), sf);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    }<a name="line.649"></a>
-<span class="sourceLineNo">650</span>    HashMap&lt;StoreFileInfo, HStoreFile&gt; compactedFilesSet = new HashMap&lt;&gt;(compactedFiles.size());<a name="line.650"></a>
-<span class="sourceLineNo">651</span>    for (HStoreFile sf : compactedFiles) {<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      compactedFilesSet.put(sf.getFileInfo(), sf);<a name="line.652"></a>
-<span class="sourceLineNo">653</span>    }<a name="line.653"></a>
-<span class="sourceLineNo">654</span><a name="line.654"></a>
-<span class="sourceLineNo">655</span>    Set&lt;StoreFileInfo&gt; newFilesSet = new HashSet&lt;StoreFileInfo&gt;(newFiles);<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    // Exclude the files that have already been compacted<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    newFilesSet = Sets.difference(newFilesSet, compactedFilesSet.keySet());<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    Set&lt;StoreFileInfo&gt; toBeAddedFiles = Sets.difference(newFilesSet, currentFilesSet.keySet());<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    Set&lt;StoreFileInfo&gt; toBeRemovedFiles = Sets.difference(currentFilesSet.keySet(), newFilesSet);<a name="line.659"></a>
-<span class="sourceLineNo">660</span><a name="line.660"></a>
-<span class="sourceLineNo">661</span>    if (toBeAddedFiles.isEmpty() &amp;&amp; toBeRemovedFiles.isEmpty()) {<a name="line.661"></a>
-<span class="sourceLineNo">662</span>      return;<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>    LOG.info("Refreshing store files for region " + this.getRegionInfo().getRegionNameAsString()<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      + " files to add: " + toBeAddedFiles + " files to remove: " + toBeRemovedFiles);<a name="line.666"></a>
-<span class="sourceLineNo">667</span><a name="line.667"></a>
-<span class="sourceLineNo">668</span>    Set&lt;HStoreFile&gt; toBeRemovedStoreFiles = new HashSet&lt;&gt;(toBeRemovedFiles.size());<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    for (StoreFileInfo sfi : toBeRemovedFiles) {<a name="line.669"></a>
-<span class="sourceLineNo">670</span>      toBeRemovedStoreFiles.add(currentFilesSet.get(sfi));<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    }<a name="line.671"></a>
-<span class="sourceLineNo">672</span><a name="line.672"></a>
-<span class="sourceLineNo">673</span>    // try to open the files<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    List&lt;HStoreFile&gt; openedFiles = openStoreFiles(toBeAddedFiles);<a name="line.674"></a>
-<span class="sourceLineNo">675</span><a name="line.675"></a>
-<span class="sourceLineNo">676</span>    // propogate the file changes to the underlying store file manager<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    replaceStoreFiles(toBeRemovedStoreFiles, openedFiles); //won't throw an exception<a name="line.677"></a>
-<span class="sourceLineNo">678</span><a name="line.678"></a>
-<span class="sourceLineNo">679</span>    // Advance the memstore read point to be at least the new store files seqIds so that<a name="line.679"></a>
-<span class="sourceLineNo">680</span>    // readers might pick it up. This assumes that the store is not getting any writes (otherwise<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    // in-flight transactions might be made visible)<a name="line.681"></a>
-<span class="sourceLineNo">682</span>    if (!toBeAddedFiles.isEmpty()) {<a name="line.682"></a>
-<span class="sourceLineNo">683</span>      // we must have the max sequence id here as we do have several store files<a name="line.683"></a>
-<span class="sourceLineNo">684</span>      region.getMVCC().advanceTo(this.getMaxSequenceId().getAsLong());<a name="line.684"></a>
-<span class="sourceLineNo">685</span>    }<a name="line.685"></a>
-<span class="sourceLineNo">686</span><a name="line.686"></a>
-<span class="sourceLineNo">687</span>    completeCompaction(toBeRemovedStoreFiles);<a name="line.687"></a>
-<span class="sourceLineNo">688</span>  }<a name="line.688"></a>
-<span class="sourceLineNo">689</span><a name="line.689"></a>
-<span class="sourceLineNo">690</span>  @VisibleForTesting<a name="line.690"></a>
-<span class="sourceLineNo">691</span>  protected HStoreFile createStoreFileAndReader(final Path p) throws IOException {<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    StoreFileInfo info = new StoreFileInfo(conf, this.getFileSystem(), p);<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    return createStoreFileAndReader(info);<a name="line.693"></a>
-<span class="sourceLineNo">694</span>  }<a name="line.694"></a>
-<span class="sourceLineNo">695</span><a name="line.695"></a>
-<span class="sourceLineNo">696</span>  private HStoreFile createStoreFileAndReader(StoreFileInfo info) throws IOException {<a name="line.696"></a>
-<span class="sourceLineNo">697</span>    info.setRegionCoprocessorHost(this.region.getCoprocessorHost());<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    HStoreFile storeFile = new HStoreFile(this.getFileSystem(), info, this.conf, this.cacheConf,<a name="line.698"></a>
-<span class="sourceLineNo">699</span>        this.family.getBloomFilterType(), isPrimaryReplicaStore());<a name="line.699"></a>
-<span class="sourceLineNo">700</span>    storeFile.initReader();<a name="line.700"></a>
-<span class="sourceLineNo">701</span>    return storeFile;<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>   * This message intends to inform the MemStore that next coming updates<a name="line.705"></a>
-<span class="sourceLineNo">706</span>   * are going to be part of the replaying edits from WAL<a name="line.706"></a>
-<span class="sourceLineNo">707</span>   */<a name="line.707"></a>
-<span class="sourceLineNo">708</span>  public void startReplayingFromWAL(){<a name="line.708"></a>
-<span class="sourceLineNo">709</span>    this.memstore.startReplayingFromWAL();<a name="line.709"></a>
-<span class="sourceLineNo">710</span>  }<a name="line.710"></a>
-<span class="sourceLineNo">711</span><a name="line.711"></a>
-<span class="sourceLineNo">712</span>  /**<a name="line.712"></a>
-<span class="sourceLineNo">713</span>   * This message intends to inform the MemStore that the replaying edits from WAL<a name="line.713"></a>
-<span class="sourceLineNo">714</span>   * are done<a name="line.714"></a>
-<span class="sourceLineNo">715</span>   */<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  public void stopReplayingFromWAL(){<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    this.memstore.stopReplayingFromWAL();<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>  /**<a name="line.720"></a>
-<span class="sourceLineNo">721</span>   * Adds a value to the memstore<a name="line.721"></a>
-<span class="sourceLineNo">722</span>   */<a name="line.722"></a>
-<span class="sourceLineNo">723</span>  public void add(final Cell cell, MemStoreSizing memstoreSizing) {<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    lock.readLock().lock();<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    try {<a name="line.725"></a>
-<span class="sourceLineNo">726</span>      if (this.currentParallelPutCount.getAndIncrement() &gt; this.parallelPutCountPrintThreshold) {<a name="line.726"></a>
-<span class="sourceLineNo">727</span>        LOG.trace(this.getTableName() + "tableName={}, encodedName={}, columnFamilyName={} is " +<a name="line.727"></a>
-<span class="sourceLineNo">728</span>          "too busy!", this.getRegionInfo().getEncodedName(), this .getColumnFamilyName());<a name="line.728"></a>
-<span class="sourceLineNo">729</span>      }<a name="line.729"></a>
-<span class="sourceLineNo">730</span>      this.memstore.add(cell, memstoreSizing);<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    } finally {<a name="line.731"></a>
-<span class="sourceLineNo">732</span>      lock.readLock().unlock();<a name="line.732"></a>
-<span class="sourceLineNo">733</span>      currentParallelPutCount.decrementAndGet();<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><a name="line.736"></a>
-<span class="sourceLineNo">737</span>  /**<a name="line.737"></a>
-<span class="sourceLineNo">738</span>   * Adds the specified value to the memstore<a name="line.738"></a>
-<span class="sourceLineNo">739</span>   */<a name="line.739"></a>
-<span class="sourceLineNo">740</span>  public void add(final Iterable&lt;Cell&gt; cells, MemStoreSizing memstoreSizing) {<a name="line.740"></a>
-<span class="sourceLineNo">741</span>    lock.readLock().lock();<a name="line.741"></a>
-<span class="sourceLineNo">742</span>    try {<a name="line.742"></a>
-<span class="sourceLineNo">743</span>      if (this.currentParallelPutCount.getAndIncrement() &gt; this.parallelPutCountPrintThreshold) {<a name="line.743"></a>
-<span class="sourceLineNo">744</span>        LOG.trace(this.getTableName() + "tableName={}, encodedName={}, columnFamilyName={} is " +<a name="line.744"></a>
-<span class="sourceLineNo">745</span>            "too busy!", this.getRegionInfo().getEncodedName(), this .getColumnFamilyName());<a name="line.745"></a>
-<span class="sourceLineNo">746</span>      }<a name="line.746"></a>
-<span class="sourceLineNo">747</span>      memstore.add(cells, memstoreSizing);<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    } finally {<a name="line.748"></a>
-<span class="sourceLineNo">749</span>      lock.readLock().unlock();<a name="line.749"></a>
-<span class="sourceLineNo">750</span>      currentParallelPutCount.decrementAndGet();<a name="line.750"></a>
-<span class="sourceLineNo">751</span>    }<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 long timeOfOldestEdit() {<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    return memstore.timeOfOldestEdit();<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>  /**<a name="line.759"></a>
-<span class="sourceLineNo">760</span>   * @return All store files.<a name="line.760"></a>
-<span class="sourceLineNo">761</span>   */<a name="line.761"></a>
-<span class="sourceLineNo">762</span>  @Override<a name="line.762"></a>
-<span class="sourceLineNo">763</span>  public Collection&lt;HStoreFile&gt; getStorefiles() {<a name="line.763"></a>
-<span class="sourceLineNo">764</span>    return this.storeEngine.getStoreFileManager().getStorefiles();<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>  @Override<a name="line.767"></a>
-<span class="sourceLineNo">768</span>  public Collection&lt;HStoreFile&gt; getCompactedFiles() {<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    return this.storeEngine.getStoreFileManager().getCompactedfiles();<a name="line.769"></a>
-<span class="sourceLineNo">770</span>  }<a name="line.770"></a>
-<span class="sourceLineNo">771</span><a name="line.771"></a>
-<span class="sourceLineNo">772</span>  /**<a name="line.772"></a>
-<span class="sourceLineNo">773</span>   * This throws a WrongRegionException if the HFile does not fit in this region, or an<a name="line.773"></a>
-<span class="sourceLineNo">774</span>   * InvalidHFileException if the HFile is not valid.<a name="line.774"></a>
-<span class="sourceLineNo">775</span>   */<a name="line.775"></a>
-<span class="sourceLineNo">776</span>  public void assertBulkLoadHFileOk(Path srcPath) throws IOException {<a name="line.776"></a>
-<span class="sourceLineNo">777</span>    HFile.Reader reader  = null;<a name="line.777"></a>
-<span class="sourceLineNo">778</span>    try {<a name="line.778"></a>
-<span class="sourceLineNo">779</span>      LOG.info("Validating hfile at " + srcPath + " for inclusion in "<a name="line.779"></a>
-<span class="sourceLineNo">780</span>          + "store " + this + " region " + this.getRegionInfo().getRegionNameAsString());<a name="line.780"></a>
-<span class="sourceLineNo">781</span>      reader = HFile.createReader(srcPath.getFileSystem(conf), srcPath, cacheConf,<a name="line.781"></a>
-<span class="sourceLineNo">782</span>        isPrimaryReplicaStore(), conf);<a name="line.782"></a>
-<span class="sourceLineNo">783</span>      reader.loadFileInfo();<a name="line.783"></a>
-<span class="sourceLineNo">784</span><a name="line.784"></a>
-<span class="sourceLineNo">785</span>      Optional&lt;byte[]&gt; firstKey = reader.getFirstRowKey();<a name="line.785"></a>
-<span class="sourceLineNo">786</span>      Preconditions.checkState(firstKey.isPresent(), "First key can not be null");<a name="line.786"></a>
-<span class="sourceLineNo">787</span>      Optional&lt;Cell&gt; lk = reader.getLastKey();<a name="line.787"></a>
-<span class="sourceLineNo">788</span>      Preconditions.checkState(lk.isPresent(), "Last key can not be null");<a name="line.788"></a>
-<span class="sourceLineNo">789</span>      byte[] lastKey =  CellUtil.cloneRow(lk.get());<a name="line.789"></a>
-<span class="sourceLineNo">790</span><a name="line.790"></a>
-<span class="sourceLineNo">791</span>      if (LOG.isDebugEnabled()) {<a name="line.791"></a>
-<span class="sourceLineNo">792</span>        LOG.debug("HFile bounds: first=" + Bytes.toStringBinary(firstKey.get()) +<a name="line.792"></a>
-<span class="sourceLineNo">793</span>            " last=" + Bytes.toStringBinary(lastKey));<a name="line.793"></a>
-<span class="sourceLineNo">794</span>        LOG.debug("Region bounds: first=" +<a name="line.794"></a>
-<span class="sourceLineNo">795</span>            Bytes.toStringBinary(getRegionInfo().getStartKey()) +<a name="line.795"></a>
-<span class="sourceLineNo">796</span>            " last=" + Bytes.toStringBinary(getRegionInfo().getEndKey()));<a name="line.796"></a>
-<span class="sourceLineNo">797</span>      }<a name="line.797"></a>
-<span class="sourceLineNo">798</span><a name="line.798"></a>
-<span class="sourceLineNo">799</span>      if (!this.getRegionInfo().containsRange(firstKey.get(), lastKey)) {<a name="line.799"></a>
-<span class="sourceLineNo">800</span>        throw new WrongRegionException(<a name="line.800"></a>
-<span class="sourceLineNo">801</span>            "Bulk load file " + srcPath.toString() + " does not fit inside region "<a name="line.801"></a>
-<span class="sourceLineNo">802</span>            + this.getRegionInfo().getRegionNameAsString());<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>      if(reader.length() &gt; conf.getLong(HConstants.HREGION_MAX_FILESIZE,<a name="line.805"></a>
-<span class="sourceLineNo">806</span>          HConstants.DEFAULT_MAX_FILE_SIZE)) {<a name="line.806"></a>
-<span class="sourceLineNo">807</span>        LOG.warn("Trying to bulk load hfile " + srcPath + " with size: " +<a name="line.807"></a>
-<span class="sourceLineNo">808</span>            reader.length() + " bytes can be problematic as it may lead to oversplitting.");<a name="line.808"></a>
-<span class="sourceLineNo">809</span>      }<a name="line.809"></a>
-<span class="sourceLineNo">810</span><a name="line.810"></a>
-<span class="sourceLineNo">811</span>      if (verifyBulkLoads) {<a name="line.811"></a>
-<span class="sourceLineNo">812</span>        long verificationStartTime = EnvironmentEdgeManager.currentTime();<a name="line.812"></a>
-<span class="sourceLineNo">813</span>        LOG.info("Full verification started for bulk load hfile: {}", srcPath);<a name="line.813"></a>
-<span class="sourceLineNo">814</span>        Cell prevCell = null;<a name="line.814"></a>
-<span class="sourceLineNo">815</span>        HFileScanner scanner = reader.getScanner(false, false, false);<a name="line.815"></a>
-<span class="sourceLineNo">816</span>        scanner.seekTo();<a name="line.816"></a>
-<span class="sourceLineNo">817</span>        do {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>          Cell cell = scanner.getCell();<a name="line.818"></a>
-<span class="sourceLineNo">819</span>          if (prevCell != null) {<a name="line.819"></a>
-<span class="sourceLineNo">820</span>            if (comparator.compareRows(prevCell, cell) &gt; 0) {<a name="line.820"></a>
-<span class="sourceLineNo">821</span>              throw new InvalidHFileException("Previous row is greater than"<a name="line.821"></a>
-<span class="sourceLineNo">822</span>                  + " current row: path=" + srcPath + " previous="<a name="line.822"></a>
-<span class="sourceLineNo">823</span>                  + CellUtil.getCellKeyAsString(prevCell) + " current="<a name="line.823"></a>
-<span class="sourceLineNo">824</span>                  + CellUtil.getCellKeyAsString(cell));<a name="line.824"></a>
-<span class="sourceLineNo">825</span>            }<a name="line.825"></a>
-<span class="sourceLineNo">826</span>            if (CellComparator.getInstance().compareFamilies(prevCell, cell) != 0) {<a name="line.826"></a>
-<span class="sourceLineNo">827</span>              throw new InvalidHFileException("Previous key had different"<a name="line.827"></a>
-<span class="sourceLineNo">828</span>                  + " family compared to current key: path=" + srcPath<a name="line.828"></a>
-<span class="sourceLineNo">829</span>                  + " previous="<a name="line.829"></a>
-<span class="sourceLineNo">830</span>                  + Bytes.toStringBinary(prevCell.getFamilyArray(), prevCell.getFamilyOffset(),<a name="line.830"></a>
-<span class="sourceLineNo">831</span>                      prevCell.getFamilyLength())<a name="line.831"></a>
-<span class="sourceLineNo">832</span>                  + " current="<a name="line.832"></a>
-<span class="sourceLineNo">833</span>                  + Bytes.toStringBinary(cell.getFamilyArray(), cell.getFamilyOffset(),<a name="line.833"></a>
-<span class="sourceLineNo">834</span>                      cell.getFamilyLength()));<a name="line.834"></a>
-<span class="sourceLineNo">835</span>            }<a name="line.835"></a>
-<span class="sourceLineNo">836</span>          }<a name="line.836"></a>
-<span class="sourceLineNo">837</span>          prevCell = cell;<a name="line.837"></a>
-<span class="sourceLineNo">838</span>        } while (scanner.next());<a name="line.838"></a>
-<span class="sourceLineNo">839</span>      LOG.info("Full verification complete for bulk load hfile: " + srcPath.toString()<a name="line.839"></a>
-<span class="sourceLineNo">840</span>         + " took " + (EnvironmentEdgeManager.currentTime() - verificationStartTime)<a name="line.840"></a>
-<span class="sourceLineNo">841</span>         + " ms");<a name="line.841"></a>
-<span class="sourceLineNo">842</span>      }<a name="line.842"></a>
-<span class="sourceLineNo">843</span>    } finally {<a name="line.843"></a>
-<span class="sourceLineNo">844</span>      if (reader != null) reader.close();<a name="line.844"></a>
-<span class="sourceLineNo">845</span>    }<a name="line.845"></a>
-<span class="sourceLineNo">846</span>  }<a name="line.846"></a>
-<span class="sourceLineNo">847</span><a name="line.847"></a>
-<span class="sourceLineNo">848</span>  /**<a name="line.848"></a>
-<span class="sourceLineNo">849</span>   * This method should only be called from Region. It is assumed that the ranges of values in the<a name="line.849"></a>
-<span class="sourceLineNo">850</span>   * HFile fit within the stores assigned region. (assertBulkLoadHFileOk checks this)<a name="line.850"></a>
-<span class="sourceLineNo">851</span>   *<a name="line.851"></a>
-<span class="sourceLineNo">852</span>   * @param srcPathStr<a name="line.852"></a>
-<span class="sourceLineNo">853</span>   * @param seqNum sequence Id associated with the HFile<a name="line.853"></a>
-<span class="sourceLineNo">854</span>   */<a name="line.854"></a>
-<span class="sourceLineNo">855</span>  public Pair&lt;Path, Path&gt; preBulkLoadHFile(String srcPathStr, long seqNum) throws IOException {<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    Path srcPath = new Path(srcPathStr);<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    return fs.bulkLoadStoreFile(getColumnFamilyName(), srcPath, seqNum);<a name="line.857"></a>
-<span class="sourceLineNo">858</span>  }<a name="line.858"></a>
-<span class="sourceLineNo">859</span><a name="line.859"></a>
-<span class="sourceLineNo">860</span>  public Path bulkLoadHFile(byte[] family, String srcPathStr, Path dstPath) throws IOException {<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    Path srcPath = new Path(srcPathStr);<a name="line.861"></a>
-<span class="sourceLineNo">862</span>    try {<a name="line.862"></a>
-<span class="sourceLineNo">863</span>      fs.commitStoreFile(srcPath, dstPath);<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    } finally {<a name="line.864"></a>
-<span class="sourceLineNo">865</span>      if (this.getCoprocessorHost() != null) {<a name="line.865"></a>
-<span class="sourceLineNo">866</span>        this.getCoprocessorHost().postCommitStoreFile(family, srcPath, dstPath);<a name="line.866"></a>
-<span class="sourceLineNo">867</span>      }<a name="line.867"></a>
-<span class="sourceLineNo">868</span>    }<a name="line.868"></a>
-<span class="sourceLineNo">869</span><a name="line.869"></a>
-<span class="sourceLineNo">870</span>    LOG.info("Loaded HFile " + srcPath + " into store '" + getColumnFamilyName() + "' as "<a name="line.870"></a>
-<span class="sourceLineNo">871</span>        + dstPath + " - updating store file list.");<a name="line.871"></a>
-<span class="sourceLineNo">872</span><a name="line.872"></a>
-<span class="sourceLineNo">873</span>    HStoreFile sf = createStoreFileAndReader(dstPath);<a name="line.873"></a>
-<span class="sourceLineNo">874</span>    bulkLoadHFile(sf);<a name="line.874"></a>
-<span class="sourceLineNo">875</span><a name="line.875"></a>
-<span class="sourceLineNo">876</span>    LOG.info("Successfully loaded store file {} into store {} (new location: {})",<a name="line.876"></a>
-<span class="sourceLineNo">877</span>        srcPath, this, dstPath);<a name="line.877"></a>
-<span class="sourceLineNo">878</span><a name="line.878"></a>
-<span class="sourceLineNo">879</span>    return dstPath;<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>  public void bulkLoadHFile(StoreFileInfo fileInfo) throws IOException {<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    HStoreFile sf = createStoreFileAndReader(fileInfo);<a name="line.883"></a>
-<span class="sourceLineNo">884</span>    bulkLoadHFile(sf);<a name="line.884"></a>
-<span class="sourceLineNo">885</span>  }<a name="line.885"></a>
-<span class="sourceLineNo">886</span><a name="line.886"></a>
-<span class="sourceLineNo">887</span>  private void bulkLoadHFile(HStoreFile sf) throws IOException {<a name="line.887"></a>
-<span class="sourceLineNo">888</span>    StoreFileReader r = sf.getReader();<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    this.storeSize.addAndGet(r.length());<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    this.totalUncompressedBytes.addAndGet(r.getTotalUncompressedBytes());<a name="line.890"></a>
-<span class="sourceLineNo">891</span><a name="line.891"></a>
-<span class="sourceLineNo">892</span>    // Append the new storefile into the list<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    this.lock.writeLock().lock();<a name="line.893"></a>
-<span class="sourceLineNo">894</span>    try {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      this.storeEngine.getStoreFileManager().insertNewFiles(Lists.newArrayList(sf));<a name="line.895"></a>
-<span class="sourceLineNo">896</span>    } finally {<a name="line.896"></a>
-<span class="sourceLineNo">897</span>      // We need the lock, as long as we are updating the storeFiles<a name="line.897"></a>
-<span class="sourceLineNo">898</span>      // or changing the memstore. Let us release it before calling<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      // notifyChangeReadersObservers. See HBASE-4485 for a possible<a name="line.899"></a>
-<span class="sourceLineNo">900</span>      // deadlock scenario that could have happened if continue to hold<a name="line.900"></a>
-<span class="sourceLineNo">901</span>      // the lock.<a name="line.901"></a>
-<span class="sourceLineNo">902</span>      this.lock.writeLock().unlock();<a name="line.902"></a>
-<span class="sourceLineNo">903</span>    }<a name="line.903"></a>
-<span class="sourceLineNo">904</span>    LOG.info("Loaded HFile " + sf.getFileInfo() + " into store '" + getColumnFamilyName());<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    if (LOG.isTraceEnabled()) {<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      String traceMessage = "BULK LOAD time,size,store size,store files ["<a name="line.906"></a>
-<span class="sourceLineNo">907</span>          + EnvironmentEdgeManager.currentTime() + "," + r.length() + "," + storeSize<a name="line.907"></a>
-<span class="sourceLineNo">908</span>          + "," + storeEngine.getStoreFileManager().getStorefileCount() + "]";<a name="line.908"></a>
-<span class="sourceLineNo">909</span>      LOG.trace(traceMessage);<a name="line.909"></a>
-<span class="sourceLineNo">910</span>    }<a name="line.910"></a>
-<span class="sourceLineNo">911</span>  }<a name="line.911"></a>
-<span class="sourceLineNo">912</span><a name="line.912"></a>
-<span class="sourceLineNo">913</span>  /**<a name="line.913"></a>
-<span class="sourceLineNo">914</span>   * Close all the readers We don't need to worry about subsequent requests because the Region holds<a name="line.914"></a>
-<span class="sourceLineNo">915</span>   * a write lock that will prevent any more reads or writes.<a name="line.915"></a>
-<span class="sourceLineNo">916</span>   * @return the {@link StoreFile StoreFiles} that were previously being used.<a name="line.916"></a>
-<span class="sourceLineNo">917</span>   * @throws IOException on failure<a name="line.917"></a>
-<span class="sourceLineNo">918</span>   */<a name="line.918"></a>
-<span class="sourceLineNo">919</span>  public ImmutableCollection&lt;HStoreFile&gt; close() throws IOException {<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    this.archiveLock.lock();<a name="line.920"></a>
-<span class="sourceLineNo">921</span>    this.lock.writeLock().lock();<a name="line.921"></a>
-<span class="sourceLineNo">922</span>    try {<a name="line.922"></a>
-<span class="sourceLineNo">923</span>      // Clear so metrics doesn't find them.<a name="line.923"></a>
-<span class="sourceLineNo">924</span>      ImmutableCollection&lt;HStoreFile&gt; result = storeEngine.getStoreFileManager().clearFiles();<a name="line.924"></a>
-<span class="sourceLineNo">925</span>      Collection&lt;HStoreFile&gt; compactedfiles =<a name="line.925"></a>
-<span class="sourceLineNo">926</span>          storeEngine.getStoreFileManager().clearCompactedFiles();<a name="line.926"></a>
-<span class="sourceLineNo">927</span>      // clear the compacted files<a name="line.927"></a>
-<span class="sourceLineNo">928</span>      if (CollectionUtils.isNotEmpty(compactedfiles)) {<a name="line.928"></a>
-<span class="sourceLineNo">929</span>        removeCompactedfiles(compactedfiles);<a name="line.929"></a>
-<span class="sourceLineNo">930</span>      }<a name="line.930"></a>
-<span class="sourceLineNo">931</span>      if (!result.isEmpty()) {<a name="line.931"></a>
-<span class="sourceLineNo">932</span>        // initialize the thread pool for closing store files in parallel.<a name="line.932"></a>
-<span class="sourceLineNo">933</span>        ThreadPoolExecutor storeFileCloserThreadPool = this.region<a name="line.933"></a>
-<span class="sourceLineNo">934</span>            .getStoreFileOpenAndCloseThreadPool("StoreFileCloserThread-"<a name="line.934"></a>
-<span class="sourceLineNo">935</span>              + this.region.getRegionInfo().getEncodedName() + "-" + this.getColumnFamilyName());<a name="line.935"></a>
-<span class="sourceLineNo">936</span><a name="line.936"></a>
-<span class="sourceLineNo">937</span>        // close each store file in parallel<a name="line.937"></a>
-<span class="sourceLineNo">938</span>        CompletionService&lt;Void&gt; completionService =<a name="line.938"></a>
-<span class="sourceLineNo">939</span>          new ExecutorCompletionService&lt;&gt;(storeFileCloserThreadPool);<a name="line.939"></a>
-<span class="sourceLineNo">940</span>        for (HStoreFile f : result) {<a name="line.940"></a>
-<span class="sourceLineNo">941</span>          completionService.submit(new Callable&lt;Void&gt;() {<a name="line.941"></a>
-<span class="sourceLineNo">942</span>            @Override<a name="line.942"></a>
-<span class="sourceLineNo">943</span>            public Void call() throws IOException {<a name="line.943"></a>
-<span class="sourceLineNo">944</span>              boolean evictOnClose =<a name="line.944"></a>
-<span class="sourceLineNo">945</span>                  cacheConf != null? cacheConf.shouldEvictOnClose(): true;<a name="line.945"></a>
-<span class="sourceLineNo">946</span>              f.closeStoreFile(evictOnClose);<a name="line.946"></a>
-<span class="sourceLineNo">947</span>              return null;<a name="line.947"></a>
-<span class="sourceLineNo">948</span>            }<a name="line.948"></a>
-<span class="sourceLineNo">949</span>          });<a name="line.949"></a>
-<span class="sourceLineNo">950</span>        }<a name="line.950"></a>
-<span class="sourceLineNo">951</span><a name="line.951"></a>
-<span class="sourceLineNo">952</span>        IOException ioe = null;<a name="line.952"></a>
-<span class="sourceLineNo">953</span>        try {<a name="line.953"></a>
-<span class="sourceLineNo">954</span>          for (int i = 0; i &lt; result.size(); i++) {<a name="line.954"></a>
-<span class="sourceLineNo">955</span>            try {<a name="line.955"></a>
-<span class="sourceLineNo">956</span>              Future&lt;Void&gt; future = completionService.take();<a name="line.956"></a>
-<span class="sourceLineNo">957</span>              future.get();<a name="line.957"></a>
-<span class="sourceLineNo">958</span>            } catch (InterruptedException e) {<a name="line.958"></a>
-<span class="sourceLineNo">959</span>              if (ioe == null) {<a name="line.959"></a>
-<span class="sourceLineNo">960</span>                ioe = new InterruptedIOException();<a name="line.960"></a>
-<span class="sourceLineNo">961</span>                ioe.initCause(e);<a name="line.961"></a>
-<span class="sourceLineNo">962</span>              }<a name="line.962"></a>
-<span class="sourceLineNo">963</span>            } catch (ExecutionException e) {<a name="line.963"></a>
-<span class="sourceLineNo">964</span>              if (ioe == null) ioe = new IOException(e.getCause());<a name="line.964"></a>
-<span class="sourceLineNo">965</span>            }<a name="line.965"></a>
-<span class="sourceLineNo">966</span>          }<a name="line.966"></a>
-<span class="sourceLineNo">967</span>        } finally {<a name="line.967"></a>
-<span class="sourceLineNo">968</span>          storeFileCloserThreadPool.shutdownNow();<a name="line.968"></a>
-<span class="sourceLineNo">969</span>        }<a name="line.969"></a>
-<span class="sourceLineNo">970</span>        if (ioe != null) throw ioe;<a name="line.970"></a>
-<span class="sourceLineNo">971</span>      }<a name="line.971"></a>
-<span class="sourceLineNo">972</span>      LOG.trace("Closed {}", this);<a name="line.972"></a>
-<span class="sourceLineNo">973</span>      return result;<a name="line.973"></a>
-<span class="sourceLineNo">974</span>    } finally {<a name="line.974"></a>
-<span class="sourceLineNo">975</span>      this.lock.writeLock().unlock();<a name="line.975"></a>
-<span class="sourceLineNo">976</span>      this.archiveLock.unlock();<a name="line.976"></a>
-<span class="sourceLineNo">977</span>    }<a name="line.977"></a>
-<span class="sourceLineNo">978</span>  }<a name="line.978"></a>
-<span class="sourceLineNo">979</span><a name="line.979"></a>
-<span class="sourceLineNo">980</span>  /**<a name="line.980"></a>
-<span class="sourceLineNo">981</span>   * Snapshot this stores memstore. Call before running<a name="line.981"></a>
-<span class="sourceLineNo">982</span>   * {@link #flushCache(long, MemStoreSnapshot, MonitoredTask, ThroughputController,<a name="line.982"></a>
-<span class="sourceLineNo">983</span>   * FlushLifeCycleTracker)}<a name="line.983"></a>
-<span class="sourceLineNo">984</span>   *  so it has some work to do.<a name="line.984"></a>
-<span class="sourceLineNo">985</span>   */<a name="line.985"></a>
-<span class="sourceLineNo">986</span>  void snapshot() {<a name="line.986"></a>
-<span class="sourceLineNo">987</span>    this.lock.writeLock().lock();<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    try {<a name="line.988"></a>
-<span class="sourceLineNo">989</span>      this.memstore.snapshot();<a name="line.989"></a>
-<span class="sourceLineNo">990</span>    } finally {<a name="line.990"></a>
-<span class="sourceLineNo">991</span>      this.lock.writeLock().unlock();<a name="line.991"></a>
-<span class="sourceLineNo">992</span>    }<a name="line.992"></a>
-<span class="sourceLineNo">993</span>  }<a name="line.993"></a>
-<span class="sourceLineNo">994</span><a name="line.994"></a>
-<span class="sourceLineNo">995</span>  /**<a name="line.995"></a>
-<span class="sourceLineNo">996</span>   * Write out current snapshot. Presumes {@link #snapshot()} has been called previously.<a name="line.996"></a>
-<span class="sourceLineNo">997</span>   * @param logCacheFlushId flush sequence number<a name="line.997"></a>
-<span class="sourceLineNo">998</span>   * @param snapshot<a name="line.998"></a>
-<span class="sourceLineNo">999</span>   * @param status<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>   * @param throughputController<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>   * @return The path name of the tmp file to which the store was flushed<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>   * @throws IOException if exception occurs during process<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>   */<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>  protected List&lt;Path&gt; flushCache(final long logCacheFlushId, MemStoreSnapshot snapshot,<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>      MonitoredTask status, ThroughputController throughputController,<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>      FlushLifeCycleTracker tracker) throws IOException {<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>    // If an exception happens flushing, we let it out without clearing<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>    // the memstore snapshot.  The old snapshot will be returned when we say<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>    // 'snapshot', the next time flush comes around.<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>    // Retry after catching exception when flushing, otherwise server will abort<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    // itself<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    StoreFlusher flusher = storeEngine.getStoreFlusher();<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    IOException lastException = null;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>    for (int i = 0; i &lt; flushRetriesNumber; i++) {<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>      try {<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>        List&lt;Path&gt; pathNames =<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>            flusher.flushSnapshot(snapshot, logCacheFlushId, status, throughputController, tracker);<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>        Path lastPathName = null;<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>        try {<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>          for (Path pathName : pathNames) {<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>            lastPathName = pathName;<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>            validateStoreFile(pathName);<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>          }<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>          return pathNames;<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>        } catch (Exception e) {<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>          LOG.warn("Failed validating store file {}, retrying num={}", lastPathName, i, e);<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>          if (e instanceof IOException) {<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>            lastException = (IOException) e;<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>          } else {<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>            lastException = new IOException(e);<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>          }<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>        }<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>      } catch (IOException e) {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>        LOG.warn("Failed flushing store file, retrying num={}", i, e);<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>        lastException = e;<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>      }<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>      if (lastException != null &amp;&amp; i &lt; (flushRetriesNumber - 1)) {<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>        try {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>          Thread.sleep(pauseTime);<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>        } catch (InterruptedException e) {<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>          IOException iie = new InterruptedIOException();<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>          iie.initCause(e);<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>          throw iie;<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>        }<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>      }<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>    }<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>    throw lastException;<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>  }<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span><a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>  /**<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>   * @param path The pathname of the tmp file into which the store was flushed<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>   * @param logCacheFlushId<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>   * @param status<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>   * @return store file created.<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>   * @throws IOException<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>   */<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>  private HStoreFile commitFile(Path path, long logCacheFlushId, MonitoredTask status)<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      throws IOException {<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>    // Write-out finished successfully, move into the right spot<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>    Path dstPath = fs.commitStoreFile(getColumnFamilyName(), path);<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span><a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>    status.setStatus("Flushing " + this + ": reopening flushed file");<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>    HStoreFile sf = createStoreFileAndReader(dstPath);<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span><a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>    StoreFileReader r = sf.getReader();<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>    this.storeSize.addAndGet(r.length());<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>    this.totalUncompressedBytes.addAndGet(r.getTotalUncompressedBytes());<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span><a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>    if (LOG.isInfoEnabled()) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>      LOG.info("Added " + sf + ", entries=" + r.getEntries() +<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>        ", sequenceid=" + logCacheFlushId +<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>        ", filesize=" + TraditionalBinaryPrefix.long2String(r.length(), "", 1));<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>    }<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>    return sf;<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>  }<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span><a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>  /**<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>   * @param maxKeyCount<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>   * @param compression Compression algorithm to use<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>   * @param isCompaction whether we are creating a new file in a compaction<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>   * @param includeMVCCReadpoint - whether to include MVCC or not<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>   * @param includesTag - includesTag or not<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>   * @return Writer for a new StoreFile in the tmp dir.<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>   */<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>  // TODO : allow the Writer factory to create Writers of ShipperListener type only in case of<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>  // compaction<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>  public StoreFileWriter createWriterInTmp(long maxKeyCount, Compression.Algorithm compression,<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>      boolean isCompaction, boolean includeMVCCReadpoint, boolean includesTag,<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>      boolean shouldDropBehind) throws IOException {<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>    final CacheConfig writerCacheConf;<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>    if (isCompaction) {<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>      // Don't cache data on write on compactions.<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>      writerCacheConf = new CacheConfig(cacheConf);<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>      writerCacheConf.setCacheDataOnWrite(false);<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>    } else {<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>      writerCacheConf = cacheConf;<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    }<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    InetSocketAddress[] favoredNodes = null;<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>    if (region.getRegionServerServices() != null) {<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      favoredNodes = region.getRegionServerServices().getFavoredNodesForRegion(<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>          region.getRegionInfo().getEncodedName());<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>    }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>    HFileContext hFileContext = createFileContext(compression, includeMVCCReadpoint, includesTag,<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>      cryptoContext);<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>    Path familyTempDir = new Path(fs.getTempDir(), family.getNameAsString());<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>    StoreFileWriter.Builder builder = new StoreFileWriter.Builder(conf, writerCacheConf,<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>        this.getFileSystem())<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>            .withOutputDir(familyTempDir)<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>            .withComparator(comparator)<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>            .withBloomType(family.getBloomFilterType())<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>            .withMaxKeyCount(maxKeyCount)<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>            .withFavoredNodes(favoredNodes)<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>            .withFileContext(hFileContext)<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>            .withShouldDropCacheBehind(shouldDropBehind);<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>    return builder.build();<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>  }<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span><a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>  private HFileContext createFileContext(Compression.Algorithm compression,<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>      boolean includeMVCCReadpoint, boolean includesTag, Encryption.Context cryptoContext) {<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>    if (compression == null) {<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span>      compression = HFile.DEFAULT_COMPRESSION_ALGORITHM;<a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>    }<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    HFileContext hFileContext = new HFileContextBuilder()<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>                                .withIncludesMvcc(includeMVCCReadpoint)<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>                                .withIncludesTags(includesTag)<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>                                .withCompression(compression)<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>                                .withCompressTags(family.isCompressTags())<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>                                .withChecksumType(checksumType)<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>                                .withBytesPerCheckSum(bytesPerChecksum)<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>                                .withBlockSize(blocksize)<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>                                .withHBaseCheckSum(true)<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>                                .withDataBlockEncoding(family.getDataBlockEncoding())<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>                                .withEncryptionContext(cryptoContext)<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>                                .withCreateTime(EnvironmentEdgeManager.currentTime())<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>                                .build();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>    return hFileContext;<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>  }<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span><a name="line.1138"></a>
+<span class="sourceLineNo">354</span>            new Object[] { conf, this.comparator,<a name="line.354"></a>
+<span class="sourceLineNo">355</span>                this.getHRegion().getRegionServicesForStores()});<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        break;<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      default:<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        Class&lt;? extends CompactingMemStore&gt; clz = conf.getClass(MEMSTORE_CLASS_NAME,<a name="line.358"></a>
+<span class="sourceLineNo">359</span>            CompactingMemStore.class, CompactingMemStore.class);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>        ms = ReflectionUtils.newInstance(clz, new Object[]{conf, this.comparator, this,<a name="line.360"></a>
+<span class="sourceLineNo">361</span>            this.getHRegion().getRegionServicesForStores(), inMemoryCompaction});<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    return ms;<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>  /**<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   * Creates the cache config.<a name="line.367"></a>
+<span class="sourceLineNo">368</span>   * @param family The current column family.<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  protected void createCacheConf(final ColumnFamilyDescriptor family) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    this.cacheConf = new CacheConfig(conf, family);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  /**<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * Creates the store engine configured for the given Store.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @param store The store. An unfortunate dependency needed due to it<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   *              being passed to coprocessors via the compactor.<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * @param conf Store configuration.<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * @param kvComparator KVComparator for storeFileManager.<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   * @return StoreEngine to use.<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   */<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  protected StoreEngine&lt;?, ?, ?, ?&gt; createStoreEngine(HStore store, Configuration conf,<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      CellComparator kvComparator) throws IOException {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    return StoreEngine.create(store, conf, comparator);<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>  /**<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * @param family<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * @return TTL in seconds of the specified family<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  public static long determineTTLFromFamily(final ColumnFamilyDescriptor family) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    // HCD.getTimeToLive returns ttl in seconds.  Convert to milliseconds.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    long ttl = family.getTimeToLive();<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    if (ttl == HConstants.FOREVER) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      // Default is unlimited ttl.<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      ttl = Long.MAX_VALUE;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    } else if (ttl == -1) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      ttl = Long.MAX_VALUE;<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    } else {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      // Second -&gt; ms adjust for user data<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      ttl *= 1000;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    }<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    return ttl;<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  }<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  @Override<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  public String getColumnFamilyName() {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    return this.family.getNameAsString();<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>  @Override<a name="line.411"></a>
+<span class="sourceLineNo">412</span>  public TableName getTableName() {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    return this.getRegionInfo().getTable();<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  }<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>  @Override<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  public FileSystem getFileSystem() {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    return this.fs.getFileSystem();<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>  public HRegionFileSystem getRegionFileSystem() {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    return this.fs;<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>  /* Implementation of StoreConfigInformation */<a name="line.425"></a>
+<span class="sourceLineNo">426</span>  @Override<a name="line.426"></a>
+<span class="sourceLineNo">427</span>  public long getStoreFileTtl() {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    // TTL only applies if there's no MIN_VERSIONs setting on the column.<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    return (this.scanInfo.getMinVersions() == 0) ? this.scanInfo.getTtl() : Long.MAX_VALUE;<a name="line.429"></a>
+<span class="sourceLineNo">430</span>  }<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>  @Override<a name="line.432"></a>
+<span class="sourceLineNo">433</span>  public long getMemStoreFlushSize() {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    // TODO: Why is this in here?  The flushsize of the region rather than the store?  St.Ack<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    return this.region.memstoreFlushSize;<a name="line.435"></a>
+<span class="sourceLineNo">436</span>  }<a name="line.436"></a>
+<span class="sourceLineNo">437</span><a name="line.437"></a>
+<span class="sourceLineNo">438</span>  @Override<a name="line.438"></a>
+<span class="sourceLineNo">439</span>  public MemStoreSize getFlushableSize() {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    return this.memstore.getFlushableSize();<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  @Override<a name="line.443"></a>
+<span class="sourceLineNo">444</span>  public MemStoreSize getSnapshotSize() {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    return this.memstore.getSnapshotSize();<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  }<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>  @Override<a name="line.448"></a>
+<span class="sourceLineNo">449</span>  public long getCompactionCheckMultiplier() {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    return this.compactionCheckMultiplier;<a name="line.450"></a>
+<span class="sourceLineNo">451</span>  }<a name="line.451"></a>
+<span class="sourceLineNo">452</span><a name="line.452"></a>
+<span class="sourceLineNo">453</span>  @Override<a name="line.453"></a>
+<span class="sourceLineNo">454</span>  public long getBlockingFileCount() {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    return blockingFileCount;<a name="line.455"></a>
+<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
+<span class="sourceLineNo">457</span>  /* End implementation of StoreConfigInformation */<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>   * Returns the configured bytesPerChecksum value.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>   * @param conf The configuration<a name="line.461"></a>
+<span class="sourceLineNo">462</span>   * @return The bytesPerChecksum that is set in the configuration<a name="line.462"></a>
+<span class="sourceLineNo">463</span>   */<a name="line.463"></a>
+<span class="sourceLineNo">464</span>  public static int getBytesPerChecksum(Configuration conf) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    return conf.getInt(HConstants.BYTES_PER_CHECKSUM,<a name="line.465"></a>
+<span class="sourceLineNo">466</span>                       HFile.DEFAULT_BYTES_PER_CHECKSUM);<a name="line.466"></a>
+<span class="sourceLineNo">467</span>  }<a name="line.467"></a>
+<span class="sourceLineNo">468</span><a name="line.468"></a>
+<span class="sourceLineNo">469</span>  /**<a name="line.469"></a>
+<span class="sourceLineNo">470</span>   * Returns the configured checksum algorithm.<a name="line.470"></a>
+<span class="sourceLineNo">471</span>   * @param conf The configuration<a name="line.471"></a>


<TRUNCATED>

[05/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html
index 6cf1758..c19b494 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>protected class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3687">TestHRegion.FlushThread</a>
+<pre>protected class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3717">TestHRegion.FlushThread</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>
 </li>
 </ul>
@@ -255,7 +255,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>done</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3688">done</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3718">done</a></pre>
 </li>
 </ul>
 <a name="error">
@@ -264,7 +264,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>error</h4>
-<pre>private&nbsp;<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/regionserver/TestHRegion.FlushThread.html#line.3689">error</a></pre>
+<pre>private&nbsp;<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/regionserver/TestHRegion.FlushThread.html#line.3719">error</a></pre>
 </li>
 </ul>
 </li>
@@ -281,7 +281,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>FlushThread</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3691">FlushThread</a>()</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3721">FlushThread</a>()</pre>
 </li>
 </ul>
 </li>
@@ -298,7 +298,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>done</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3695">done</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3725">done</a>()</pre>
 </li>
 </ul>
 <a name="checkNoError--">
@@ -307,7 +307,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkNoError</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3702">checkNoError</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3732">checkNoError</a>()</pre>
 </li>
 </ul>
 <a name="run--">
@@ -316,7 +316,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/regionserver/TestHRegion.FlushThread.html#line.3709">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3739">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>
@@ -331,7 +331,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>flush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3736">flush</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3766">flush</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html
index dfcc2f4..ed2474e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1283">TestHRegion.GetTillDoneOrException</a>
+<pre>class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1313">TestHRegion.GetTillDoneOrException</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>
 </li>
 </ul>
@@ -254,7 +254,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>g</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.client.Get <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html#line.1284">g</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.client.Get <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html#line.1314">g</a></pre>
 </li>
 </ul>
 <a name="done">
@@ -263,7 +263,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>done</h4>
-<pre>private final&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/TestHRegion.GetTillDoneOrException.html#line.1285">done</a></pre>
+<pre>private final&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/TestHRegion.GetTillDoneOrException.html#line.1315">done</a></pre>
 </li>
 </ul>
 <a name="count">
@@ -272,7 +272,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>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/TestHRegion.GetTillDoneOrException.html#line.1286">count</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/TestHRegion.GetTillDoneOrException.html#line.1316">count</a></pre>
 </li>
 </ul>
 <a name="e">
@@ -281,7 +281,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>e</h4>
-<pre>private&nbsp;<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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html#line.1287">e</a></pre>
+<pre>private&nbsp;<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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html#line.1317">e</a></pre>
 </li>
 </ul>
 </li>
@@ -298,7 +298,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>GetTillDoneOrException</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html#line.1289">GetTillDoneOrException</a>(int&nbsp;i,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html#line.1319">GetTillDoneOrException</a>(int&nbsp;i,
                        byte[]&nbsp;r,
                        <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>&nbsp;d,
                        <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;c)</pre>
@@ -318,7 +318,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html#line.1298">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html#line.1328">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/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html
index 3e0c9cc..d4d1c49 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.6505">TestHRegion.HRegionForTesting</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.6535">TestHRegion.HRegionForTesting</a>
 extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <div class="block">The same as HRegion class, the only difference is that instantiateHStore will
  create a different HStore - HStoreForTesting. [HBASE-8518]</div>
@@ -223,7 +223,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegion</h3>
-<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkFamily, checkReadOnly, checkReadsEnabled, checkResources, checkRow, checkSplit, checkTimestamps, clearSplit, close, close, closeRegionOperation, closeRegionOperation, compact, compact, compact, compactStore, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, decrMemStoreSize, decrMemStoreSize, delete, delete, deregisterChildren, doRegionCompactionPrep, equals, execService, flush, flushcache, forceSplit, get, get, get, getBaseConf, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliestFlushTimeForAllStores,
  getEffectiveDurability, getExplicitSplitPoint, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLockedRows, getMaxFlushedSeqId, getMaxStoreSeqId, getMemStoreDataSize, getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNextSequenceId, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenAndCloseThreadPool, getOpenSeqNum, getPrepareFlushResult, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServerServices, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, incMemStoreSize, incMemStoreSize, incre
 ment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLoadingCfsOnDemandDefault, isMergeable, isReadOnly, isSplittable, metricsUpdateForGet, mutateRow, mutateRowsWithLocks, newHRegion, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, prepareGet, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, put, refreshStoreFiles, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, replayWALBulkLoadEventMarker, replayWALCompactionMarker, replayWALFlushCommitMarker, replayWALFlushMarker, replayWALFlushStartMarker, replayWALRegionEventMarker, reportCompactionRequestEnd, reportCom
 pactionRequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rewriteCellTags, rowIsInRange, rowIsInRange, setClosing, setCompleteSequenceId, setCoprocessorHost, setHTableSpecificConf, setReadsEnabled, setTableDescriptor, setTimeoutForWriteLock, shouldFlush, shouldFlushStore, shouldForceSplit, startRegionOperation, startRegionOperation, throwException, toString, unblockUpdates, updateDeleteLatestVersionTimestamp, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion, writeRegionOpenMarker</code></li>
+<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkFamily, checkReadOnly, checkReadsEnabled, checkResources, checkRow, checkSplit, checkTimestamps, clearSplit, close, close, closeRegionOperation, closeRegionOperation, compact, compact, compact, compactStore, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, decrMemStoreSize, decrMemStoreSize, delete, delete, deregisterChildren, doRegionCompactionPrep, dropMemStoreContents, equals, execService, flush, flushcache, forceSplit, get, get, get, getBaseConf, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliest
 FlushTimeForAllStores, getEffectiveDurability, getExplicitSplitPoint, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLockedRows, getMaxFlushedSeqId, getMaxStoreSeqId, getMemStoreDataSize, getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNextSequenceId, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenAndCloseThreadPool, getOpenSeqNum, getPrepareFlushResult, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServerServices, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, incMemStoreSize, 
 incMemStoreSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, initialize, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLoadingCfsOnDemandDefault, isMergeable, isReadOnly, isSplittable, metricsUpdateForGet, mutateRow, mutateRowsWithLocks, newHRegion, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, prepareGet, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, put, refreshStoreFiles, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, replayWALBulkLoadEventMarker, replayWALCompactionMarker, replayWALFlushCommitMarker, replayWALFlushMarker, replayWALFlushStartMarker, replayWALRegionEventMarker, rep
 ortCompactionRequestEnd, reportCompactionRequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rewriteCellTags, rowIsInRange, rowIsInRange, setClosing, setCompleteSequenceId, setCoprocessorHost, setHTableSpecificConf, setReadsEnabled, setTableDescriptor, setTimeoutForWriteLock, shouldFlush, shouldFlushStore, shouldForceSplit, startRegionOperation, startRegionOperation, throwException, toString, unblockUpdates, updateDeleteLatestVersionTimestamp, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion, writeRegionOpenMarker</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -259,7 +259,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>HRegionForTesting</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html#line.6507">HRegionForTesting</a>(org.apache.hadoop.fs.Path&nbsp;tableDir,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html#line.6537">HRegionForTesting</a>(org.apache.hadoop.fs.Path&nbsp;tableDir,
                          org.apache.hadoop.hbase.wal.WAL&nbsp;wal,
                          org.apache.hadoop.fs.FileSystem&nbsp;fs,
                          org.apache.hadoop.conf.Configuration&nbsp;confParam,
@@ -274,7 +274,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HRegionForTesting</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html#line.6514">HRegionForTesting</a>(org.apache.hadoop.hbase.regionserver.HRegionFileSystem&nbsp;fs,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html#line.6544">HRegionForTesting</a>(org.apache.hadoop.hbase.regionserver.HRegionFileSystem&nbsp;fs,
                          org.apache.hadoop.hbase.wal.WAL&nbsp;wal,
                          org.apache.hadoop.conf.Configuration&nbsp;confParam,
                          org.apache.hadoop.hbase.client.TableDescriptor&nbsp;htd,
@@ -295,7 +295,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>instantiateHStore</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.regionserver.HStore&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html#line.6525">instantiateHStore</a>(org.apache.hadoop.hbase.client.ColumnFamilyDescriptor&nbsp;family)
+<pre>protected&nbsp;org.apache.hadoop.hbase.regionserver.HStore&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html#line.6555">instantiateHStore</a>(org.apache.hadoop.hbase.client.ColumnFamilyDescriptor&nbsp;family)
                                                                  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 HStore instance.</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html
index d5d2878..f6991b7 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5896">TestHRegion.HRegionWithSeqId</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5926">TestHRegion.HRegionWithSeqId</a>
 extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 </li>
 </ul>
@@ -212,7 +212,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegion</h3>
-<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkFamily, checkReadOnly, checkReadsEnabled, checkResources, checkRow, checkSplit, checkTimestamps, clearSplit, close, close, closeRegionOperation, closeRegionOperation, compact, compact, compact, compactStore, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, decrMemStoreSize, decrMemStoreSize, delete, delete, deregisterChildren, doRegionCompactionPrep, equals, execService, flush, flushcache, forceSplit, get, get, get, getBaseConf, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliestFlushTimeForAllStores,
  getEffectiveDurability, getExplicitSplitPoint, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLockedRows, getMaxFlushedSeqId, getMaxStoreSeqId, getMemStoreDataSize, getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenAndCloseThreadPool, getOpenSeqNum, getPrepareFlushResult, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServerServices, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, incMemStoreSize, incMemStoreSize, increment, increment, in
 crementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateHStore, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLoadingCfsOnDemandDefault, isMergeable, isReadOnly, isSplittable, metricsUpdateForGet, mutateRow, mutateRowsWithLocks, newHRegion, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, prepareGet, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, put, refreshStoreFiles, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, replayWALBulkLoadEventMarker, replayWALCompactionMarker, replayWALFlushCommitMarker, replayWALFlushMarker, replayWALFlushStartMarker, replayWALRegionEventMarker, reportCompactionRequestEnd, reportCom
 pactionRequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rewriteCellTags, rowIsInRange, rowIsInRange, setClosing, setCompleteSequenceId, setCoprocessorHost, setHTableSpecificConf, setReadsEnabled, setTableDescriptor, setTimeoutForWriteLock, shouldFlush, shouldFlushStore, shouldForceSplit, startRegionOperation, startRegionOperation, throwException, toString, unblockUpdates, updateDeleteLatestVersionTimestamp, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion, writeRegionOpenMarker</code></li>
+<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkFamily, checkReadOnly, checkReadsEnabled, checkResources, checkRow, checkSplit, checkTimestamps, clearSplit, close, close, closeRegionOperation, closeRegionOperation, compact, compact, compact, compactStore, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, decrMemStoreSize, decrMemStoreSize, delete, delete, deregisterChildren, doRegionCompactionPrep, dropMemStoreContents, equals, execService, flush, flushcache, forceSplit, get, get, get, getBaseConf, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliest
 FlushTimeForAllStores, getEffectiveDurability, getExplicitSplitPoint, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLockedRows, getMaxFlushedSeqId, getMaxStoreSeqId, getMemStoreDataSize, getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenAndCloseThreadPool, getOpenSeqNum, getPrepareFlushResult, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServerServices, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, incMemStoreSize, incMemStoreSize, in
 crement, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, initialize, instantiateHStore, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLoadingCfsOnDemandDefault, isMergeable, isReadOnly, isSplittable, metricsUpdateForGet, mutateRow, mutateRowsWithLocks, newHRegion, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, prepareGet, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, put, refreshStoreFiles, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, replayWALBulkLoadEventMarker, replayWALCompactionMarker, replayWALFlushCommitMarker, replayWALFlushMarker, replayWALFlushStartMarker, replayWALRegionEventMarker, rep
 ortCompactionRequestEnd, reportCompactionRequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rewriteCellTags, rowIsInRange, rowIsInRange, setClosing, setCompleteSequenceId, setCoprocessorHost, setHTableSpecificConf, setReadsEnabled, setTableDescriptor, setTimeoutForWriteLock, shouldFlush, shouldFlushStore, shouldForceSplit, startRegionOperation, startRegionOperation, throwException, toString, unblockUpdates, updateDeleteLatestVersionTimestamp, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion, writeRegionOpenMarker</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -248,7 +248,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HRegionWithSeqId</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html#line.5897">HRegionWithSeqId</a>(org.apache.hadoop.fs.Path&nbsp;tableDir,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html#line.5927">HRegionWithSeqId</a>(org.apache.hadoop.fs.Path&nbsp;tableDir,
                         org.apache.hadoop.hbase.wal.WAL&nbsp;wal,
                         org.apache.hadoop.fs.FileSystem&nbsp;fs,
                         org.apache.hadoop.conf.Configuration&nbsp;confParam,
@@ -271,7 +271,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getNextSequenceId</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html#line.5903">getNextSequenceId</a>(org.apache.hadoop.hbase.wal.WAL&nbsp;wal)
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html#line.5933">getNextSequenceId</a>(org.apache.hadoop.hbase.wal.WAL&nbsp;wal)
                           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="overrideSpecifyLabel">Overrides:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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 64b3871..e72393c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.6547">TestHRegion.HStoreForTesting</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.6577">TestHRegion.HStoreForTesting</a>
 extends org.apache.hadoop.hbase.regionserver.HStore</pre>
 <div class="block">HStoreForTesting is merely the same as HStore, the difference is in the doCompaction method
  of HStoreForTesting there is a checkpoint "hbase.hstore.compaction.complete" which
@@ -234,7 +234,7 @@ extends org.apache.hadoop.hbase.regionserver.HStore</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HStoreForTesting</h4>
-<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html#line.6549">HStoreForTesting</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html#line.6579">HStoreForTesting</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
                            org.apache.hadoop.hbase.client.ColumnFamilyDescriptor&nbsp;family,
                            org.apache.hadoop.conf.Configuration&nbsp;confParam)
                     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>
@@ -258,7 +258,7 @@ extends org.apache.hadoop.hbase.regionserver.HStore</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>doCompaction</h4>
-<pre>protected&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.regionserver.HStoreFile&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html#line.6556">doCompaction</a>(org.apache.hadoop.hbase.regionserver.compactions.CompactionRequestImpl&nbsp;cr,
+<pre>protected&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.regionserver.HStoreFile&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html#line.6586">doCompaction</a>(org.apache.hadoop.hbase.regionserver.compactions.CompactionRequestImpl&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;org.apache.hadoop.hbase.regionserver.HStoreFile&gt;&nbsp;filesToCompact,
                                                                              org.apache.hadoop.hbase.security.User&nbsp;user,
                                                                              long&nbsp;compactionStartTime,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html
index bfc8e3f..43dbe71 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4402">TestHRegion.Incrementer</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4432">TestHRegion.Incrementer</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="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></pre>
 <div class="block">TestCase for increment</div>
@@ -228,7 +228,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockList">
 <li class="blockList">
 <h4>region</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4403">region</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4433">region</a></pre>
 </li>
 </ul>
 <a name="incRow">
@@ -237,7 +237,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockList">
 <li class="blockList">
 <h4>incRow</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4404">incRow</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4434">incRow</a></pre>
 </li>
 </ul>
 <a name="family">
@@ -246,7 +246,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockList">
 <li class="blockList">
 <h4>family</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4405">family</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4435">family</a></pre>
 </li>
 </ul>
 <a name="qualifier">
@@ -255,7 +255,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockList">
 <li class="blockList">
 <h4>qualifier</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4406">qualifier</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4436">qualifier</a></pre>
 </li>
 </ul>
 <a name="ONE">
@@ -264,7 +264,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockList">
 <li class="blockList">
 <h4>ONE</h4>
-<pre>private static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4407">ONE</a></pre>
+<pre>private static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4437">ONE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestHRegion.Incrementer.ONE">Constant Field Values</a></dd>
@@ -277,7 +277,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockListLast">
 <li class="blockList">
 <h4>incCounter</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4408">incCounter</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4438">incCounter</a></pre>
 </li>
 </ul>
 </li>
@@ -294,7 +294,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockListLast">
 <li class="blockList">
 <h4>Incrementer</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4410">Incrementer</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4440">Incrementer</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
                    int&nbsp;incCounter)</pre>
 </li>
 </ul>
@@ -312,7 +312,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4416">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4446">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/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html
index b9231da..9bba783 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1072">TestHRegion.IsFlushWALMarker</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1102">TestHRegion.IsFlushWALMarker</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 org.mockito.ArgumentMatcher&lt;org.apache.hadoop.hbase.wal.WALEdit&gt;</pre>
 </li>
@@ -210,7 +210,7 @@ implements org.mockito.ArgumentMatcher&lt;org.apache.hadoop.hbase.wal.WALEdit&gt
 <ul class="blockListLast">
 <li class="blockList">
 <h4>actions</h4>
-<pre>volatile&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor.FlushAction[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html#line.1073">actions</a></pre>
+<pre>volatile&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor.FlushAction[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html#line.1103">actions</a></pre>
 </li>
 </ul>
 </li>
@@ -227,7 +227,7 @@ implements org.mockito.ArgumentMatcher&lt;org.apache.hadoop.hbase.wal.WALEdit&gt
 <ul class="blockListLast">
 <li class="blockList">
 <h4>IsFlushWALMarker</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html#line.1074">IsFlushWALMarker</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor.FlushAction...&nbsp;actions)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html#line.1104">IsFlushWALMarker</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor.FlushAction...&nbsp;actions)</pre>
 </li>
 </ul>
 </li>
@@ -244,7 +244,7 @@ implements org.mockito.ArgumentMatcher&lt;org.apache.hadoop.hbase.wal.WALEdit&gt
 <ul class="blockList">
 <li class="blockList">
 <h4>matches</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html#line.1078">matches</a>(org.apache.hadoop.hbase.wal.WALEdit&nbsp;edit)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html#line.1108">matches</a>(org.apache.hadoop.hbase.wal.WALEdit&nbsp;edit)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>matches</code>&nbsp;in interface&nbsp;<code>org.mockito.ArgumentMatcher&lt;org.apache.hadoop.hbase.wal.WALEdit&gt;</code></dd>
@@ -257,7 +257,7 @@ implements org.mockito.ArgumentMatcher&lt;org.apache.hadoop.hbase.wal.WALEdit&gt
 <ul class="blockListLast">
 <li class="blockList">
 <h4>set</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegion.IsFlushWALMarker</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html#line.1101">set</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor.FlushAction...&nbsp;actions)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegion.IsFlushWALMarker</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html#line.1131">set</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor.FlushAction...&nbsp;actions)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html
index 849e07f..296dcf0 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>protected class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3842">TestHRegion.PutThread</a>
+<pre>protected class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3872">TestHRegion.PutThread</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>
 </li>
 </ul>
@@ -277,7 +277,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>done</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3843">done</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3873">done</a></pre>
 </li>
 </ul>
 <a name="numPutsFinished">
@@ -286,7 +286,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>numPutsFinished</h4>
-<pre>private volatile&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3844">numPutsFinished</a></pre>
+<pre>private volatile&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3874">numPutsFinished</a></pre>
 </li>
 </ul>
 <a name="error">
@@ -295,7 +295,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>error</h4>
-<pre>private&nbsp;<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/regionserver/TestHRegion.PutThread.html#line.3846">error</a></pre>
+<pre>private&nbsp;<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/regionserver/TestHRegion.PutThread.html#line.3876">error</a></pre>
 </li>
 </ul>
 <a name="numRows">
@@ -304,7 +304,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>numRows</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3847">numRows</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3877">numRows</a></pre>
 </li>
 </ul>
 <a name="families">
@@ -313,7 +313,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>families</h4>
-<pre>private&nbsp;byte[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3848">families</a></pre>
+<pre>private&nbsp;byte[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3878">families</a></pre>
 </li>
 </ul>
 <a name="qualifiers">
@@ -322,7 +322,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>qualifiers</h4>
-<pre>private&nbsp;byte[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3849">qualifiers</a></pre>
+<pre>private&nbsp;byte[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3879">qualifiers</a></pre>
 </li>
 </ul>
 </li>
@@ -339,7 +339,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>PutThread</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3851">PutThread</a>(int&nbsp;numRows,
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3881">PutThread</a>(int&nbsp;numRows,
                   byte[][]&nbsp;families,
                   byte[][]&nbsp;qualifiers)</pre>
 </li>
@@ -358,7 +358,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>waitForFirstPut</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3861">waitForFirstPut</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3891">waitForFirstPut</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>
 <div class="block">Block calling thread until this instance of PutThread has put at least one row.</div>
 <dl>
@@ -373,7 +373,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>done</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3869">done</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3899">done</a>()</pre>
 </li>
 </ul>
 <a name="checkNoError--">
@@ -382,7 +382,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkNoError</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3876">checkNoError</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3906">checkNoError</a>()</pre>
 </li>
 </ul>
 <a name="run--">
@@ -391,7 +391,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3883">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3913">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>


[08/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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 bbd876d..1372fe5 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
@@ -3589,98 +3589,102 @@
 </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">TestCreateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCreateTableProcedureMuitipleRegions.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.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">TestModifyTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestModifyTableProcedure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCreateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.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">TestDeleteTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestDeleteTableProcedure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestModifyTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestModifyTableProcedure.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">TestCreateNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateNamespaceProcedure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestDeleteTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestDeleteTableProcedure.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">TestServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCreateNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateNamespaceProcedure.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">TestModifyNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestModifyNamespaceProcedure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.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">TestFastFailOnProcedureNotRegistered.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestFastFailOnProcedureNotRegistered.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestModifyNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestModifyNamespaceProcedure.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">TestDisableTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestDisableTableProcedure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFastFailOnProcedureNotRegistered.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestFastFailOnProcedureNotRegistered.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">TestProcedurePriority.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestProcedurePriority.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestDisableTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestDisableTableProcedure.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">TestMasterProcedureEvents.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterProcedureEvents.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestProcedurePriority.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestProcedurePriority.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">TestTruncateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestTruncateTableProcedure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMasterProcedureEvents.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterProcedureEvents.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">TestDeleteNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestDeleteNamespaceProcedure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestTruncateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestTruncateTableProcedure.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">TestMasterObserverPostCalls.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterObserverPostCalls.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestDeleteNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestDeleteNamespaceProcedure.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">TestWALProcedureStoreOnHDFS.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestWALProcedureStoreOnHDFS.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMasterObserverPostCalls.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterObserverPostCalls.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">TestEnableTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestEnableTableProcedure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestWALProcedureStoreOnHDFS.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestWALProcedureStoreOnHDFS.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">TestMasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterProcedureScheduler.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestEnableTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestEnableTableProcedure.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">TestSafemodeBringsDownMaster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestSafemodeBringsDownMaster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterProcedureScheduler.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">TestRestoreSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestRestoreSnapshotProcedure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSafemodeBringsDownMaster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestSafemodeBringsDownMaster.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">TestMasterFailoverWithProcedures.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterFailoverWithProcedures.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRestoreSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestRestoreSnapshotProcedure.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">TestMasterProcedureWalLease.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterProcedureWalLease.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMasterFailoverWithProcedures.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterFailoverWithProcedures.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">TestTableDescriptorModificationFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestTableDescriptorModificationFromClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMasterProcedureWalLease.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterProcedureWalLease.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">TestDeleteColumnFamilyProcedureFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedureFromClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestTableDescriptorModificationFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestTableDescriptorModificationFromClient.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">TestCloneSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestCloneSnapshotProcedure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestDeleteColumnFamilyProcedureFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedureFromClient.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">TestCloneSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestCloneSnapshotProcedure.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">TestProcedureAdmin.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestProcedureAdmin.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 </tbody>
@@ -4515,394 +4519,398 @@
 </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">TestHRegionServerBulkLoad.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRecoveredEditsReplayAndAbort.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.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">TestCompactSplitThread.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactSplitThread.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHRegionServerBulkLoad.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.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">TestOpenSeqNumUnexpectedIncrease.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompactSplitThread.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactSplitThread.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">TestRegionMergeTransactionOnCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestOpenSeqNumUnexpectedIncrease.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.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">TestMobStoreCompaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMobStoreCompaction.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionMergeTransactionOnCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.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">TestStripeStoreEngine.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreEngine.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMobStoreCompaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMobStoreCompaction.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">TestRowTooBig.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowTooBig.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestStripeStoreEngine.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreEngine.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">TestWalAndCompactingMemStoreFlush.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWalAndCompactingMemStoreFlush.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRowTooBig.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowTooBig.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">TestWALMonotonicallyIncreasingSeqId.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALMonotonicallyIncreasingSeqId.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestWalAndCompactingMemStoreFlush.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWalAndCompactingMemStoreFlush.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">TestCompaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompaction.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestWALMonotonicallyIncreasingSeqId.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALMonotonicallyIncreasingSeqId.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">TestObservedExceptionsInBatch.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestObservedExceptionsInBatch.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompaction.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">TestDeleteMobTable.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDeleteMobTable.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestObservedExceptionsInBatch.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestObservedExceptionsInBatch.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">TestMultiVersionConcurrencyControlBasic.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControlBasic.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestDeleteMobTable.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDeleteMobTable.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">TestBlocksScanned.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestBlocksScanned.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMultiVersionConcurrencyControlBasic.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControlBasic.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">TestCompoundBloomFilter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompoundBloomFilter.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestBlocksScanned.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestBlocksScanned.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">TestMultiColumnScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompoundBloomFilter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompoundBloomFilter.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">TestRegionServerRegionSpaceUseReport.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerRegionSpaceUseReport.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMultiColumnScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.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">TestQosFunction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestQosFunction.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionServerRegionSpaceUseReport.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerRegionSpaceUseReport.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">TestRegionInfoBuilder.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfoBuilder.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestQosFunction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestQosFunction.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">TestHRegion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionInfoBuilder.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfoBuilder.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">TestDefaultMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHRegion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.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">TestRegionServerNoMaster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerNoMaster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestDefaultMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.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">TestScannerWithBulkload.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithBulkload.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionServerNoMaster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerNoMaster.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">TestDefaultStoreEngine.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultStoreEngine.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestScannerWithBulkload.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithBulkload.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">TestHMobStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHMobStore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestDefaultStoreEngine.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultStoreEngine.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">TestSplitTransactionOnCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHMobStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHMobStore.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">TestMetricsRegion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegion.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSplitTransactionOnCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.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">TestMiniBatchOperationInProgress.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMiniBatchOperationInProgress.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMetricsRegion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegion.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">TestStoreFileScannerWithTagCompression.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileScannerWithTagCompression.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMiniBatchOperationInProgress.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMiniBatchOperationInProgress.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">TestScannerWithCorruptHFile.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithCorruptHFile.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestStoreFileScannerWithTagCompression.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileScannerWithTagCompression.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">TestCompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestScannerWithCorruptHFile.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithCorruptHFile.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">TestEndToEndSplitTransaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.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">TestScannerHeartbeatMessages.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestEndToEndSplitTransaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.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">TestIsDeleteFailure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestIsDeleteFailure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestScannerHeartbeatMessages.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.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">TestStoreFileRefresherChore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestIsDeleteFailure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestIsDeleteFailure.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">TestRegionMove.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMove.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestStoreFileRefresherChore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.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">TestRegionServerMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionMove.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMove.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">TestSwitchToStreamRead.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionServerMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.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">TestKeepDeletes.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestKeepDeletes.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSwitchToStreamRead.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.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">TestResettingCounters.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestResettingCounters.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestKeepDeletes.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestKeepDeletes.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">TestCacheOnWriteInSchema.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestResettingCounters.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestResettingCounters.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">TestFSErrorsExposed.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestFSErrorsExposed.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCacheOnWriteInSchema.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.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">TestMetricsTableLatencies.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsTableLatencies.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFSErrorsExposed.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestFSErrorsExposed.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">TestCellFlatSet.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCellFlatSet.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMetricsTableLatencies.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsTableLatencies.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">TestSettingTimeoutOnBlockingPoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSettingTimeoutOnBlockingPoint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCellFlatSet.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCellFlatSet.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">TestHRegionReplayEvents.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSettingTimeoutOnBlockingPoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSettingTimeoutOnBlockingPoint.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">TestMetricsTableAggregate.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsTableAggregate.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHRegionReplayEvents.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.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">TestParallelPut.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestParallelPut.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMetricsTableAggregate.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsTableAggregate.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">TestRegionReplicasWithModifyTable.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestParallelPut.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestParallelPut.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">TestDateTieredCompactionPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicy.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionReplicasWithModifyTable.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.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">TestKeyValueHeap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestDateTieredCompactionPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicy.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">TestRegionReplicasAreDistributed.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasAreDistributed.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestKeyValueHeap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.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">TestRemoveRegionMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionReplicasAreDistributed.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasAreDistributed.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">TestCompactingToCellFlatMapMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRemoveRegionMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.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">TestRecoveredEdits.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompactingToCellFlatMapMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.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">TestHRegionOnCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionOnCluster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRecoveredEdits.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.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">TestHStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHStore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHRegionOnCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionOnCluster.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">TestSplitLogWorker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitLogWorker.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHStore.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">TestMetricsHeapMemoryManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsHeapMemoryManager.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSplitLogWorker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitLogWorker.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">TestRegionServerHostname.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerHostname.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMetricsHeapMemoryManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsHeapMemoryManager.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">TestServerNonceManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerNonceManager.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionServerHostname.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerHostname.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">TestSyncTimeRangeTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSyncTimeRangeTracker.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestServerNonceManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerNonceManager.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">TestEncryptionRandomKeying.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEncryptionRandomKeying.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSyncTimeRangeTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSyncTimeRangeTracker.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">TestPerColumnFamilyFlush.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestEncryptionRandomKeying.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEncryptionRandomKeying.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">TestSeekOptimizations.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestPerColumnFamilyFlush.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.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">TestReversibleScanners.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSeekOptimizations.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.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">TestRegionServerOnlineConfigChange.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerOnlineConfigChange.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReversibleScanners.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestReversibleScanners.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">TestMasterAddressTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMasterAddressTracker.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionServerOnlineConfigChange.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerOnlineConfigChange.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">TestGetClosestAtOrBefore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestGetClosestAtOrBefore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMasterAddressTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMasterAddressTracker.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">TestMinVersions.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMinVersions.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestGetClosestAtOrBefore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestGetClosestAtOrBefore.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">TestMemStoreChunkPool.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreChunkPool.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMinVersions.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMinVersions.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">TestAtomicOperation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMemStoreChunkPool.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreChunkPool.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">TestCompactionArchiveIOException.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionArchiveIOException.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAtomicOperation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.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">TestHdfsSnapshotHRegion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHdfsSnapshotHRegion.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompactionArchiveIOException.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionArchiveIOException.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">TestCompactionLifeCycleTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionLifeCycleTracker.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHdfsSnapshotHRegion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHdfsSnapshotHRegion.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">TestClearRegionBlockCache.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompactionLifeCycleTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionLifeCycleTracker.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">TestRegionSplitPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionSplitPolicy.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestClearRegionBlockCache.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.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">TestDateTieredCompactionPolicyOverflow.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicyOverflow.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionSplitPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionSplitPolicy.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">TestRSKilledWhenInitializing.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestDateTieredCompactionPolicyOverflow.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicyOverflow.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">TestRegionServerAccounting.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerAccounting.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRSKilledWhenInitializing.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.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">TestCompactionWithCoprocessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionWithCoprocessor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionServerAccounting.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerAccounting.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">TestCompactionInDeadRegionServer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompactionWithCoprocessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionWithCoprocessor.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">TestScannerRetriableFailure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerRetriableFailure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompactionInDeadRegionServer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.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">TestRegionServerReadRequestMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestScannerRetriableFailure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerRetriableFailure.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">TestTimestampFilterSeekHint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTimestampFilterSeekHint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionServerReadRequestMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.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">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">TestTimestampFilterSeekHint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTimestampFilterSeekHint.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">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="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">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="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">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="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">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="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">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="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">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="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">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="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">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="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">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="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">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="altColor">
 <td class="colFirst"><code>static <a href="../../../..

<TRUNCATED>

[25/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html
index db8431b..a8cb7c4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html
@@ -885,7766 +885,7797 @@
 <span class="sourceLineNo">877</span>   * @return What the next sequence (edit) id should be.<a name="line.877"></a>
 <span class="sourceLineNo">878</span>   * @throws IOException e<a name="line.878"></a>
 <span class="sourceLineNo">879</span>   */<a name="line.879"></a>
-<span class="sourceLineNo">880</span>  private long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.880"></a>
-<span class="sourceLineNo">881</span><a name="line.881"></a>
-<span class="sourceLineNo">882</span>    //Refuse to open the region if there is no column family in the table<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.884"></a>
-<span class="sourceLineNo">885</span>          " should have at least one column family.");<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    long nextSeqId = -1;<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    try {<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.891"></a>
-<span class="sourceLineNo">892</span>      return nextSeqId;<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    } finally {<a name="line.893"></a>
-<span class="sourceLineNo">894</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      // At least it will be 0 otherwise.<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      if (nextSeqId == -1) {<a name="line.896"></a>
-<span class="sourceLineNo">897</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.897"></a>
-<span class="sourceLineNo">898</span>          " initialization.");<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      }<a name="line.899"></a>
-<span class="sourceLineNo">900</span>    }<a name="line.900"></a>
-<span class="sourceLineNo">901</span>  }<a name="line.901"></a>
-<span class="sourceLineNo">902</span><a name="line.902"></a>
-<span class="sourceLineNo">903</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.903"></a>
-<span class="sourceLineNo">904</span>      final MonitoredTask status) throws IOException {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    if (coprocessorHost != null) {<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      coprocessorHost.preOpen();<a name="line.907"></a>
-<span class="sourceLineNo">908</span>    }<a name="line.908"></a>
-<span class="sourceLineNo">909</span><a name="line.909"></a>
-<span class="sourceLineNo">910</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.910"></a>
-<span class="sourceLineNo">911</span>    // Only the primary replica should write .regioninfo<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      status.setStatus("Writing region info on filesystem");<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      fs.checkRegionInfoOnFilesystem();<a name="line.914"></a>
-<span class="sourceLineNo">915</span>    }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>    // Initialize all the HStores<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    status.setStatus("Initializing all the Stores");<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.920"></a>
-<span class="sourceLineNo">921</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.922"></a>
-<span class="sourceLineNo">923</span>      try {<a name="line.923"></a>
-<span class="sourceLineNo">924</span>        // update the stores that we are replaying<a name="line.924"></a>
-<span class="sourceLineNo">925</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        // Recover any edits if available.<a name="line.927"></a>
-<span class="sourceLineNo">928</span>        maxSeqId = Math.max(maxSeqId,<a name="line.928"></a>
-<span class="sourceLineNo">929</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        // Make sure mvcc is up to max.<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      } finally {<a name="line.932"></a>
-<span class="sourceLineNo">933</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        // update the stores that we are done replaying<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        stores.forEach(HStore::stopReplayingFromWAL);<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>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    this.writestate.flushRequested = false;<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    this.writestate.compacting.set(0);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>    if (this.writestate.writesEnabled) {<a name="line.944"></a>
-<span class="sourceLineNo">945</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      // Remove temporary data left over from old regions<a name="line.946"></a>
-<span class="sourceLineNo">947</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.947"></a>
-<span class="sourceLineNo">948</span>      fs.cleanupTempDir();<a name="line.948"></a>
-<span class="sourceLineNo">949</span>    }<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>    if (this.writestate.writesEnabled) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      // these directories here on open.  We may be opening a region that was<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      // being split but we crashed in the middle of it all.<a name="line.955"></a>
-<span class="sourceLineNo">956</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      fs.cleanupAnySplitDetritus();<a name="line.957"></a>
-<span class="sourceLineNo">958</span>      fs.cleanupMergesDir();<a name="line.958"></a>
-<span class="sourceLineNo">959</span>    }<a name="line.959"></a>
+<span class="sourceLineNo">880</span>  @VisibleForTesting<a name="line.880"></a>
+<span class="sourceLineNo">881</span>  long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>    //Refuse to open the region if there is no column family in the table<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.885"></a>
+<span class="sourceLineNo">886</span>          " should have at least one column family.");<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    }<a name="line.887"></a>
+<span class="sourceLineNo">888</span><a name="line.888"></a>
+<span class="sourceLineNo">889</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>    long nextSeqId = -1;<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    try {<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      return nextSeqId;<a name="line.893"></a>
+<span class="sourceLineNo">894</span>    } catch (IOException e) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      LOG.warn("Failed initialize of region= {}, starting to roll back memstore",<a name="line.895"></a>
+<span class="sourceLineNo">896</span>          getRegionInfo().getRegionNameAsString(), e);<a name="line.896"></a>
+<span class="sourceLineNo">897</span>      // global memstore size will be decreased when dropping memstore<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      try {<a name="line.898"></a>
+<span class="sourceLineNo">899</span>        //drop the memory used by memstore if open region fails<a name="line.899"></a>
+<span class="sourceLineNo">900</span>        dropMemStoreContents();<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      } catch (IOException ioE) {<a name="line.901"></a>
+<span class="sourceLineNo">902</span>        if (conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {<a name="line.902"></a>
+<span class="sourceLineNo">903</span>          LOG.warn("Failed drop memstore of region= {}, "<a name="line.903"></a>
+<span class="sourceLineNo">904</span>                  + "some chunks may not released forever since MSLAB is enabled",<a name="line.904"></a>
+<span class="sourceLineNo">905</span>              getRegionInfo().getRegionNameAsString());<a name="line.905"></a>
+<span class="sourceLineNo">906</span>        }<a name="line.906"></a>
+<span class="sourceLineNo">907</span><a name="line.907"></a>
+<span class="sourceLineNo">908</span>      }<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      throw e;<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    } finally {<a name="line.910"></a>
+<span class="sourceLineNo">911</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      // At least it will be 0 otherwise.<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      if (nextSeqId == -1) {<a name="line.913"></a>
+<span class="sourceLineNo">914</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.914"></a>
+<span class="sourceLineNo">915</span>          " initialization.");<a name="line.915"></a>
+<span class="sourceLineNo">916</span>      }<a name="line.916"></a>
+<span class="sourceLineNo">917</span>    }<a name="line.917"></a>
+<span class="sourceLineNo">918</span>  }<a name="line.918"></a>
+<span class="sourceLineNo">919</span><a name="line.919"></a>
+<span class="sourceLineNo">920</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.920"></a>
+<span class="sourceLineNo">921</span>      final MonitoredTask status) throws IOException {<a name="line.921"></a>
+<span class="sourceLineNo">922</span>    if (coprocessorHost != null) {<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.923"></a>
+<span class="sourceLineNo">924</span>      coprocessorHost.preOpen();<a name="line.924"></a>
+<span class="sourceLineNo">925</span>    }<a name="line.925"></a>
+<span class="sourceLineNo">926</span><a name="line.926"></a>
+<span class="sourceLineNo">927</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.927"></a>
+<span class="sourceLineNo">928</span>    // Only the primary replica should write .regioninfo<a name="line.928"></a>
+<span class="sourceLineNo">929</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>      status.setStatus("Writing region info on filesystem");<a name="line.930"></a>
+<span class="sourceLineNo">931</span>      fs.checkRegionInfoOnFilesystem();<a name="line.931"></a>
+<span class="sourceLineNo">932</span>    }<a name="line.932"></a>
+<span class="sourceLineNo">933</span><a name="line.933"></a>
+<span class="sourceLineNo">934</span>    // Initialize all the HStores<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    status.setStatus("Initializing all the Stores");<a name="line.935"></a>
+<span class="sourceLineNo">936</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.937"></a>
+<span class="sourceLineNo">938</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.938"></a>
+<span class="sourceLineNo">939</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.939"></a>
+<span class="sourceLineNo">940</span>      try {<a name="line.940"></a>
+<span class="sourceLineNo">941</span>        // update the stores that we are replaying<a name="line.941"></a>
+<span class="sourceLineNo">942</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.942"></a>
+<span class="sourceLineNo">943</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.943"></a>
+<span class="sourceLineNo">944</span>        // Recover any edits if available.<a name="line.944"></a>
+<span class="sourceLineNo">945</span>        maxSeqId = Math.max(maxSeqId,<a name="line.945"></a>
+<span class="sourceLineNo">946</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.946"></a>
+<span class="sourceLineNo">947</span>        // Make sure mvcc is up to max.<a name="line.947"></a>
+<span class="sourceLineNo">948</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      } finally {<a name="line.949"></a>
+<span class="sourceLineNo">950</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        // update the stores that we are done replaying<a name="line.951"></a>
+<span class="sourceLineNo">952</span>        stores.forEach(HStore::stopReplayingFromWAL);<a name="line.952"></a>
+<span class="sourceLineNo">953</span>      }<a name="line.953"></a>
+<span class="sourceLineNo">954</span>    }<a name="line.954"></a>
+<span class="sourceLineNo">955</span>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.955"></a>
+<span class="sourceLineNo">956</span><a name="line.956"></a>
+<span class="sourceLineNo">957</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.957"></a>
+<span class="sourceLineNo">958</span>    this.writestate.flushRequested = false;<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    this.writestate.compacting.set(0);<a name="line.959"></a>
 <span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>    // Initialize split policy<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.962"></a>
-<span class="sourceLineNo">963</span><a name="line.963"></a>
-<span class="sourceLineNo">964</span>    // Initialize flush policy<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.965"></a>
-<span class="sourceLineNo">966</span><a name="line.966"></a>
-<span class="sourceLineNo">967</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    for (HStore store: stores.values()) {<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<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>    // Use maximum of log sequenceid or that which was found in stores<a name="line.972"></a>
-<span class="sourceLineNo">973</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.973"></a>
-<span class="sourceLineNo">974</span>    long maxSeqIdFromFile =<a name="line.974"></a>
-<span class="sourceLineNo">975</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.975"></a>
-<span class="sourceLineNo">976</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.976"></a>
-<span class="sourceLineNo">977</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    // the max sequence id file.<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.985"></a>
-<span class="sourceLineNo">986</span><a name="line.986"></a>
-<span class="sourceLineNo">987</span>    // A region can be reopened if failed a split; reset flags<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    this.closing.set(false);<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    this.closed.set(false);<a name="line.989"></a>
-<span class="sourceLineNo">990</span><a name="line.990"></a>
-<span class="sourceLineNo">991</span>    if (coprocessorHost != null) {<a name="line.991"></a>
-<span class="sourceLineNo">992</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.992"></a>
-<span class="sourceLineNo">993</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.993"></a>
-<span class="sourceLineNo">994</span>      coprocessorHost.postOpen();<a name="line.994"></a>
-<span class="sourceLineNo">995</span>    }<a name="line.995"></a>
-<span class="sourceLineNo">996</span><a name="line.996"></a>
-<span class="sourceLineNo">997</span>    status.markComplete("Region opened successfully");<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    return nextSeqId;<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>   * Open all Stores.<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>   * @param reporter<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   * @param status<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>   * @return Highest sequenceId found out in a Store.<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * @throws IOException<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   */<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      throws IOException {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>    // Load in all the HStores.<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    long maxSeqId = -1;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    long maxMemstoreTS = -1;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span><a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span><a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      // initialize each store in parallel<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>          @Override<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>          public HStore call() throws IOException {<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>            return instantiateHStore(family);<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          }<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>        });<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      }<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>      boolean allStoresOpened = false;<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>      boolean hasSloppyStores = false;<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>      try {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>          HStore store = future.get();<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>          if (store.isSloppyMemStore()) {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            hasSloppyStores = true;<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>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>              storeMaxSequenceId);<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            maxSeqId = storeMaxSequenceId;<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>          }<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>          }<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>        }<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>        allStoresOpened = true;<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>        if(hasSloppyStores) {<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>                  .build();<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        }<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>      } catch (InterruptedException e) {<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>      } catch (ExecutionException e) {<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        throw new IOException(e.getCause());<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>      } finally {<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        if (!allStoresOpened) {<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>          // something went wrong, close all opened stores<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>          for (HStore store : this.stores.values()) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>            try {<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>              store.close();<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>            } catch (IOException e) {<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>              LOG.warn("close store failed", e);<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>            }<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          }<a name="line.1075"></a>
+<span class="sourceLineNo">961</span>    if (this.writestate.writesEnabled) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      // Remove temporary data left over from old regions<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      fs.cleanupTempDir();<a name="line.965"></a>
+<span class="sourceLineNo">966</span>    }<a name="line.966"></a>
+<span class="sourceLineNo">967</span><a name="line.967"></a>
+<span class="sourceLineNo">968</span>    if (this.writestate.writesEnabled) {<a name="line.968"></a>
+<span class="sourceLineNo">969</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.969"></a>
+<span class="sourceLineNo">970</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.970"></a>
+<span class="sourceLineNo">971</span>      // these directories here on open.  We may be opening a region that was<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      // being split but we crashed in the middle of it all.<a name="line.972"></a>
+<span class="sourceLineNo">973</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.973"></a>
+<span class="sourceLineNo">974</span>      fs.cleanupAnySplitDetritus();<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      fs.cleanupMergesDir();<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    }<a name="line.976"></a>
+<span class="sourceLineNo">977</span><a name="line.977"></a>
+<span class="sourceLineNo">978</span>    // Initialize split policy<a name="line.978"></a>
+<span class="sourceLineNo">979</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.979"></a>
+<span class="sourceLineNo">980</span><a name="line.980"></a>
+<span class="sourceLineNo">981</span>    // Initialize flush policy<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.982"></a>
+<span class="sourceLineNo">983</span><a name="line.983"></a>
+<span class="sourceLineNo">984</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.984"></a>
+<span class="sourceLineNo">985</span>    for (HStore store: stores.values()) {<a name="line.985"></a>
+<span class="sourceLineNo">986</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<a name="line.986"></a>
+<span class="sourceLineNo">987</span>    }<a name="line.987"></a>
+<span class="sourceLineNo">988</span><a name="line.988"></a>
+<span class="sourceLineNo">989</span>    // Use maximum of log sequenceid or that which was found in stores<a name="line.989"></a>
+<span class="sourceLineNo">990</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.990"></a>
+<span class="sourceLineNo">991</span>    long maxSeqIdFromFile =<a name="line.991"></a>
+<span class="sourceLineNo">992</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.994"></a>
+<span class="sourceLineNo">995</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.995"></a>
+<span class="sourceLineNo">996</span>    // the max sequence id file.<a name="line.996"></a>
+<span class="sourceLineNo">997</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.997"></a>
+<span class="sourceLineNo">998</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.998"></a>
+<span class="sourceLineNo">999</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<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>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span><a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>    // A region can be reopened if failed a split; reset flags<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>    this.closing.set(false);<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    this.closed.set(false);<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span><a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>    if (coprocessorHost != null) {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>      coprocessorHost.postOpen();<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>    }<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span><a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>    status.markComplete("Region opened successfully");<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>    return nextSeqId;<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>  }<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span><a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>  /**<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>   * Open all Stores.<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>   * @param reporter<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>   * @param status<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>   * @return Highest sequenceId found out in a Store.<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>   * @throws IOException<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>   */<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>      throws IOException {<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    // Load in all the HStores.<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>    long maxSeqId = -1;<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>    long maxMemstoreTS = -1;<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span><a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>      // initialize each store in parallel<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>          @Override<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>          public HStore call() throws IOException {<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>            return instantiateHStore(family);<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>          }<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>        });<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>      }<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>      boolean allStoresOpened = false;<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>      boolean hasSloppyStores = false;<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>      try {<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>          HStore store = future.get();<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>          if (store.isSloppyMemStore()) {<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>            hasSloppyStores = true;<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>          }<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span><a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>              storeMaxSequenceId);<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>            maxSeqId = storeMaxSequenceId;<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>          }<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>          }<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span>        }<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>        allStoresOpened = true;<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>        if(hasSloppyStores) {<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>                  .build();<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1075"></a>
 <span class="sourceLineNo">1076</span>        }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      }<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    }<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>  }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span><a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>    // Initialize all the HStores<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>    status.setStatus("Warming up all the Stores");<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    try {<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>      initializeStores(reporter, status);<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>    } finally {<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>      status.markComplete("Done warming up.");<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>    }<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>  }<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>   * @return Map of StoreFiles by column family<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>   */<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    for (HStore store : stores.values()) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      if (storeFiles == null) {<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>        continue;<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>        storeFileNames.add(storeFile.getPath());<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      }<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>    }<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>    return allStoreFiles;<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>  }<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span><a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>  @VisibleForTesting<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>        mvcc);<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  }<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span><a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>        mvcc);<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span><a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>    // Store SeqId in HDFS when a region closes<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    // table is still online<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>        mvcc.getReadPoint());<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>    }<a name="line.1136"></a>
+<span class="sourceLineNo">1077</span>      } catch (InterruptedException e) {<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>      } catch (ExecutionException e) {<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>        throw new IOException(e.getCause());<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      } finally {<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>        if (!allStoresOpened) {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>          // something went wrong, close all opened stores<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>          for (HStore store : this.stores.values()) {<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>            try {<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>              store.close();<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>            } catch (IOException e) {<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>              LOG.warn("close store failed", e);<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>            }<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>      }<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>    }<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>  }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span><a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>    // Initialize all the HStores<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>    status.setStatus("Warming up all the Stores");<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>    try {<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>      initializeStores(reporter, status);<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>    } finally {<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>      status.markComplete("Done warming up.");<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>    }<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>  }<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span><a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>  /**<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>   * @return Map of StoreFiles by column family<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>   */<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>    for (HStore store : stores.values()) {<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>      if (storeFiles == null) {<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>        continue;<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span>      }<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>        storeFileNames.add(storeFile.getPath());<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>      }<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>    }<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>    return allStoreFiles;<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>  }<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span><a name="line.1128"></a>
+<span class="sourceLineNo">1129</span>  @VisibleForTesting<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>        mvcc);<a name="line.1136"></a>
 <span class="sourceLineNo">1137</span>  }<a name="line.1137"></a>
 <span class="sourceLineNo">1138</span><a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>  /**<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>   * @return True if this region has references.<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>   */<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>  public boolean hasReferences() {<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<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>  public void blockUpdates() {<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>    this.updatesLock.writeLock().lock();<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>  }<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span><a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>  public void unblockUpdates() {<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>    this.updatesLock.writeLock().unlock();<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>  }<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span><a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>    return hdfsBlocksDistribution;<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>  }<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span><a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>  /**<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>   * @param conf configuration<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>   * @param regionInfo encoded name of the region<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>   * @throws IOException<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>   */<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>  }<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span><a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>  /**<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>   * @param conf configuration<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>   * @param regionInfo encoded name of the region<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>   * @param tablePath the table directory<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>   * @throws IOException<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>   */<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1186"></a>
-<span class="sourceLineNo">1187</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1188"></a>
-<span class="sourceLineNo">1189</span><a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span>      if (locatedFileStatusList == null) {<a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>        continue;<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>      }<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span><a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>        Path p = status.getPath();<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>          // creation<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>              status.getBlockLocations());<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span>        } else {<a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>          throw new IOException("path=" + p<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>              + " doesn't look like a valid StoreFile");<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>        }<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>      }<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>    }<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>    return hdfsBlocksDistribution;<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>   * Increase the size of mem store in this region and the size of global mem<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>   * store<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>   */<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>  }<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span><a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>    if (this.rsAccounting != null) {<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>    }<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>    long dataSize =<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1234"></a>
+<span class="sourceLineNo">1139</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span>        mvcc);<a name="line.1145"></a>
+<span class="sourceLineNo">1146</span><a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>    // Store SeqId in HDFS when a region closes<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>    // table is still online<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span>        mvcc.getReadPoint());<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>    }<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>  }<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span><a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>  /**<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>   * @return True if this region has references.<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>   */<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>  public boolean hasReferences() {<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>  }<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span><a name="line.1162"></a>
+<span class="sourceLineNo">1163</span>  public void blockUpdates() {<a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>    this.updatesLock.writeLock().lock();<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>  }<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span><a name="line.1166"></a>
+<span class="sourceLineNo">1167</span>  public void unblockUpdates() {<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>    this.updatesLock.writeLock().unlock();<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>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1172"></a>
+<span class="sourceLineNo">1173</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1174"></a>
+<span class="sourceLineNo">1175</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>    return hdfsBlocksDistribution;<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span>  }<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span><a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>  /**<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>   * @param conf configuration<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1182"></a>
+<span class="sourceLineNo">1183</span>   * @param regionInfo encoded name of the region<a name="line.1183"></a>
+<span class="sourceLineNo">1184</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1184"></a>
+<span class="sourceLineNo">1185</span>   * @throws IOException<a name="line.1185"></a>
+<span class="sourceLineNo">1186</span>   */<a name="line.1186"></a>
+<span class="sourceLineNo">1187</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1187"></a>
+<span class="sourceLineNo">1188</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1188"></a>
+<span class="sourceLineNo">1189</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1189"></a>
+<span class="sourceLineNo">1190</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1190"></a>
+<span class="sourceLineNo">1191</span>  }<a name="line.1191"></a>
+<span class="sourceLineNo">1192</span><a name="line.1192"></a>
+<span class="sourceLineNo">1193</span>  /**<a name="line.1193"></a>
+<span class="sourceLineNo">1194</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1194"></a>
+<span class="sourceLineNo">1195</span>   * @param conf configuration<a name="line.1195"></a>
+<span class="sourceLineNo">1196</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1196"></a>
+<span class="sourceLineNo">1197</span>   * @param regionInfo encoded name of the region<a name="line.1197"></a>
+<span class="sourceLineNo">1198</span>   * @param tablePath the table directory<a name="line.1198"></a>
+<span class="sourceLineNo">1199</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1199"></a>
+<span class="sourceLineNo">1200</span>   * @throws IOException<a name="line.1200"></a>
+<span class="sourceLineNo">1201</span>   */<a name="line.1201"></a>
+<span class="sourceLineNo">1202</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1202"></a>
+<span class="sourceLineNo">1203</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1203"></a>
+<span class="sourceLineNo">1204</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1204"></a>
+<span class="sourceLineNo">1205</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1205"></a>
+<span class="sourceLineNo">1206</span><a name="line.1206"></a>
+<span class="sourceLineNo">1207</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1207"></a>
+<span class="sourceLineNo">1208</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1208"></a>
+<span class="sourceLineNo">1209</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1209"></a>
+<span class="sourceLineNo">1210</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1210"></a>
+<span class="sourceLineNo">1211</span>      if (locatedFileStatusList == null) {<a name="line.1211"></a>
+<span class="sourceLineNo">1212</span>        continue;<a name="line.1212"></a>
+<span class="sourceLineNo">1213</span>      }<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span><a name="line.1214"></a>
+<span class="sourceLineNo">1215</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1215"></a>
+<span class="sourceLineNo">1216</span>        Path p = status.getPath();<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1217"></a>
+<span class="sourceLineNo">1218</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span>          // creation<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1224"></a>
+<span class="sourceLineNo">1225</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1225"></a>
+<span class="sourceLineNo">1226</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1226"></a>
+<span class="sourceLineNo">1227</span>              status.getBlockLocations());<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span>        } else {<a name="line.1228"></a>
+<span class="sourceLineNo">1229</span>          throw new IOException("path=" + p<a name="line.1229"></a>
+<span class="sourceLineNo">1230</span>              + " doesn't look like a valid StoreFile");<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>    }<a name="line.1233"></a>
+<span class="sourceLineNo">1234</span>    return hdfsBlocksDistribution;<a name="line.1234"></a>
 <span class="sourceLineNo">1235</span>  }<a name="line.1235"></a>
 <span class="sourceLineNo">1236</span><a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>  }<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span><a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>    if (this.rsAccounting != null) {<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>    }<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>    long dataSize =<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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 checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    if (memStoreDataSize &lt; 0) {<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>    }<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>  }<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span><a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>  @Override<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>  public RegionInfo getRegionInfo() {<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>    return this.fs.getRegionInfo();<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>  }<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span><a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>  /**<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>   * @return Instance of {@link RegionServerServices} used by this HRegion.<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>   * Can be null.<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>   */<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>  RegionServerServices getRegionServerServices() {<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>    return this.rsServices;<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>  }<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span><a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>  @Override<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>  public long getReadRequestsCount() {<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>    return readRequestsCount.sum();<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>  }<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span><a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>  @Override<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>  public long getCpRequestsCount() {<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>    return cpRequestsCount.sum();<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>  @Override<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>  public long getFilteredReadRequestsCount() {<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>    return filteredReadRequestsCount.sum();<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>  @Override<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>  public long getWriteRequestsCount() {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    return writeRequestsCount.sum();<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>  }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>  @Override<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>  public long getMemStoreDataSize() {<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>    return memStoreSizing.getDataSize();<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>  @Override<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>  public long getMemStoreHeapSize() {<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>    return memStoreSizing.getHeapSize();<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>  }<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span><a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>  @Override<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>  public long getMemStoreOffHeapSize() {<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>    return memStoreSizing.getOffHeapSize();<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>  }<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span><a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>  /** @return store services for this region, to access services required by store level needs */<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>  public RegionServicesForStores getRegionServicesForStores() {<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>    return regionServicesForStores;<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>  @Override<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>  public long getNumMutationsWithoutWAL() {<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>    return numMutationsWithoutWAL.sum();<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>  @Override<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>  public long getDataInMemoryWithoutWAL() {<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>    return dataInMemoryWithoutWAL.sum();<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>  }<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span><a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>  @Override<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>  public long getBlockedRequestsCount() {<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>    return blockedRequestsCount.sum();<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>  }<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span><a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>  @Override<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>  public long getCheckAndMutateChecksPassed() {<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>    return checkAndMutateChecksPassed.sum();<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 long getCheckAndMutateChecksFailed() {<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    return checkAndMutateChecksFailed.sum();<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>  // TODO Needs to check whether we should expose our metrics system to CPs. If CPs themselves doing<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>  // the op and bypassing the core, this might be needed? Should be stop supporting the bypass<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>  // feature?<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>  public MetricsRegion getMetrics() {<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>    return metricsRegion;<a name="line.1342"></a>
+<span class="sourceLineNo">1237</span>  /**<a name="line.1237"></a>
+<span class="sourceLineNo">1238</span>   * Increase the size of mem store in this region and the size of global mem<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span>   * store<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span>   */<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>  }<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span><a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>    if (this.rsAccounting != null) {<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>    }<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>    long dataSize =<a name="line.1249"></a>
+<span class="sourceLineNo">1250</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1250"></a>
+<span class="sourceLineNo">1251</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>  }<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span><a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span>  }<a name="line.1256"></a>
+<span class="sourceLineNo">1257</span><a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>    if (this.rsAccounting != null) {<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>    }<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>    long dataSize =<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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>  private void checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>    if (memStoreDataSize &lt; 0) {<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>    }<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>  }<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span><a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>  @Override<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>  public RegionInfo getRegionInfo() {<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>    return this.fs.getRegionInfo();<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>  }<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="source

<TRUNCATED>

[29/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
index db8431b..a8cb7c4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
@@ -885,7766 +885,7797 @@
 <span class="sourceLineNo">877</span>   * @return What the next sequence (edit) id should be.<a name="line.877"></a>
 <span class="sourceLineNo">878</span>   * @throws IOException e<a name="line.878"></a>
 <span class="sourceLineNo">879</span>   */<a name="line.879"></a>
-<span class="sourceLineNo">880</span>  private long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.880"></a>
-<span class="sourceLineNo">881</span><a name="line.881"></a>
-<span class="sourceLineNo">882</span>    //Refuse to open the region if there is no column family in the table<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.884"></a>
-<span class="sourceLineNo">885</span>          " should have at least one column family.");<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    long nextSeqId = -1;<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    try {<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.891"></a>
-<span class="sourceLineNo">892</span>      return nextSeqId;<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    } finally {<a name="line.893"></a>
-<span class="sourceLineNo">894</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      // At least it will be 0 otherwise.<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      if (nextSeqId == -1) {<a name="line.896"></a>
-<span class="sourceLineNo">897</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.897"></a>
-<span class="sourceLineNo">898</span>          " initialization.");<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      }<a name="line.899"></a>
-<span class="sourceLineNo">900</span>    }<a name="line.900"></a>
-<span class="sourceLineNo">901</span>  }<a name="line.901"></a>
-<span class="sourceLineNo">902</span><a name="line.902"></a>
-<span class="sourceLineNo">903</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.903"></a>
-<span class="sourceLineNo">904</span>      final MonitoredTask status) throws IOException {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    if (coprocessorHost != null) {<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      coprocessorHost.preOpen();<a name="line.907"></a>
-<span class="sourceLineNo">908</span>    }<a name="line.908"></a>
-<span class="sourceLineNo">909</span><a name="line.909"></a>
-<span class="sourceLineNo">910</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.910"></a>
-<span class="sourceLineNo">911</span>    // Only the primary replica should write .regioninfo<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      status.setStatus("Writing region info on filesystem");<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      fs.checkRegionInfoOnFilesystem();<a name="line.914"></a>
-<span class="sourceLineNo">915</span>    }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>    // Initialize all the HStores<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    status.setStatus("Initializing all the Stores");<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.920"></a>
-<span class="sourceLineNo">921</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.922"></a>
-<span class="sourceLineNo">923</span>      try {<a name="line.923"></a>
-<span class="sourceLineNo">924</span>        // update the stores that we are replaying<a name="line.924"></a>
-<span class="sourceLineNo">925</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        // Recover any edits if available.<a name="line.927"></a>
-<span class="sourceLineNo">928</span>        maxSeqId = Math.max(maxSeqId,<a name="line.928"></a>
-<span class="sourceLineNo">929</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        // Make sure mvcc is up to max.<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      } finally {<a name="line.932"></a>
-<span class="sourceLineNo">933</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        // update the stores that we are done replaying<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        stores.forEach(HStore::stopReplayingFromWAL);<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>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    this.writestate.flushRequested = false;<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    this.writestate.compacting.set(0);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>    if (this.writestate.writesEnabled) {<a name="line.944"></a>
-<span class="sourceLineNo">945</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      // Remove temporary data left over from old regions<a name="line.946"></a>
-<span class="sourceLineNo">947</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.947"></a>
-<span class="sourceLineNo">948</span>      fs.cleanupTempDir();<a name="line.948"></a>
-<span class="sourceLineNo">949</span>    }<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>    if (this.writestate.writesEnabled) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      // these directories here on open.  We may be opening a region that was<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      // being split but we crashed in the middle of it all.<a name="line.955"></a>
-<span class="sourceLineNo">956</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      fs.cleanupAnySplitDetritus();<a name="line.957"></a>
-<span class="sourceLineNo">958</span>      fs.cleanupMergesDir();<a name="line.958"></a>
-<span class="sourceLineNo">959</span>    }<a name="line.959"></a>
+<span class="sourceLineNo">880</span>  @VisibleForTesting<a name="line.880"></a>
+<span class="sourceLineNo">881</span>  long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>    //Refuse to open the region if there is no column family in the table<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.885"></a>
+<span class="sourceLineNo">886</span>          " should have at least one column family.");<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    }<a name="line.887"></a>
+<span class="sourceLineNo">888</span><a name="line.888"></a>
+<span class="sourceLineNo">889</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>    long nextSeqId = -1;<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    try {<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      return nextSeqId;<a name="line.893"></a>
+<span class="sourceLineNo">894</span>    } catch (IOException e) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      LOG.warn("Failed initialize of region= {}, starting to roll back memstore",<a name="line.895"></a>
+<span class="sourceLineNo">896</span>          getRegionInfo().getRegionNameAsString(), e);<a name="line.896"></a>
+<span class="sourceLineNo">897</span>      // global memstore size will be decreased when dropping memstore<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      try {<a name="line.898"></a>
+<span class="sourceLineNo">899</span>        //drop the memory used by memstore if open region fails<a name="line.899"></a>
+<span class="sourceLineNo">900</span>        dropMemStoreContents();<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      } catch (IOException ioE) {<a name="line.901"></a>
+<span class="sourceLineNo">902</span>        if (conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {<a name="line.902"></a>
+<span class="sourceLineNo">903</span>          LOG.warn("Failed drop memstore of region= {}, "<a name="line.903"></a>
+<span class="sourceLineNo">904</span>                  + "some chunks may not released forever since MSLAB is enabled",<a name="line.904"></a>
+<span class="sourceLineNo">905</span>              getRegionInfo().getRegionNameAsString());<a name="line.905"></a>
+<span class="sourceLineNo">906</span>        }<a name="line.906"></a>
+<span class="sourceLineNo">907</span><a name="line.907"></a>
+<span class="sourceLineNo">908</span>      }<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      throw e;<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    } finally {<a name="line.910"></a>
+<span class="sourceLineNo">911</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      // At least it will be 0 otherwise.<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      if (nextSeqId == -1) {<a name="line.913"></a>
+<span class="sourceLineNo">914</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.914"></a>
+<span class="sourceLineNo">915</span>          " initialization.");<a name="line.915"></a>
+<span class="sourceLineNo">916</span>      }<a name="line.916"></a>
+<span class="sourceLineNo">917</span>    }<a name="line.917"></a>
+<span class="sourceLineNo">918</span>  }<a name="line.918"></a>
+<span class="sourceLineNo">919</span><a name="line.919"></a>
+<span class="sourceLineNo">920</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.920"></a>
+<span class="sourceLineNo">921</span>      final MonitoredTask status) throws IOException {<a name="line.921"></a>
+<span class="sourceLineNo">922</span>    if (coprocessorHost != null) {<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.923"></a>
+<span class="sourceLineNo">924</span>      coprocessorHost.preOpen();<a name="line.924"></a>
+<span class="sourceLineNo">925</span>    }<a name="line.925"></a>
+<span class="sourceLineNo">926</span><a name="line.926"></a>
+<span class="sourceLineNo">927</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.927"></a>
+<span class="sourceLineNo">928</span>    // Only the primary replica should write .regioninfo<a name="line.928"></a>
+<span class="sourceLineNo">929</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>      status.setStatus("Writing region info on filesystem");<a name="line.930"></a>
+<span class="sourceLineNo">931</span>      fs.checkRegionInfoOnFilesystem();<a name="line.931"></a>
+<span class="sourceLineNo">932</span>    }<a name="line.932"></a>
+<span class="sourceLineNo">933</span><a name="line.933"></a>
+<span class="sourceLineNo">934</span>    // Initialize all the HStores<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    status.setStatus("Initializing all the Stores");<a name="line.935"></a>
+<span class="sourceLineNo">936</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.937"></a>
+<span class="sourceLineNo">938</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.938"></a>
+<span class="sourceLineNo">939</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.939"></a>
+<span class="sourceLineNo">940</span>      try {<a name="line.940"></a>
+<span class="sourceLineNo">941</span>        // update the stores that we are replaying<a name="line.941"></a>
+<span class="sourceLineNo">942</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.942"></a>
+<span class="sourceLineNo">943</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.943"></a>
+<span class="sourceLineNo">944</span>        // Recover any edits if available.<a name="line.944"></a>
+<span class="sourceLineNo">945</span>        maxSeqId = Math.max(maxSeqId,<a name="line.945"></a>
+<span class="sourceLineNo">946</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.946"></a>
+<span class="sourceLineNo">947</span>        // Make sure mvcc is up to max.<a name="line.947"></a>
+<span class="sourceLineNo">948</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      } finally {<a name="line.949"></a>
+<span class="sourceLineNo">950</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        // update the stores that we are done replaying<a name="line.951"></a>
+<span class="sourceLineNo">952</span>        stores.forEach(HStore::stopReplayingFromWAL);<a name="line.952"></a>
+<span class="sourceLineNo">953</span>      }<a name="line.953"></a>
+<span class="sourceLineNo">954</span>    }<a name="line.954"></a>
+<span class="sourceLineNo">955</span>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.955"></a>
+<span class="sourceLineNo">956</span><a name="line.956"></a>
+<span class="sourceLineNo">957</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.957"></a>
+<span class="sourceLineNo">958</span>    this.writestate.flushRequested = false;<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    this.writestate.compacting.set(0);<a name="line.959"></a>
 <span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>    // Initialize split policy<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.962"></a>
-<span class="sourceLineNo">963</span><a name="line.963"></a>
-<span class="sourceLineNo">964</span>    // Initialize flush policy<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.965"></a>
-<span class="sourceLineNo">966</span><a name="line.966"></a>
-<span class="sourceLineNo">967</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    for (HStore store: stores.values()) {<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<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>    // Use maximum of log sequenceid or that which was found in stores<a name="line.972"></a>
-<span class="sourceLineNo">973</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.973"></a>
-<span class="sourceLineNo">974</span>    long maxSeqIdFromFile =<a name="line.974"></a>
-<span class="sourceLineNo">975</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.975"></a>
-<span class="sourceLineNo">976</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.976"></a>
-<span class="sourceLineNo">977</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    // the max sequence id file.<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.985"></a>
-<span class="sourceLineNo">986</span><a name="line.986"></a>
-<span class="sourceLineNo">987</span>    // A region can be reopened if failed a split; reset flags<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    this.closing.set(false);<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    this.closed.set(false);<a name="line.989"></a>
-<span class="sourceLineNo">990</span><a name="line.990"></a>
-<span class="sourceLineNo">991</span>    if (coprocessorHost != null) {<a name="line.991"></a>
-<span class="sourceLineNo">992</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.992"></a>
-<span class="sourceLineNo">993</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.993"></a>
-<span class="sourceLineNo">994</span>      coprocessorHost.postOpen();<a name="line.994"></a>
-<span class="sourceLineNo">995</span>    }<a name="line.995"></a>
-<span class="sourceLineNo">996</span><a name="line.996"></a>
-<span class="sourceLineNo">997</span>    status.markComplete("Region opened successfully");<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    return nextSeqId;<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>   * Open all Stores.<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>   * @param reporter<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   * @param status<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>   * @return Highest sequenceId found out in a Store.<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * @throws IOException<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   */<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      throws IOException {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>    // Load in all the HStores.<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    long maxSeqId = -1;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    long maxMemstoreTS = -1;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span><a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span><a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      // initialize each store in parallel<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>          @Override<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>          public HStore call() throws IOException {<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>            return instantiateHStore(family);<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          }<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>        });<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      }<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>      boolean allStoresOpened = false;<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>      boolean hasSloppyStores = false;<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>      try {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>          HStore store = future.get();<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>          if (store.isSloppyMemStore()) {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            hasSloppyStores = true;<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>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>              storeMaxSequenceId);<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            maxSeqId = storeMaxSequenceId;<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>          }<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>          }<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>        }<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>        allStoresOpened = true;<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>        if(hasSloppyStores) {<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>                  .build();<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        }<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>      } catch (InterruptedException e) {<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>      } catch (ExecutionException e) {<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        throw new IOException(e.getCause());<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>      } finally {<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        if (!allStoresOpened) {<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>          // something went wrong, close all opened stores<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>          for (HStore store : this.stores.values()) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>            try {<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>              store.close();<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>            } catch (IOException e) {<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>              LOG.warn("close store failed", e);<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>            }<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          }<a name="line.1075"></a>
+<span class="sourceLineNo">961</span>    if (this.writestate.writesEnabled) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      // Remove temporary data left over from old regions<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      fs.cleanupTempDir();<a name="line.965"></a>
+<span class="sourceLineNo">966</span>    }<a name="line.966"></a>
+<span class="sourceLineNo">967</span><a name="line.967"></a>
+<span class="sourceLineNo">968</span>    if (this.writestate.writesEnabled) {<a name="line.968"></a>
+<span class="sourceLineNo">969</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.969"></a>
+<span class="sourceLineNo">970</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.970"></a>
+<span class="sourceLineNo">971</span>      // these directories here on open.  We may be opening a region that was<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      // being split but we crashed in the middle of it all.<a name="line.972"></a>
+<span class="sourceLineNo">973</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.973"></a>
+<span class="sourceLineNo">974</span>      fs.cleanupAnySplitDetritus();<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      fs.cleanupMergesDir();<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    }<a name="line.976"></a>
+<span class="sourceLineNo">977</span><a name="line.977"></a>
+<span class="sourceLineNo">978</span>    // Initialize split policy<a name="line.978"></a>
+<span class="sourceLineNo">979</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.979"></a>
+<span class="sourceLineNo">980</span><a name="line.980"></a>
+<span class="sourceLineNo">981</span>    // Initialize flush policy<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.982"></a>
+<span class="sourceLineNo">983</span><a name="line.983"></a>
+<span class="sourceLineNo">984</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.984"></a>
+<span class="sourceLineNo">985</span>    for (HStore store: stores.values()) {<a name="line.985"></a>
+<span class="sourceLineNo">986</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<a name="line.986"></a>
+<span class="sourceLineNo">987</span>    }<a name="line.987"></a>
+<span class="sourceLineNo">988</span><a name="line.988"></a>
+<span class="sourceLineNo">989</span>    // Use maximum of log sequenceid or that which was found in stores<a name="line.989"></a>
+<span class="sourceLineNo">990</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.990"></a>
+<span class="sourceLineNo">991</span>    long maxSeqIdFromFile =<a name="line.991"></a>
+<span class="sourceLineNo">992</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.994"></a>
+<span class="sourceLineNo">995</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.995"></a>
+<span class="sourceLineNo">996</span>    // the max sequence id file.<a name="line.996"></a>
+<span class="sourceLineNo">997</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.997"></a>
+<span class="sourceLineNo">998</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.998"></a>
+<span class="sourceLineNo">999</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<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>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span><a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>    // A region can be reopened if failed a split; reset flags<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>    this.closing.set(false);<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    this.closed.set(false);<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span><a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>    if (coprocessorHost != null) {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>      coprocessorHost.postOpen();<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>    }<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span><a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>    status.markComplete("Region opened successfully");<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>    return nextSeqId;<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>  }<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span><a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>  /**<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>   * Open all Stores.<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>   * @param reporter<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>   * @param status<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>   * @return Highest sequenceId found out in a Store.<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>   * @throws IOException<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>   */<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>      throws IOException {<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    // Load in all the HStores.<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>    long maxSeqId = -1;<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>    long maxMemstoreTS = -1;<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span><a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>      // initialize each store in parallel<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>          @Override<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>          public HStore call() throws IOException {<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>            return instantiateHStore(family);<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>          }<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>        });<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>      }<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>      boolean allStoresOpened = false;<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>      boolean hasSloppyStores = false;<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>      try {<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>          HStore store = future.get();<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>          if (store.isSloppyMemStore()) {<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>            hasSloppyStores = true;<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>          }<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span><a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>              storeMaxSequenceId);<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>            maxSeqId = storeMaxSequenceId;<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>          }<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>          }<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span>        }<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>        allStoresOpened = true;<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>        if(hasSloppyStores) {<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>                  .build();<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1075"></a>
 <span class="sourceLineNo">1076</span>        }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      }<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    }<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>  }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span><a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>    // Initialize all the HStores<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>    status.setStatus("Warming up all the Stores");<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    try {<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>      initializeStores(reporter, status);<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>    } finally {<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>      status.markComplete("Done warming up.");<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>    }<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>  }<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>   * @return Map of StoreFiles by column family<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>   */<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    for (HStore store : stores.values()) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      if (storeFiles == null) {<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>        continue;<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>        storeFileNames.add(storeFile.getPath());<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      }<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>    }<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>    return allStoreFiles;<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>  }<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span><a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>  @VisibleForTesting<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>        mvcc);<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  }<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span><a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>        mvcc);<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span><a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>    // Store SeqId in HDFS when a region closes<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    // table is still online<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>        mvcc.getReadPoint());<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>    }<a name="line.1136"></a>
+<span class="sourceLineNo">1077</span>      } catch (InterruptedException e) {<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>      } catch (ExecutionException e) {<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>        throw new IOException(e.getCause());<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      } finally {<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>        if (!allStoresOpened) {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>          // something went wrong, close all opened stores<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>          for (HStore store : this.stores.values()) {<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>            try {<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>              store.close();<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>            } catch (IOException e) {<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>              LOG.warn("close store failed", e);<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>            }<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>      }<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>    }<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>  }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span><a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>    // Initialize all the HStores<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>    status.setStatus("Warming up all the Stores");<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>    try {<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>      initializeStores(reporter, status);<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>    } finally {<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>      status.markComplete("Done warming up.");<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>    }<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>  }<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span><a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>  /**<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>   * @return Map of StoreFiles by column family<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>   */<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>    for (HStore store : stores.values()) {<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>      if (storeFiles == null) {<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>        continue;<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span>      }<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>        storeFileNames.add(storeFile.getPath());<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>      }<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>    }<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>    return allStoreFiles;<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>  }<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span><a name="line.1128"></a>
+<span class="sourceLineNo">1129</span>  @VisibleForTesting<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>        mvcc);<a name="line.1136"></a>
 <span class="sourceLineNo">1137</span>  }<a name="line.1137"></a>
 <span class="sourceLineNo">1138</span><a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>  /**<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>   * @return True if this region has references.<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>   */<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>  public boolean hasReferences() {<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<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>  public void blockUpdates() {<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>    this.updatesLock.writeLock().lock();<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>  }<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span><a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>  public void unblockUpdates() {<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>    this.updatesLock.writeLock().unlock();<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>  }<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span><a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>    return hdfsBlocksDistribution;<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>  }<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span><a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>  /**<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>   * @param conf configuration<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>   * @param regionInfo encoded name of the region<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>   * @throws IOException<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>   */<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>  }<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span><a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>  /**<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>   * @param conf configuration<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>   * @param regionInfo encoded name of the region<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>   * @param tablePath the table directory<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>   * @throws IOException<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>   */<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1186"></a>
-<span class="sourceLineNo">1187</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1188"></a>
-<span class="sourceLineNo">1189</span><a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span>      if (locatedFileStatusList == null) {<a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>        continue;<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>      }<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span><a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>        Path p = status.getPath();<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>          // creation<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>              status.getBlockLocations());<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span>        } else {<a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>          throw new IOException("path=" + p<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>              + " doesn't look like a valid StoreFile");<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>        }<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>      }<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>    }<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>    return hdfsBlocksDistribution;<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>   * Increase the size of mem store in this region and the size of global mem<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>   * store<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>   */<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>  }<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span><a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>    if (this.rsAccounting != null) {<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>    }<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>    long dataSize =<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1234"></a>
+<span class="sourceLineNo">1139</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span>        mvcc);<a name="line.1145"></a>
+<span class="sourceLineNo">1146</span><a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>    // Store SeqId in HDFS when a region closes<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>    // table is still online<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span>        mvcc.getReadPoint());<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>    }<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>  }<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span><a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>  /**<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>   * @return True if this region has references.<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>   */<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>  public boolean hasReferences() {<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>  }<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span><a name="line.1162"></a>
+<span class="sourceLineNo">1163</span>  public void blockUpdates() {<a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>    this.updatesLock.writeLock().lock();<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>  }<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span><a name="line.1166"></a>
+<span class="sourceLineNo">1167</span>  public void unblockUpdates() {<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>    this.updatesLock.writeLock().unlock();<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>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1172"></a>
+<span class="sourceLineNo">1173</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1174"></a>
+<span class="sourceLineNo">1175</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>    return hdfsBlocksDistribution;<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span>  }<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span><a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>  /**<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>   * @param conf configuration<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1182"></a>
+<span class="sourceLineNo">1183</span>   * @param regionInfo encoded name of the region<a name="line.1183"></a>
+<span class="sourceLineNo">1184</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1184"></a>
+<span class="sourceLineNo">1185</span>   * @throws IOException<a name="line.1185"></a>
+<span class="sourceLineNo">1186</span>   */<a name="line.1186"></a>
+<span class="sourceLineNo">1187</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1187"></a>
+<span class="sourceLineNo">1188</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1188"></a>
+<span class="sourceLineNo">1189</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1189"></a>
+<span class="sourceLineNo">1190</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1190"></a>
+<span class="sourceLineNo">1191</span>  }<a name="line.1191"></a>
+<span class="sourceLineNo">1192</span><a name="line.1192"></a>
+<span class="sourceLineNo">1193</span>  /**<a name="line.1193"></a>
+<span class="sourceLineNo">1194</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1194"></a>
+<span class="sourceLineNo">1195</span>   * @param conf configuration<a name="line.1195"></a>
+<span class="sourceLineNo">1196</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1196"></a>
+<span class="sourceLineNo">1197</span>   * @param regionInfo encoded name of the region<a name="line.1197"></a>
+<span class="sourceLineNo">1198</span>   * @param tablePath the table directory<a name="line.1198"></a>
+<span class="sourceLineNo">1199</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1199"></a>
+<span class="sourceLineNo">1200</span>   * @throws IOException<a name="line.1200"></a>
+<span class="sourceLineNo">1201</span>   */<a name="line.1201"></a>
+<span class="sourceLineNo">1202</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1202"></a>
+<span class="sourceLineNo">1203</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1203"></a>
+<span class="sourceLineNo">1204</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1204"></a>
+<span class="sourceLineNo">1205</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1205"></a>
+<span class="sourceLineNo">1206</span><a name="line.1206"></a>
+<span class="sourceLineNo">1207</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1207"></a>
+<span class="sourceLineNo">1208</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1208"></a>
+<span class="sourceLineNo">1209</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1209"></a>
+<span class="sourceLineNo">1210</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1210"></a>
+<span class="sourceLineNo">1211</span>      if (locatedFileStatusList == null) {<a name="line.1211"></a>
+<span class="sourceLineNo">1212</span>        continue;<a name="line.1212"></a>
+<span class="sourceLineNo">1213</span>      }<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span><a name="line.1214"></a>
+<span class="sourceLineNo">1215</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1215"></a>
+<span class="sourceLineNo">1216</span>        Path p = status.getPath();<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1217"></a>
+<span class="sourceLineNo">1218</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span>          // creation<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1224"></a>
+<span class="sourceLineNo">1225</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1225"></a>
+<span class="sourceLineNo">1226</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1226"></a>
+<span class="sourceLineNo">1227</span>              status.getBlockLocations());<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span>        } else {<a name="line.1228"></a>
+<span class="sourceLineNo">1229</span>          throw new IOException("path=" + p<a name="line.1229"></a>
+<span class="sourceLineNo">1230</span>              + " doesn't look like a valid StoreFile");<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>    }<a name="line.1233"></a>
+<span class="sourceLineNo">1234</span>    return hdfsBlocksDistribution;<a name="line.1234"></a>
 <span class="sourceLineNo">1235</span>  }<a name="line.1235"></a>
 <span class="sourceLineNo">1236</span><a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>  }<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span><a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>    if (this.rsAccounting != null) {<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>    }<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>    long dataSize =<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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 checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    if (memStoreDataSize &lt; 0) {<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>    }<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>  }<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span><a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>  @Override<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>  public RegionInfo getRegionInfo() {<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>    return this.fs.getRegionInfo();<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>  }<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span><a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>  /**<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>   * @return Instance of {@link RegionServerServices} used by this HRegion.<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>   * Can be null.<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>   */<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>  RegionServerServices getRegionServerServices() {<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>    return this.rsServices;<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>  }<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span><a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>  @Override<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>  public long getReadRequestsCount() {<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>    return readRequestsCount.sum();<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>  }<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span><a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>  @Override<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>  public long getCpRequestsCount() {<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>    return cpRequestsCount.sum();<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>  @Override<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>  public long getFilteredReadRequestsCount() {<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>    return filteredReadRequestsCount.sum();<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>  @Override<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>  public long getWriteRequestsCount() {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    return writeRequestsCount.sum();<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>  }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>  @Override<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>  public long getMemStoreDataSize() {<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>    return memStoreSizing.getDataSize();<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>  @Override<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>  public long getMemStoreHeapSize() {<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>    return memStoreSizing.getHeapSize();<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>  }<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span><a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>  @Override<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>  public long getMemStoreOffHeapSize() {<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>    return memStoreSizing.getOffHeapSize();<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>  }<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span><a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>  /** @return store services for this region, to access services required by store level needs */<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>  public RegionServicesForStores getRegionServicesForStores() {<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>    return regionServicesForStores;<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>  @Override<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>  public long getNumMutationsWithoutWAL() {<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>    return numMutationsWithoutWAL.sum();<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>  @Override<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>  public long getDataInMemoryWithoutWAL() {<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>    return dataInMemoryWithoutWAL.sum();<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>  }<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span><a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>  @Override<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>  public long getBlockedRequestsCount() {<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>    return blockedRequestsCount.sum();<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>  }<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span><a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>  @Override<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>  public long getCheckAndMutateChecksPassed() {<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>    return checkAndMutateChecksPassed.sum();<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 long getCheckAndMutateChecksFailed() {<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    return checkAndMutateChecksFailed.sum();<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>  // TODO Needs to check whether we should expose our metrics system to CPs. If CPs themselves doing<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>  // the op and bypassing the core, this might be needed? Should be stop supporting the bypass<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>  // feature?<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>  public MetricsRegion getMetrics() {<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>    return metricsRegion;<a name="line.1342"></a>
+<span class="sourceLineNo">1237</span>  /**<a name="line.1237"></a>
+<span class="sourceLineNo">1238</span>   * Increase the size of mem store in this region and the size of global mem<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span>   * store<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span>   */<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>  }<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span><a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>    if (this.rsAccounting != null) {<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>    }<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>    long dataSize =<a name="line.1249"></a>
+<span class="sourceLineNo">1250</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1250"></a>
+<span class="sourceLineNo">1251</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>  }<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span><a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span>  }<a name="line.1256"></a>
+<span class="sourceLineNo">1257</span><a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>    if (this.rsAccounting != null) {<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>    }<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>    long dataSize =<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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>  private void checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>    if (memStoreDataSize &lt; 0) {<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>    }<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>  }<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span><a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>  @Override<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>  public RegionInfo getRegionInfo() {<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>    return this.fs.getRegionInfo();<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>  }<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="sourceLineN

<TRUNCATED>

[41/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
index 1f561cf..0083ac1 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private final class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2258">HStore.StoreFlusherImpl</a>
+<pre>private final class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2259">HStore.StoreFlusherImpl</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/StoreFlushContext.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFlushContext</a></pre>
 </li>
@@ -279,7 +279,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>tracker</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushLifeCycleTracker.html" title="interface in org.apache.hadoop.hbase.regionserver">FlushLifeCycleTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2260">tracker</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushLifeCycleTracker.html" title="interface in org.apache.hadoop.hbase.regionserver">FlushLifeCycleTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2261">tracker</a></pre>
 </li>
 </ul>
 <a name="cacheFlushSeqNum">
@@ -288,7 +288,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheFlushSeqNum</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2261">cacheFlushSeqNum</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2262">cacheFlushSeqNum</a></pre>
 </li>
 </ul>
 <a name="snapshot">
@@ -297,7 +297,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshot</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2262">snapshot</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2263">snapshot</a></pre>
 </li>
 </ul>
 <a name="tempFiles">
@@ -306,7 +306,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>tempFiles</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; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2263">tempFiles</a></pre>
+<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; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2264">tempFiles</a></pre>
 </li>
 </ul>
 <a name="committedFiles">
@@ -315,7 +315,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>committedFiles</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; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2264">committedFiles</a></pre>
+<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; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2265">committedFiles</a></pre>
 </li>
 </ul>
 <a name="cacheFlushCount">
@@ -324,7 +324,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheFlushCount</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2265">cacheFlushCount</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2266">cacheFlushCount</a></pre>
 </li>
 </ul>
 <a name="cacheFlushSize">
@@ -333,7 +333,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheFlushSize</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2266">cacheFlushSize</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2267">cacheFlushSize</a></pre>
 </li>
 </ul>
 <a name="outputFileSize">
@@ -342,7 +342,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockListLast">
 <li class="blockList">
 <h4>outputFileSize</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2267">outputFileSize</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2268">outputFileSize</a></pre>
 </li>
 </ul>
 </li>
@@ -359,7 +359,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockListLast">
 <li class="blockList">
 <h4>StoreFlusherImpl</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2269">StoreFlusherImpl</a>(long&nbsp;cacheFlushSeqNum,
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2270">StoreFlusherImpl</a>(long&nbsp;cacheFlushSeqNum,
                          <a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushLifeCycleTracker.html" title="interface in org.apache.hadoop.hbase.regionserver">FlushLifeCycleTracker</a>&nbsp;tracker)</pre>
 </li>
 </ul>
@@ -377,7 +377,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>prepare</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2279">prepare</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2280">prepare</a>()</pre>
 <div class="block">This is not thread safe. The caller should have a lock on the region or the store.
  If necessary, the lock can be added with the patch provided in HBASE-10087</div>
 <dl>
@@ -394,7 +394,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>flushCache</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2289">flushCache</a>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2290">flushCache</a>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)
                 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/StoreFlushContext.html#flushCache-org.apache.hadoop.hbase.monitoring.MonitoredTask-">StoreFlushContext</a></code></span></div>
 <div class="block">Flush the cache (create the new store file)
@@ -415,7 +415,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>commit</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2298">commit</a>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2299">commit</a>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)
                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/StoreFlushContext.html#commit-org.apache.hadoop.hbase.monitoring.MonitoredTask-">StoreFlushContext</a></code></span></div>
 <div class="block">Commit the flush - add the store file to the store and clear the
@@ -440,7 +440,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>getOutputFileSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2341">getOutputFileSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2342">getOutputFileSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#getOutputFileSize--">getOutputFileSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFlushContext</a></code></dd>
@@ -455,7 +455,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>getCommittedFiles</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;org.apache.hadoop.fs.Path&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2346">getCommittedFiles</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;org.apache.hadoop.fs.Path&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2347">getCommittedFiles</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#getCommittedFiles--">StoreFlushContext</a></code></span></div>
 <div class="block">Returns the newly committed files from the flush. Called only if commit returns true</div>
 <dl>
@@ -472,7 +472,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>replayFlush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2359">replayFlush</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;fileNames,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2360">replayFlush</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;fileNames,
                         boolean&nbsp;dropMemstoreSnapshot)
                  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">Similar to commit, but called in secondary region replicas for replaying the
@@ -495,7 +495,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockListLast">
 <li class="blockList">
 <h4>abort</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2391">abort</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2392">abort</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">Abort the snapshot preparation. Drops the snapshot if any.</div>
 <dl>


[32/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html
index bf6738e..a62d84e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html
@@ -74,569 +74,568 @@
 <span class="sourceLineNo">066</span><a name="line.66"></a>
 <span class="sourceLineNo">067</span>  private static final Logger LOG = LoggerFactory.getLogger(CompactingMemStore.class);<a name="line.67"></a>
 <span class="sourceLineNo">068</span>  private HStore store;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private RegionServicesForStores regionServices;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private CompactionPipeline pipeline;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  protected MemStoreCompactor compactor;<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private long inmemoryFlushSize;       // the threshold on active size for in-memory flush<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private final AtomicBoolean inMemoryCompactionInProgress = new AtomicBoolean(false);<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  // inWalReplay is true while we are synchronously replaying the edits from WAL<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  private boolean inWalReplay = false;<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>  @VisibleForTesting<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  protected final AtomicBoolean allowCompaction = new AtomicBoolean(true);<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  private boolean compositeSnapshot = true;<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  /**<a name="line.83"></a>
-<span class="sourceLineNo">084</span>   * Types of indexes (part of immutable segments) to be used after flattening,<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   * compaction, or merge are applied.<a name="line.85"></a>
-<span class="sourceLineNo">086</span>   */<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  public enum IndexType {<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    CSLM_MAP,   // ConcurrentSkipLisMap<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    ARRAY_MAP,  // CellArrayMap<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    CHUNK_MAP   // CellChunkMap<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  }<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private IndexType indexType = IndexType.ARRAY_MAP;  // default implementation<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  public static final long DEEP_OVERHEAD = ClassSize.align( AbstractMemStore.DEEP_OVERHEAD<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      + 7 * ClassSize.REFERENCE     // Store, RegionServicesForStores, CompactionPipeline,<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      // MemStoreCompactor, inMemoryCompactionInProgress,<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      // allowCompaction, indexType<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      + Bytes.SIZEOF_LONG           // inmemoryFlushSize<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      + 2 * Bytes.SIZEOF_BOOLEAN    // compositeSnapshot and inWalReplay<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      + 2 * ClassSize.ATOMIC_BOOLEAN// inMemoryCompactionInProgress and allowCompaction<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      + CompactionPipeline.DEEP_OVERHEAD + MemStoreCompactor.DEEP_OVERHEAD);<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  public CompactingMemStore(Configuration conf, CellComparator c,<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      HStore store, RegionServicesForStores regionServices,<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      MemoryCompactionPolicy compactionPolicy) throws IOException {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    super(conf, c);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    this.store = store;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    this.regionServices = regionServices;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    this.pipeline = new CompactionPipeline(getRegionServices());<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    this.compactor = createMemStoreCompactor(compactionPolicy);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    if (conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      // if user requested to work with MSLABs (whether on- or off-heap), then the<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      // immutable segments are going to use CellChunkMap as their index<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      indexType = IndexType.CHUNK_MAP;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    } else {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      indexType = IndexType.ARRAY_MAP;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    }<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    // initialization of the flush size should happen after initialization of the index type<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    // so do not transfer the following method<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    initInmemoryFlushSize(conf);<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    LOG.info("Store={}, in-memory flush size threshold={}, immutable segments index type={}, " +<a name="line.122"></a>
-<span class="sourceLineNo">123</span>            "compactor={}", this.store.getColumnFamilyName(),<a name="line.123"></a>
-<span class="sourceLineNo">124</span>        StringUtils.byteDesc(this.inmemoryFlushSize), this.indexType,<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        (this.compactor == null? "NULL": this.compactor.toString()));<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>  @VisibleForTesting<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  protected MemStoreCompactor createMemStoreCompactor(MemoryCompactionPolicy compactionPolicy)<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      throws IllegalArgumentIOException {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    return new MemStoreCompactor(this, compactionPolicy);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  private void initInmemoryFlushSize(Configuration conf) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    double factor = 0;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    long memstoreFlushSize = getRegionServices().getMemStoreFlushSize();<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    int numStores = getRegionServices().getNumStores();<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    if (numStores &lt;= 1) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      // Family number might also be zero in some of our unit test case<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      numStores = 1;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    }<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    factor = conf.getDouble(IN_MEMORY_FLUSH_THRESHOLD_FACTOR_KEY, 0.0);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    if(factor != 0.0) {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      // multiply by a factor (the same factor for all index types)<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      inmemoryFlushSize = (long) (factor * memstoreFlushSize) / numStores;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    } else {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      inmemoryFlushSize = IN_MEMORY_FLUSH_MULTIPLIER *<a name="line.147"></a>
-<span class="sourceLineNo">148</span>          conf.getLong(MemStoreLAB.CHUNK_SIZE_KEY, MemStoreLAB.CHUNK_SIZE_DEFAULT);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      inmemoryFlushSize -= ChunkCreator.SIZEOF_CHUNK_HEADER;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  }<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  /**<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * @return Total memory occupied by this MemStore. This won't include any size occupied by the<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   *         snapshot. We assume the snapshot will get cleared soon. This is not thread safe and<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   *         the memstore may be changed while computing its size. It is the responsibility of the<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   *         caller to make sure this doesn't happen.<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 MemStoreSize size() {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    MemStoreSizing memstoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    memstoreSizing.incMemStoreSize(getActive().getMemStoreSize());<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    for (Segment item : pipeline.getSegments()) {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      memstoreSizing.incMemStoreSize(item.getMemStoreSize());<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    return memstoreSizing.getMemStoreSize();<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>   * This method is called before the flush is executed.<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * @return an estimation (lower bound) of the unflushed sequence id in memstore after the flush<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * is executed. if memstore will be cleared returns {@code HConstants.NO_SEQNUM}.<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   */<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  public long preFlushSeqIDEstimation() {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    if(compositeSnapshot) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      return HConstants.NO_SEQNUM;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    Segment segment = getLastSegment();<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    if(segment == null) {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      return HConstants.NO_SEQNUM;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    }<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    return segment.getMinSequenceId();<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>  @Override<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public boolean isSloppy() {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    return true;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>  /**<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * Push the current active memstore segment into the pipeline<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * and create a snapshot of the tail of current compaction pipeline<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * Snapshot must be cleared by call to {@link #clearSnapshot}.<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * {@link #clearSnapshot(long)}.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   * @return {@link MemStoreSnapshot}<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   */<a name="line.197"></a>
-<span class="sourceLineNo">198</span>  @Override<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  public MemStoreSnapshot snapshot() {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    // If snapshot currently has entries, then flusher failed or didn't call<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    // cleanup.  Log a warning.<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    if (!this.snapshot.isEmpty()) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      LOG.warn("Snapshot called again without clearing previous. " +<a name="line.203"></a>
-<span class="sourceLineNo">204</span>          "Doing nothing. Another ongoing flush or did we fail last attempt?");<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    } else {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      LOG.debug("FLUSHING TO DISK {}, store={}",<a name="line.206"></a>
-<span class="sourceLineNo">207</span>          getRegionServices().getRegionInfo().getEncodedName(), getFamilyName());<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      stopCompaction();<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      // region level lock ensures pushing active to pipeline is done in isolation<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      // no concurrent update operations trying to flush the active segment<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      pushActiveToPipeline(getActive());<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      snapshotId = EnvironmentEdgeManager.currentTime();<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      // in both cases whatever is pushed to snapshot is cleared from the pipeline<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      if (compositeSnapshot) {<a name="line.214"></a>
-<span class="sourceLineNo">215</span>        pushPipelineToSnapshot();<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      } else {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        pushTailToSnapshot();<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      }<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      compactor.resetStats();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    return new MemStoreSnapshot(snapshotId, this.snapshot);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  @Override<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  public MemStoreSize getFlushableSize() {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    MemStoreSize mss = getSnapshotSize();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    if (mss.getDataSize() == 0) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      // if snapshot is empty the tail of the pipeline (or everything in the memstore) is flushed<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      if (compositeSnapshot) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing(pipeline.getPipelineSize());<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        MutableSegment currActive = getActive();<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        if(!currActive.isEmpty()) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>          memStoreSizing.incMemStoreSize(currActive.getMemStoreSize());<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        mss = memStoreSizing.getMemStoreSize();<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      } else {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        mss = pipeline.getTailSize();<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>    return mss.getDataSize() &gt; 0? mss: getActive().getMemStoreSize();<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  }<a name="line.241"></a>
+<span class="sourceLineNo">069</span>  private CompactionPipeline pipeline;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  protected MemStoreCompactor compactor;<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private long inmemoryFlushSize;       // the threshold on active size for in-memory flush<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private final AtomicBoolean inMemoryCompactionInProgress = new AtomicBoolean(false);<a name="line.73"></a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span>  // inWalReplay is true while we are synchronously replaying the edits from WAL<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private boolean inWalReplay = false;<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>  @VisibleForTesting<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  protected final AtomicBoolean allowCompaction = new AtomicBoolean(true);<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  private boolean compositeSnapshot = true;<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  /**<a name="line.82"></a>
+<span class="sourceLineNo">083</span>   * Types of indexes (part of immutable segments) to be used after flattening,<a name="line.83"></a>
+<span class="sourceLineNo">084</span>   * compaction, or merge are applied.<a name="line.84"></a>
+<span class="sourceLineNo">085</span>   */<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  public enum IndexType {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    CSLM_MAP,   // ConcurrentSkipLisMap<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    ARRAY_MAP,  // CellArrayMap<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    CHUNK_MAP   // CellChunkMap<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  }<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private IndexType indexType = IndexType.ARRAY_MAP;  // default implementation<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>  public static final long DEEP_OVERHEAD = ClassSize.align( AbstractMemStore.DEEP_OVERHEAD<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      + 6 * ClassSize.REFERENCE     // Store, CompactionPipeline,<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      // MemStoreCompactor, inMemoryCompactionInProgress,<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      // allowCompaction, indexType<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      + Bytes.SIZEOF_LONG           // inmemoryFlushSize<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      + 2 * Bytes.SIZEOF_BOOLEAN    // compositeSnapshot and inWalReplay<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      + 2 * ClassSize.ATOMIC_BOOLEAN// inMemoryCompactionInProgress and allowCompaction<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      + CompactionPipeline.DEEP_OVERHEAD + MemStoreCompactor.DEEP_OVERHEAD);<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>  public CompactingMemStore(Configuration conf, CellComparator c,<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      HStore store, RegionServicesForStores regionServices,<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      MemoryCompactionPolicy compactionPolicy) throws IOException {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    super(conf, c, regionServices);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    this.store = store;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    this.regionServices = regionServices;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    this.pipeline = new CompactionPipeline(getRegionServices());<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    this.compactor = createMemStoreCompactor(compactionPolicy);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    if (conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      // if user requested to work with MSLABs (whether on- or off-heap), then the<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      // immutable segments are going to use CellChunkMap as their index<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      indexType = IndexType.CHUNK_MAP;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    } else {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      indexType = IndexType.ARRAY_MAP;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    }<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    // initialization of the flush size should happen after initialization of the index type<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    // so do not transfer the following method<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    initInmemoryFlushSize(conf);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    LOG.info("Store={}, in-memory flush size threshold={}, immutable segments index type={}, " +<a name="line.121"></a>
+<span class="sourceLineNo">122</span>            "compactor={}", this.store.getColumnFamilyName(),<a name="line.122"></a>
+<span class="sourceLineNo">123</span>        StringUtils.byteDesc(this.inmemoryFlushSize), this.indexType,<a name="line.123"></a>
+<span class="sourceLineNo">124</span>        (this.compactor == null? "NULL": this.compactor.toString()));<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  }<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>  protected MemStoreCompactor createMemStoreCompactor(MemoryCompactionPolicy compactionPolicy)<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      throws IllegalArgumentIOException {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    return new MemStoreCompactor(this, compactionPolicy);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  }<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private void initInmemoryFlushSize(Configuration conf) {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    double factor = 0;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    long memstoreFlushSize = getRegionServices().getMemStoreFlushSize();<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    int numStores = getRegionServices().getNumStores();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    if (numStores &lt;= 1) {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      // Family number might also be zero in some of our unit test case<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      numStores = 1;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    }<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    factor = conf.getDouble(IN_MEMORY_FLUSH_THRESHOLD_FACTOR_KEY, 0.0);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    if(factor != 0.0) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      // multiply by a factor (the same factor for all index types)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      inmemoryFlushSize = (long) (factor * memstoreFlushSize) / numStores;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    } else {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      inmemoryFlushSize = IN_MEMORY_FLUSH_MULTIPLIER *<a name="line.146"></a>
+<span class="sourceLineNo">147</span>          conf.getLong(MemStoreLAB.CHUNK_SIZE_KEY, MemStoreLAB.CHUNK_SIZE_DEFAULT);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      inmemoryFlushSize -= ChunkCreator.SIZEOF_CHUNK_HEADER;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    }<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  /**<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * @return Total memory occupied by this MemStore. This won't include any size occupied by the<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   *         snapshot. We assume the snapshot will get cleared soon. This is not thread safe and<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   *         the memstore may be changed while computing its size. It is the responsibility of the<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   *         caller to make sure this doesn't happen.<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   */<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  @Override<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public MemStoreSize size() {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    MemStoreSizing memstoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    memstoreSizing.incMemStoreSize(getActive().getMemStoreSize());<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    for (Segment item : pipeline.getSegments()) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      memstoreSizing.incMemStoreSize(item.getMemStoreSize());<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    }<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    return memstoreSizing.getMemStoreSize();<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  }<a name="line.166"></a>
+<span class="sourceLineNo">167</span><a name="line.167"></a>
+<span class="sourceLineNo">168</span>  /**<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * This method is called before the flush is executed.<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * @return an estimation (lower bound) of the unflushed sequence id in memstore after the flush<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * is executed. if memstore will be cleared returns {@code HConstants.NO_SEQNUM}.<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   */<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  @Override<a name="line.173"></a>
+<span class="sourceLineNo">174</span>  public long preFlushSeqIDEstimation() {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    if(compositeSnapshot) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      return HConstants.NO_SEQNUM;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    Segment segment = getLastSegment();<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    if(segment == null) {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      return HConstants.NO_SEQNUM;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    return segment.getMinSequenceId();<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>  @Override<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public boolean isSloppy() {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    return true;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>  }<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>  /**<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * Push the current active memstore segment into the pipeline<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * and create a snapshot of the tail of current compaction pipeline<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * Snapshot must be cleared by call to {@link #clearSnapshot}.<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * {@link #clearSnapshot(long)}.<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * @return {@link MemStoreSnapshot}<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  @Override<a name="line.197"></a>
+<span class="sourceLineNo">198</span>  public MemStoreSnapshot snapshot() {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    // If snapshot currently has entries, then flusher failed or didn't call<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    // cleanup.  Log a warning.<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    if (!this.snapshot.isEmpty()) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      LOG.warn("Snapshot called again without clearing previous. " +<a name="line.202"></a>
+<span class="sourceLineNo">203</span>          "Doing nothing. Another ongoing flush or did we fail last attempt?");<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    } else {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      LOG.debug("FLUSHING TO DISK {}, store={}",<a name="line.205"></a>
+<span class="sourceLineNo">206</span>          getRegionServices().getRegionInfo().getEncodedName(), getFamilyName());<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      stopCompaction();<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      // region level lock ensures pushing active to pipeline is done in isolation<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      // no concurrent update operations trying to flush the active segment<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      pushActiveToPipeline(getActive());<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      snapshotId = EnvironmentEdgeManager.currentTime();<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      // in both cases whatever is pushed to snapshot is cleared from the pipeline<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      if (compositeSnapshot) {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>        pushPipelineToSnapshot();<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      } else {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>        pushTailToSnapshot();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      compactor.resetStats();<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    return new MemStoreSnapshot(snapshotId, this.snapshot);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  @Override<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  public MemStoreSize getFlushableSize() {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    MemStoreSize mss = getSnapshotSize();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    if (mss.getDataSize() == 0) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      // if snapshot is empty the tail of the pipeline (or everything in the memstore) is flushed<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      if (compositeSnapshot) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing(pipeline.getPipelineSize());<a name="line.229"></a>
+<span class="sourceLineNo">230</span>        MutableSegment currActive = getActive();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        if(!currActive.isEmpty()) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>          memStoreSizing.incMemStoreSize(currActive.getMemStoreSize());<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        }<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        mss = memStoreSizing.getMemStoreSize();<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      } else {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        mss = pipeline.getTailSize();<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      }<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    }<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    return mss.getDataSize() &gt; 0? mss: getActive().getMemStoreSize();<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
 <span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span><a name="line.243"></a>
-<span class="sourceLineNo">244</span>  public void setInMemoryCompactionCompleted() {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    inMemoryCompactionInProgress.set(false);<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>  protected boolean setInMemoryCompactionFlag() {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    return inMemoryCompactionInProgress.compareAndSet(false, true);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  @Override<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  protected long keySize() {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    // Need to consider dataSize/keySize of all segments in pipeline and active<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    long keySize = getActive().getDataSize();<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    for (Segment segment : this.pipeline.getSegments()) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      keySize += segment.getDataSize();<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    }<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    return keySize;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>  @Override<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  protected long heapSize() {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    // Need to consider heapOverhead of all segments in pipeline and active<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    long h = getActive().getHeapSize();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    for (Segment segment : this.pipeline.getSegments()) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      h += segment.getHeapSize();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    }<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    return h;<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>  @Override<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  public void updateLowestUnflushedSequenceIdInWAL(boolean onlyIfGreater) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    long minSequenceId = pipeline.getMinSequenceId();<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    if(minSequenceId != Long.MAX_VALUE) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      byte[] encodedRegionName = getRegionServices().getRegionInfo().getEncodedNameAsBytes();<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      byte[] familyName = getFamilyNameInBytes();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      WAL WAL = getRegionServices().getWAL();<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      if (WAL != null) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        WAL.updateStore(encodedRegionName, familyName, minSequenceId, onlyIfGreater);<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>  }<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>   * This message intends to inform the MemStore that next coming updates<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * are going to be part of the replaying edits from WAL<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   */<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  @Override<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  public void startReplayingFromWAL() {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    inWalReplay = true;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>  /**<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * This message intends to inform the MemStore that the replaying edits from WAL<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   * are done<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 void stopReplayingFromWAL() {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    inWalReplay = false;<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>   * Issue any synchronization and test needed before applying the update<a name="line.304"></a>
-<span class="sourceLineNo">305</span>   * For compacting memstore this means checking the update can increase the size without<a name="line.305"></a>
-<span class="sourceLineNo">306</span>   * overflow<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   * @param currentActive the segment to be updated<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * @param cell the cell to be added<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * @param memstoreSizing object to accumulate region size changes<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * @return true iff can proceed with applying the update<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   */<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  @Override protected boolean preUpdate(MutableSegment currentActive, Cell cell,<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      MemStoreSizing memstoreSizing) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    if(currentActive.sharedLock()) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      if (checkAndAddToActiveSize(currentActive, cell, memstoreSizing)) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>        return true;<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      currentActive.sharedUnlock();<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    return false;<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>  @Override protected void postUpdate(MutableSegment currentActive) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    currentActive.sharedUnlock();<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>  @Override protected boolean sizeAddedPreOperation() {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    return true;<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>  // the getSegments() method is used for tests only<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  @VisibleForTesting<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  @Override<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  protected List&lt;Segment&gt; getSegments() {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    List&lt;? extends Segment&gt; pipelineList = pipeline.getSegments();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    List&lt;Segment&gt; list = new ArrayList&lt;&gt;(pipelineList.size() + 2);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    list.add(getActive());<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    list.addAll(pipelineList);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    list.addAll(snapshot.getAllSegments());<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>    return list;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  }<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>  // the following three methods allow to manipulate the settings of composite snapshot<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  public void setCompositeSnapshot(boolean useCompositeSnapshot) {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    this.compositeSnapshot = useCompositeSnapshot;<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>  public boolean swapCompactedSegments(VersionedSegmentsList versionedList, ImmutableSegment result,<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      boolean merge) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    // last true stands for updating the region size<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    return pipeline.swap(versionedList, result, !merge, true);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>  /**<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * @param requesterVersion The caller must hold the VersionedList of the pipeline<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   *           with version taken earlier. This version must be passed as a parameter here.<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   *           The flattening happens only if versions match.<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   */<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  public void flattenOneSegment(long requesterVersion,  MemStoreCompactionStrategy.Action action) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    pipeline.flattenOneSegment(requesterVersion, indexType, action);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>  // setter is used only for testability<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  @VisibleForTesting<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  void setIndexType(IndexType type) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    indexType = type;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    // Because this functionality is for testing only and tests are setting in-memory flush size<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    // according to their need, there is no setting of in-memory flush size, here.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    // If it is needed, please change in-memory flush size explicitly<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  }<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>  public IndexType getIndexType() {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    return indexType;<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>  public boolean hasImmutableSegments() {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    return !pipeline.isEmpty();<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  }<a name="line.379"></a>
-<span class="sourceLineNo">380</span><a name="line.380"></a>
-<span class="sourceLineNo">381</span>  public VersionedSegmentsList getImmutableSegments() {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    return pipeline.getVersionedList();<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>  public long getSmallestReadPoint() {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    return store.getSmallestReadPoint();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  }<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span>  public HStore getStore() {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    return store;<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  }<a name="line.391"></a>
-<span class="sourceLineNo">392</span><a name="line.392"></a>
-<span class="sourceLineNo">393</span>  public String getFamilyName() {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    return Bytes.toString(getFamilyNameInBytes());<a name="line.394"></a>
-<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>  @Override<a name="line.397"></a>
-<span class="sourceLineNo">398</span>  public List&lt;KeyValueScanner&gt; getScanners(long readPt) throws IOException {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    MutableSegment activeTmp = getActive();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    List&lt;? extends Segment&gt; pipelineList = pipeline.getSegments();<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    List&lt;? extends Segment&gt; snapshotList = snapshot.getAllSegments();<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    long numberOfSegments = 1L + pipelineList.size() + snapshotList.size();<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    // The list of elements in pipeline + the active element + the snapshot segment<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    List&lt;KeyValueScanner&gt; list = createList((int) numberOfSegments);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    addToScanners(activeTmp, readPt, list);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    addToScanners(pipelineList, readPt, list);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    addToScanners(snapshotList, readPt, list);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    return list;<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>  @VisibleForTesting<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  protected List&lt;KeyValueScanner&gt; createList(int capacity) {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    return new ArrayList&lt;&gt;(capacity);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>  }<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>  /**<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * Check whether anything need to be done based on the current active set size.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * The method is invoked upon every addition to the active set.<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * For CompactingMemStore, flush the active set to the read-only memory if it's<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * size is above threshold<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * @param currActive intended segment to update<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   * @param cellToAdd cell to be added to the segment<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * @param memstoreSizing object to accumulate changed size<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * @return true if the cell can be added to the<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   */<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  private boolean checkAndAddToActiveSize(MutableSegment currActive, Cell cellToAdd,<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      MemStoreSizing memstoreSizing) {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    if (shouldFlushInMemory(currActive, cellToAdd, memstoreSizing)) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      if (currActive.setInMemoryFlushed()) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        flushInMemory(currActive);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        if (setInMemoryCompactionFlag()) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>          // The thread is dispatched to do in-memory compaction in the background<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          InMemoryCompactionRunnable runnable = new InMemoryCompactionRunnable();<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          if (LOG.isTraceEnabled()) {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>            LOG.trace("Dispatching the MemStore in-memory flush for store " + store<a name="line.435"></a>
-<span class="sourceLineNo">436</span>                .getColumnFamilyName());<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          }<a name="line.437"></a>
-<span class="sourceLineNo">438</span>          getPool().execute(runnable);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      }<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      return false;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    return true;<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>  // externally visible only for tests<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  // when invoked directly from tests it must be verified that the caller doesn't hold updatesLock,<a name="line.447"></a>
-<span class="sourceLineNo">448</span>  // otherwise there is a deadlock<a name="line.448"></a>
-<span class="sourceLineNo">449</span>  @VisibleForTesting<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  void flushInMemory() {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    MutableSegment currActive = getActive();<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    if(currActive.setInMemoryFlushed()) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      flushInMemory(currActive);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    inMemoryCompaction();<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>  private void flushInMemory(MutableSegment currActive) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    LOG.trace("IN-MEMORY FLUSH: Pushing active segment into compaction pipeline");<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    pushActiveToPipeline(currActive);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>  }<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>  void inMemoryCompaction() {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    // setting the inMemoryCompactionInProgress flag again for the case this method is invoked<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    // directly (only in tests) in the common path setting from true to true is idempotent<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    inMemoryCompactionInProgress.set(true);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    // Used by tests<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    if (!allowCompaction.get()) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      return;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    }<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    try {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      // Speculative compaction execution, may be interrupted if flush is forced while<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      // compaction is in progress<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      if(!compactor.start()) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        setInMemoryCompactionCompleted();<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      }<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    } catch (IOException e) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      LOG.warn("Unable to run in-memory compaction on {}/{}; exception={}",<a name="line.478"></a>
-<span class="sourceLineNo">479</span>          getRegionServices().getRegionInfo().getEncodedName(), getFamilyName(), e);<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>  private Segment getLastSegment() {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    Segment localActive = getActive();<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    Segment tail = pipeline.getTail();<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    return tail == null ? localActive : tail;<a name="line.486"></a>
-<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>  private byte[] getFamilyNameInBytes() {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    return store.getColumnFamilyDescriptor().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>  private ThreadPoolExecutor getPool() {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    return getRegionServices().getInMemoryCompactionPool();<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>  @VisibleForTesting<a name="line.497"></a>
-<span class="sourceLineNo">498</span>  protected boolean shouldFlushInMemory(MutableSegment currActive, Cell cellToAdd,<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      MemStoreSizing memstoreSizing) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    long cellSize = currActive.getCellLength(cellToAdd);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    long segmentDataSize = currActive.getDataSize();<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    while (segmentDataSize + cellSize &lt; inmemoryFlushSize || inWalReplay) {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      // when replaying edits from WAL there is no need in in-memory flush regardless the size<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      // otherwise size below flush threshold try to update atomically<a name="line.504"></a>
-<span class="sourceLineNo">505</span>      if(currActive.compareAndSetDataSize(segmentDataSize, segmentDataSize + cellSize)) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>        if(memstoreSizing != null){<a name="line.506"></a>
-<span class="sourceLineNo">507</span>          memstoreSizing.incMemStoreSize(cellSize, 0, 0);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>        }<a name="line.508"></a>
-<span class="sourceLineNo">509</span>        //enough space for cell - no need to flush<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        return false;<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      }<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      segmentDataSize = currActive.getDataSize();<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    // size above flush threshold<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    return true;<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>  /**<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * The request to cancel the compaction asynchronous task (caused by in-memory flush)<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   * The compaction may still happen if the request was sent too late<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * Non-blocking request<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   */<a name="line.522"></a>
-<span class="sourceLineNo">523</span>  private void stopCompaction() {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    if (inMemoryCompactionInProgress.get()) {<a name="line.524"></a>
-<span class="sourceLineNo">525</span>      compactor.stop();<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>  protected void pushActiveToPipeline(MutableSegment currActive) {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    if (!currActive.isEmpty()) {<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      pipeline.pushHead(currActive);<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      resetActive();<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    }<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  }<a name="line.534"></a>
-<span class="sourceLineNo">535</span><a name="line.535"></a>
-<span class="sourceLineNo">536</span>  private void pushTailToSnapshot() {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    VersionedSegmentsList segments = pipeline.getVersionedTail();<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    pushToSnapshot(segments.getStoreSegments());<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    // In Swap: don't close segments (they are in snapshot now) and don't update the region size<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    pipeline.swap(segments,null,false, false);<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>  private void pushPipelineToSnapshot() {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    int iterationsCnt = 0;<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    boolean done = false;<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    while (!done) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      iterationsCnt++;<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      VersionedSegmentsList segments = pipeline.getVersionedList();<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      pushToSnapshot(segments.getStoreSegments());<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      // swap can return false in case the pipeline was updated by ongoing compaction<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      // and the version increase, the chance of it happenning is very low<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      // In Swap: don't close segments (they are in snapshot now) and don't update the region size<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      done = pipeline.swap(segments, null, false, false);<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      if (iterationsCnt&gt;2) {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>        // practically it is impossible that this loop iterates more than two times<a name="line.555"></a>
-<span class="sourceLineNo">556</span>        // (because the compaction is stopped and none restarts it while in snapshot request),<a name="line.556"></a>
-<span class="sourceLineNo">557</span>        // however stopping here for the case of the infinite loop causing by any error<a name="line.557"></a>
-<span class="sourceLineNo">558</span>        LOG.warn("Multiple unsuccessful attempts to push the compaction pipeline to snapshot," +<a name="line.558"></a>
-<span class="sourceLineNo">559</span>            " while flushing to disk.");<a name="line.559"></a>
-<span class="sourceLineNo">560</span>        this.snapshot = SegmentFactory.instance().createImmutableSegment(getComparator());<a name="line.560"></a>
-<span class="sourceLineNo">561</span>        break;<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>  }<a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>  private void pushToSnapshot(List&lt;ImmutableSegment&gt; segments) {<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    if(segments.isEmpty()) return;<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    if(segments.size() == 1 &amp;&amp; !segments.get(0).isEmpty()) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      this.snapshot = segments.get(0);<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      return;<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    } else { // create composite snapshot<a name="line.571"></a>
-<span class="sourceLineNo">572</span>      this.snapshot =<a name="line.572"></a>
-<span class="sourceLineNo">573</span>          SegmentFactory.instance().createCompositeImmutableSegment(getComparator(), segments);<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><a name="line.576"></a>
-<span class="sourceLineNo">577</span>  private RegionServicesForStores getRegionServices() {<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    return regionServices;<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>  /**<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * The in-memory-flusher thread performs the flush asynchronously.<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * There is at most one thread per memstore instance.<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   * It takes the updatesLock exclusively, pushes active into the pipeline, releases updatesLock<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * and compacts the pipeline.<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   */<a name="line.586"></a>
-<span class="sourceLineNo">587</span>  private class InMemoryCompactionRunnable implements Runnable {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    @Override<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    public void run() {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>      inMemoryCompaction();<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>  @VisibleForTesting<a name="line.594"></a>
-<span class="sourceLineNo">595</span>  boolean isMemStoreFlushingInMemory() {<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    return inMemoryCompactionInProgress.get();<a name="line.596"></a>
-<span class="sourceLineNo">597</span>  }<a name="line.597"></a>
-<span class="sourceLineNo">598</span><a name="line.598"></a>
-<span class="sourceLineNo">599</span>  /**<a name="line.599"></a>
-<span class="sourceLineNo">600</span>   * @param cell Find the row that comes after this one.  If null, we return the<a name="line.600"></a>
-<span class="sourceLineNo">601</span>   *             first.<a name="line.601"></a>
-<span class="sourceLineNo">602</span>   * @return Next row or null if none found.<a name="line.602"></a>
-<span class="sourceLineNo">603</span>   */<a name="line.603"></a>
-<span class="sourceLineNo">604</span>  Cell getNextRow(final Cell cell) {<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    Cell lowest = null;<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    List&lt;Segment&gt; segments = getSegments();<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    for (Segment segment : segments) {<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      if (lowest == null) {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>        lowest = getNextRow(cell, segment.getCellSet());<a name="line.609"></a>
-<span class="sourceLineNo">610</span>      } else {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>        lowest = getLowest(lowest, getNextRow(cell, segment.getCellSet()));<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>    return lowest;<a name="line.614"></a>
-<span class="sourceLineNo">615</span>  }<a name="line.615"></a>
-<span class="sourceLineNo">616</span><a name="line.616"></a>
-<span class="sourceLineNo">617</span>  @VisibleForTesting<a name="line.617"></a>
-<span class="sourceLineNo">618</span>  long getInmemoryFlushSize() {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    return inmemoryFlushSize;<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>  // debug method<a name="line.622"></a>
-<span class="sourceLineNo">623</span>  public void debug() {<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    String msg = "active size=" + getActive().getDataSize();<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    msg += " allow compaction is "+ (allowCompaction.get() ? "true" : "false");<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    msg += " inMemoryCompactionInProgress is "+ (inMemoryCompactionInProgress.get() ? "true" :<a name="line.626"></a>
-<span class="sourceLineNo">627</span>        "false");<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    LOG.debug(msg);<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>}<a name="line.631"></a>
+<span class="sourceLineNo">243</span>  public void setInMemoryCompactionCompleted() {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    inMemoryCompactionInProgress.set(false);<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>  protected boolean setInMemoryCompactionFlag() {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    return inMemoryCompactionInProgress.compareAndSet(false, 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>  @Override<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  protected long keySize() {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    // Need to consider dataSize/keySize of all segments in pipeline and active<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    long keySize = getActive().getDataSize();<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    for (Segment segment : this.pipeline.getSegments()) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      keySize += segment.getDataSize();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    return keySize;<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>  @Override<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  protected long heapSize() {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    // Need to consider heapOverhead of all segments in pipeline and active<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    long h = getActive().getHeapSize();<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    for (Segment segment : this.pipeline.getSegments()) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      h += segment.getHeapSize();<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    return h;<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>  @Override<a name="line.271"></a>
+<span class="sourceLineNo">272</span>  public void updateLowestUnflushedSequenceIdInWAL(boolean onlyIfGreater) {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    long minSequenceId = pipeline.getMinSequenceId();<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    if(minSequenceId != Long.MAX_VALUE) {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      byte[] encodedRegionName = getRegionServices().getRegionInfo().getEncodedNameAsBytes();<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      byte[] familyName = getFamilyNameInBytes();<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      WAL WAL = getRegionServices().getWAL();<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      if (WAL != null) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        WAL.updateStore(encodedRegionName, familyName, minSequenceId, onlyIfGreater);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>  }<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  /**<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   * This message intends to inform the MemStore that next coming updates<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * are going to be part of the replaying edits from WAL<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 void startReplayingFromWAL() {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    inWalReplay = true;<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>   * This message intends to inform the MemStore that the replaying edits from WAL<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   * are done<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   */<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  @Override<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public void stopReplayingFromWAL() {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    inWalReplay = false;<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>   * Issue any synchronization and test needed before applying the update<a name="line.303"></a>
+<span class="sourceLineNo">304</span>   * For compacting memstore this means checking the update can increase the size without<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   * overflow<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   * @param currentActive the segment to be updated<a name="line.306"></a>
+<span class="sourceLineNo">307</span>   * @param cell the cell to be added<a name="line.307"></a>
+<span class="sourceLineNo">308</span>   * @param memstoreSizing object to accumulate region size changes<a name="line.308"></a>
+<span class="sourceLineNo">309</span>   * @return true iff can proceed with applying the update<a name="line.309"></a>
+<span class="sourceLineNo">310</span>   */<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  @Override protected boolean preUpdate(MutableSegment currentActive, Cell cell,<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      MemStoreSizing memstoreSizing) {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    if(currentActive.sharedLock()) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      if (checkAndAddToActiveSize(currentActive, cell, memstoreSizing)) {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        return true;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      currentActive.sharedUnlock();<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    }<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    return false;<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>  @Override protected void postUpdate(MutableSegment currentActive) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    currentActive.sharedUnlock();<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
+<span class="sourceLineNo">325</span><a name="line.325"></a>
+<span class="sourceLineNo">326</span>  @Override protected boolean sizeAddedPreOperation() {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    return true;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  }<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>  // the getSegments() method is used for tests only<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  @VisibleForTesting<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  @Override<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  protected List&lt;Segment&gt; getSegments() {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    List&lt;? extends Segment&gt; pipelineList = pipeline.getSegments();<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    List&lt;Segment&gt; list = new ArrayList&lt;&gt;(pipelineList.size() + 2);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    list.add(getActive());<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    list.addAll(pipelineList);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    list.addAll(snapshot.getAllSegments());<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>    return list;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  }<a name="line.341"></a>
+<span class="sourceLineNo">342</span><a name="line.342"></a>
+<span class="sourceLineNo">343</span>  // the following three methods allow to manipulate the settings of composite snapshot<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  public void setCompositeSnapshot(boolean useCompositeSnapshot) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    this.compositeSnapshot = useCompositeSnapshot;<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>  public boolean swapCompactedSegments(VersionedSegmentsList versionedList, ImmutableSegment result,<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      boolean merge) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // last true stands for updating the region size<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    return pipeline.swap(versionedList, result, !merge, true);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  /**<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * @param requesterVersion The caller must hold the VersionedList of the pipeline<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   *           with version taken earlier. This version must be passed as a parameter here.<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   *           The flattening happens only if versions match.<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   */<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  public void flattenOneSegment(long requesterVersion,  MemStoreCompactionStrategy.Action action) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    pipeline.flattenOneSegment(requesterVersion, indexType, action);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  }<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  // setter is used only for testability<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  @VisibleForTesting<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  void setIndexType(IndexType type) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    indexType = type;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    // Because this functionality is for testing only and tests are setting in-memory flush size<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    // according to their need, there is no setting of in-memory flush size, here.<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    // If it is needed, please change in-memory flush size explicitly<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  public IndexType getIndexType() {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    return indexType;<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>  public boolean hasImmutableSegments() {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    return !pipeline.isEmpty();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  }<a name="line.378"></a>
+<span class="sourceLineNo">379</span><a name="line.379"></a>
+<span class="sourceLineNo">380</span>  public VersionedSegmentsList getImmutableSegments() {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    return pipeline.getVersionedList();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
+<span class="sourceLineNo">383</span><a name="line.383"></a>
+<span class="sourceLineNo">384</span>  public long getSmallestReadPoint() {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    return store.getSmallestReadPoint();<a name="line.385"></a>
+<span class="sourceLineNo">386</span>  }<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  public HStore getStore() {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    return store;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  }<a name="line.390"></a>
+<span class="sourceLineNo">391</span><a name="line.391"></a>
+<span class="sourceLineNo">392</span>  public String getFamilyName() {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    return Bytes.toString(getFamilyNameInBytes());<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>  @Override<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  public List&lt;KeyValueScanner&gt; getScanners(long readPt) throws IOException {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    MutableSegment activeTmp = getActive();<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    List&lt;? extends Segment&gt; pipelineList = pipeline.getSegments();<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    List&lt;? extends Segment&gt; snapshotList = snapshot.getAllSegments();<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    long numberOfSegments = 1L + pipelineList.size() + snapshotList.size();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    // The list of elements in pipeline + the active element + the snapshot segment<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    List&lt;KeyValueScanner&gt; list = createList((int) numberOfSegments);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    addToScanners(activeTmp, readPt, list);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    addToScanners(pipelineList, readPt, list);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    addToScanners(snapshotList, readPt, list);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    return list;<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>  @VisibleForTesting<a name="line.410"></a>
+<span class="sourceLineNo">411</span>  protected List&lt;KeyValueScanner&gt; createList(int capacity) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    return new ArrayList&lt;&gt;(capacity);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  }<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span>  /**<a name="line.415"></a>
+<span class="sourceLineNo">416</span>   * Check whether anything need to be done based on the current active set size.<a name="line.416"></a>
+<span class="so

<TRUNCATED>

[42/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.html
index 1830296..07cb760 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":9,"i42":9,"i43":9,"i44":9,"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":9,"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":9,"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":9,"i108":10,"i109":10
 ,"i110":10,"i111":10,"i112":10,"i113":10,"i114":41,"i115":41,"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":9,"i141":10,"i142":10,"i143":10,"i144":10,"i145":10,"i146":10,"i147":10,"i148":10,"i149":42,"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":9,"i172":10,"i173":10,"i174":10,"i175":10,"i176":10,"i177":10,"i178":10,"i179":10,"i180":9,"i181":10,"i182":10,"i183":9,"i184":9,"i185":9,"i186":9,"i187":9,"i188":9,"i189":9,"i190":9,"i191":9,"i192":9,"i193":10,"i194":10,"i195":10,"i196":10,"i197":10,"i198":10,"i199":10,"i200":10,"i201":10,"i202":9,"i203":10,"i204":10,"i205":10,"i206":10,"i207":10,"i208":10,"i209":10,"i210":10,
 "i211":10,"i212":10,"i213":10,"i214":10,"i215":10,"i216":10,"i217":10,"i218":10,"i219":10,"i220":10,"i221":10,"i222":10,"i223":10,"i224":10,"i225":10,"i226":10,"i227":10,"i228":10,"i229":10,"i230":10,"i231":10,"i232":10,"i233":9,"i234":9,"i235":10,"i236":10,"i237":10,"i238":10,"i239":10,"i240":10,"i241":10,"i242":10,"i243":10,"i244":10,"i245":10,"i246":10,"i247":9,"i248":10,"i249":10,"i250":10,"i251":10,"i252":10,"i253":10,"i254":10,"i255":9,"i256":10,"i257":10,"i258":10,"i259":10,"i260":10,"i261":9,"i262":10,"i263":10,"i264":10,"i265":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,"i38":10,"i39":10,"i40":10,"i41":9,"i42":9,"i43":9,"i44":9,"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":9,"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":9,"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":9,"i109":10
 ,"i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":41,"i116":41,"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":9,"i142":10,"i143":10,"i144":10,"i145":10,"i146":10,"i147":10,"i148":10,"i149":10,"i150":42,"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":9,"i173":10,"i174":10,"i175":10,"i176":10,"i177":10,"i178":10,"i179":10,"i180":10,"i181":9,"i182":10,"i183":10,"i184":9,"i185":9,"i186":9,"i187":9,"i188":9,"i189":9,"i190":9,"i191":9,"i192":9,"i193":9,"i194":10,"i195":10,"i196":10,"i197":10,"i198":10,"i199":10,"i200":10,"i201":10,"i202":10,"i203":9,"i204":10,"i205":10,"i206":10,"i207":10,"i208":10,"i209":10,"i210":10,
 "i211":10,"i212":10,"i213":10,"i214":10,"i215":10,"i216":10,"i217":10,"i218":10,"i219":10,"i220":10,"i221":10,"i222":10,"i223":10,"i224":10,"i225":10,"i226":10,"i227":10,"i228":10,"i229":10,"i230":10,"i231":10,"i232":10,"i233":10,"i234":9,"i235":9,"i236":10,"i237":10,"i238":10,"i239":10,"i240":10,"i241":10,"i242":10,"i243":10,"i244":10,"i245":10,"i246":10,"i247":10,"i248":9,"i249":10,"i250":10,"i251":10,"i252":10,"i253":10,"i254":10,"i255":10,"i256":9,"i257":10,"i258":10,"i259":10,"i260":10,"i261":10,"i262":9,"i263":10,"i264":10,"i265":10,"i266":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";
@@ -1129,6 +1129,12 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
            long&nbsp;nonce)</code>&nbsp;</td>
 </tr>
 <tr id="i65" 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/HRegion.html#dropMemStoreContents--">dropMemStoreContents</a></span>()</code>
+<div class="block">Be careful, this method will drop all data in the memstore of this region.</div>
+</td>
+</tr>
+<tr id="i66" class="altColor">
 <td class="colFirst"><code>private <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/HRegion.html#dropMemStoreContentsForSeqId-long-org.apache.hadoop.hbase.regionserver.HStore-">dropMemStoreContentsForSeqId</a></span>(long&nbsp;seqId,
                             <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store)</code>
@@ -1136,17 +1142,17 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
  if the memstore edits have seqNums smaller than the given seq id</div>
 </td>
 </tr>
-<tr id="i66" class="altColor">
+<tr id="i67" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#dropPrepareFlushIfPossible--">dropPrepareFlushIfPossible</a></span>()</code>
 <div class="block">If all stores ended up dropping their snapshots, we can safely drop the prepareFlushResult</div>
 </td>
 </tr>
-<tr id="i67" class="rowColor">
+<tr id="i68" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#equals-java.lang.Object-">equals</a></span>(<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>&nbsp;o)</code>&nbsp;</td>
 </tr>
-<tr id="i68" class="altColor">
+<tr id="i69" class="rowColor">
 <td class="colFirst"><code>com.google.protobuf.Message</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#execService-com.google.protobuf.RpcController-org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceCall-">execService</a></span>(com.google.protobuf.RpcController&nbsp;controller,
            org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceCall&nbsp;call)</code>
@@ -1154,13 +1160,13 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
  the registered protocol handlers.</div>
 </td>
 </tr>
-<tr id="i69" class="rowColor">
+<tr id="i70" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html" title="interface in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#flush-boolean-">flush</a></span>(boolean&nbsp;force)</code>
 <div class="block">Flush the cache.</div>
 </td>
 </tr>
-<tr id="i70" class="altColor">
+<tr id="i71" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.FlushResultImpl</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#flushcache-boolean-boolean-org.apache.hadoop.hbase.regionserver.FlushLifeCycleTracker-">flushcache</a></span>(boolean&nbsp;forceFlushAllStores,
           boolean&nbsp;writeFlushRequestWalMarker,
@@ -1168,31 +1174,31 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <div class="block">Flush the cache.</div>
 </td>
 </tr>
-<tr id="i71" class="rowColor">
+<tr id="i72" 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/HRegion.html#forceSplit-byte:A-">forceSplit</a></span>(byte[]&nbsp;sp)</code>&nbsp;</td>
 </tr>
-<tr id="i72" class="altColor">
+<tr id="i73" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#get-org.apache.hadoop.hbase.client.Get-">get</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&nbsp;get)</code>
 <div class="block">Do a get based on the get parameter.</div>
 </td>
 </tr>
-<tr id="i73" class="rowColor">
+<tr id="i74" 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/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/HRegion.html#get-org.apache.hadoop.hbase.client.Get-boolean-">get</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&nbsp;get,
    boolean&nbsp;withCoprocessor)</code>
 <div class="block">Do a get based on the get parameter.</div>
 </td>
 </tr>
-<tr id="i74" class="altColor">
+<tr id="i75" 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/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/HRegion.html#get-org.apache.hadoop.hbase.client.Get-boolean-long-long-">get</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&nbsp;get,
    boolean&nbsp;withCoprocessor,
    long&nbsp;nonceGroup,
    long&nbsp;nonce)</code>&nbsp;</td>
 </tr>
-<tr id="i75" class="rowColor">
+<tr id="i76" 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/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/HRegion.html#get-org.apache.hadoop.hbase.client.Mutation-org.apache.hadoop.hbase.regionserver.HStore-java.util.List-org.apache.hadoop.hbase.client.IsolationLevel-org.apache.hadoop.hbase.io.TimeRange-">get</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;mutation,
    <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
@@ -1202,172 +1208,172 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <div class="block">Do a specific Get on passed <code>columnFamily</code> and column qualifiers.</div>
 </td>
 </tr>
-<tr id="i76" class="altColor">
+<tr id="i77" class="rowColor">
 <td class="colFirst"><code>(package private) org.apache.hadoop.conf.Configuration</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getBaseConf--">getBaseConf</a></span>()</code>
 <div class="block">A split takes the config from the parent region & passes it to the daughter
  region's constructor.</div>
 </td>
 </tr>
-<tr id="i77" class="rowColor">
+<tr id="i78" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getBlockedRequestsCount--">getBlockedRequestsCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i78" class="altColor">
+<tr id="i79" 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/HRegion.html#getCellComparator--">getCellComparator</a></span>()</code>
 <div class="block">The comparator to be used with the region</div>
 </td>
 </tr>
-<tr id="i79" class="rowColor">
+<tr id="i80" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getCheckAndMutateChecksFailed--">getCheckAndMutateChecksFailed</a></span>()</code>&nbsp;</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/HRegion.html#getCheckAndMutateChecksPassed--">getCheckAndMutateChecksPassed</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i81" class="rowColor">
+<tr id="i82" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client">CompactionState</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getCompactionState--">getCompactionState</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i82" class="altColor">
+<tr id="i83" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getCompactPriority--">getCompactPriority</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i83" class="rowColor">
+<tr id="i84" 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/HRegion.html#getCoprocessorHost--">getCoprocessorHost</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i84" class="altColor">
+<tr id="i85" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getCpRequestsCount--">getCpRequestsCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i85" class="rowColor">
+<tr id="i86" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getDataInMemoryWithoutWAL--">getDataInMemoryWithoutWAL</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i86" class="altColor">
+<tr id="i87" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getEarliestFlushTimeForAllStores--">getEarliestFlushTimeForAllStores</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i87" class="rowColor">
+<tr id="i88" class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getEffectiveDurability-org.apache.hadoop.hbase.client.Durability-">getEffectiveDurability</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;d)</code>
 <div class="block">Returns effective durability from the passed durability and
  the table descriptor.</div>
 </td>
 </tr>
-<tr id="i88" class="altColor">
+<tr id="i89" class="rowColor">
 <td class="colFirst"><code>(package private) byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getExplicitSplitPoint--">getExplicitSplitPoint</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i89" class="rowColor">
+<tr id="i90" class="altColor">
 <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/HRegion.html#getFilesystem--">getFilesystem</a></span>()</code>&nbsp;</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/HRegion.html#getFilteredReadRequestsCount--">getFilteredReadRequestsCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i91" class="rowColor">
+<tr id="i92" 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/HRegion.html#getHDFSBlocksDistribution--">getHDFSBlocksDistribution</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i92" class="altColor">
+<tr id="i93" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.RegionLoadStats</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getLoadStatistics--">getLoadStatistics</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i93" class="rowColor">
+<tr id="i94" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentHashMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentHashMap</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/HashedBytes.html" title="class in org.apache.hadoop.hbase.util">HashedBytes</a>,<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockContext</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getLockedRows--">getLockedRows</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i94" class="altColor">
+<tr id="i95" class="rowColor">
 <td class="colFirst"><code>private static long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getLongValue-org.apache.hadoop.hbase.Cell-">getLongValue</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>&nbsp;</td>
 </tr>
-<tr id="i95" class="rowColor">
+<tr id="i96" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getMaxFlushedSeqId--">getMaxFlushedSeqId</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i96" class="altColor">
+<tr id="i97" 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;byte[],<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;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getMaxStoreSeqId--">getMaxStoreSeqId</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i97" class="rowColor">
+<tr id="i98" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getMemStoreDataSize--">getMemStoreDataSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i98" class="altColor">
+<tr id="i99" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getMemStoreFlushSize--">getMemStoreFlushSize</a></span>()</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/HRegion.html#getMemStoreHeapSize--">getMemStoreHeapSize</a></span>()</code>&nbsp;</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/HRegion.html#getMemStoreOffHeapSize--">getMemStoreOffHeapSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i101" class="rowColor">
+<tr id="i102" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegion.html" title="class in org.apache.hadoop.hbase.regionserver">MetricsRegion</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getMetrics--">getMetrics</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i102" class="altColor">
+<tr id="i103" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getMVCC--">getMVCC</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i103" class="rowColor">
+<tr id="i104" class="altColor">
 <td class="colFirst"><code>protected long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getNextSequenceId-org.apache.hadoop.hbase.wal.WAL-">getNextSequenceId</a></span>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal)</code>
 <div class="block">Method to safely get the next sequence number.</div>
 </td>
 </tr>
-<tr id="i104" class="altColor">
+<tr id="i105" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getNumMutationsWithoutWAL--">getNumMutationsWithoutWAL</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i105" class="rowColor">
+<tr id="i106" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getOldestHfileTs-boolean-">getOldestHfileTs</a></span>(boolean&nbsp;majorCompactionOnly)</code>
 <div class="block">This can be used to determine the last time all files of this region were major compacted.</div>
 </td>
 </tr>
-<tr id="i106" class="altColor">
+<tr id="i107" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getOldestSeqIdOfStore-byte:A-">getOldestSeqIdOfStore</a></span>(byte[]&nbsp;familyName)</code>&nbsp;</td>
 </tr>
-<tr id="i107" class="rowColor">
+<tr id="i108" class="altColor">
 <td class="colFirst"><code>(package private) static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent">ThreadPoolExecutor</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getOpenAndCloseThreadPool-int-java.lang.String-">getOpenAndCloseThreadPool</a></span>(int&nbsp;maxThreads,
                          <a href="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;threadNamePrefix)</code>&nbsp;</td>
 </tr>
-<tr id="i108" class="altColor">
+<tr id="i109" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getOpenSeqNum--">getOpenSeqNum</a></span>()</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/HRegion.PrepareFlushResult.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.PrepareFlushResult</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getPrepareFlushResult--">getPrepareFlushResult</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i110" class="altColor">
+<tr id="i111" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getReadLockCount--">getReadLockCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i111" class="rowColor">
+<tr id="i112" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getReadPoint--">getReadPoint</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i112" class="altColor">
+<tr id="i113" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getReadPoint-org.apache.hadoop.hbase.client.IsolationLevel-">getReadPoint</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client">IsolationLevel</a>&nbsp;isolationLevel)</code>&nbsp;</td>
 </tr>
-<tr id="i113" class="rowColor">
+<tr id="i114" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getReadRequestsCount--">getReadRequestsCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i114" class="altColor">
+<tr id="i115" 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/HRegion.html#getRegionDir-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.client.RegionInfo-">getRegionDir</a></span>(org.apache.hadoop.fs.Path&nbsp;rootdir,
             <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;info)</code>
@@ -1376,7 +1382,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 </div>
 </td>
 </tr>
-<tr id="i115" class="rowColor">
+<tr id="i116" 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/HRegion.html#getRegionDir-org.apache.hadoop.fs.Path-java.lang.String-">getRegionDir</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;name)</code>
@@ -1385,53 +1391,53 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 </div>
 </td>
 </tr>
-<tr id="i116" class="altColor">
+<tr id="i117" 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/HRegion.html#getRegionFileSystem--">getRegionFileSystem</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i117" class="rowColor">
+<tr id="i118" 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/HRegion.html#getRegionInfo--">getRegionInfo</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i118" class="altColor">
+<tr id="i119" class="rowColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionServerServices</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getRegionServerServices--">getRegionServerServices</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i119" class="rowColor">
+<tr id="i120" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getRegionServicesForStores--">getRegionServicesForStores</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i120" class="altColor">
+<tr id="i121" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;byte[],<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;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getReplicationScope--">getReplicationScope</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i121" class="rowColor">
+<tr id="i122" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getRowLock-byte:A-">getRowLock</a></span>(byte[]&nbsp;row)</code>
 <div class="block">Get an exclusive ( write lock ) lock on a given row.</div>
 </td>
 </tr>
-<tr id="i122" class="altColor">
+<tr id="i123" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getRowLock-byte:A-boolean-">getRowLock</a></span>(byte[]&nbsp;row,
           boolean&nbsp;readLock)</code>
 <div class="block">Get a row lock for the specified row.</div>
 </td>
 </tr>
-<tr id="i123" class="rowColor">
+<tr id="i124" class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getRowLockInternal-byte:A-boolean-org.apache.hadoop.hbase.regionserver.Region.RowLock-">getRowLockInternal</a></span>(byte[]&nbsp;row,
                   boolean&nbsp;readLock,
                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&nbsp;prevRowLock)</code>&nbsp;</td>
 </tr>
-<tr id="i124" class="altColor">
+<tr id="i125" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RegionScannerImpl</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getScanner-org.apache.hadoop.hbase.client.Scan-">getScanner</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)</code>
 <div class="block">Return an iterator that scans over the HRegion, returning the indicated
  columns and rows specified by the <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client"><code>Scan</code></a>.</div>
 </td>
 </tr>
-<tr id="i125" class="rowColor">
+<tr id="i126" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RegionScannerImpl</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getScanner-org.apache.hadoop.hbase.client.Scan-java.util.List-">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/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;additionalScanners)</code>
@@ -1439,120 +1445,120 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
  specified by the <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client"><code>Scan</code></a>.</div>
 </td>
 </tr>
-<tr id="i126" class="altColor">
+<tr id="i127" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RegionScannerImpl</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getScanner-org.apache.hadoop.hbase.client.Scan-java.util.List-long-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/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;additionalScanners,
           long&nbsp;nonceGroup,
           long&nbsp;nonce)</code>&nbsp;</td>
 </tr>
-<tr id="i127" class="rowColor">
+<tr id="i128" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getSmallestReadPoint--">getSmallestReadPoint</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i128" class="altColor">
+<tr id="i129" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">RegionSplitPolicy</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getSplitPolicy--">getSplitPolicy</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i129" class="rowColor">
+<tr id="i130" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getStore-byte:A-">getStore</a></span>(byte[]&nbsp;column)</code>
 <div class="block">Return the Store for the given family</div>
 </td>
 </tr>
-<tr id="i130" class="altColor">
+<tr id="i131" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getStore-org.apache.hadoop.hbase.Cell-">getStore</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>
 <div class="block">Return HStore instance.</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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getStoreFileList-byte:A:A-">getStoreFileList</a></span>(byte[][]&nbsp;columns)</code>&nbsp;</td>
 </tr>
-<tr id="i132" class="altColor">
+<tr id="i133" class="rowColor">
 <td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent">ThreadPoolExecutor</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getStoreFileOpenAndCloseThreadPool-java.lang.String-">getStoreFileOpenAndCloseThreadPool</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;threadNamePrefix)</code>&nbsp;</td>
 </tr>
-<tr id="i133" class="rowColor">
+<tr id="i134" class="altColor">
 <td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;byte[],<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;&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getStoreFiles--">getStoreFiles</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i134" class="altColor">
+<tr id="i135" class="rowColor">
 <td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent">ThreadPoolExecutor</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getStoreOpenAndCloseThreadPool-java.lang.String-">getStoreOpenAndCloseThreadPool</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;threadNamePrefix)</code>&nbsp;</td>
 </tr>
-<tr id="i135" class="rowColor">
+<tr id="i136" 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/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getStores--">getStores</a></span>()</code>
 <div class="block">Return the list of Stores managed by this region</div>
 </td>
 </tr>
-<tr id="i136" class="altColor">
+<tr id="i137" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getTableDescriptor--">getTableDescriptor</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i137" class="rowColor">
+<tr id="i138" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getWAL--">getWAL</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i138" class="altColor">
+<tr id="i139" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getWriteRequestsCount--">getWriteRequestsCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i139" class="rowColor">
+<tr id="i140" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#hashCode--">hashCode</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i140" class="altColor">
+<tr id="i141" class="rowColor">
 <td class="colFirst"><code>private static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#hasMultipleColumnFamilies-java.util.Collection-">hasMultipleColumnFamilies</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/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&gt;&nbsp;familyPaths)</code>
 <div class="block">Determines whether multiple column families are present
  Precondition: familyPaths is not null</div>
 </td>
 </tr>
-<tr id="i141" class="rowColor">
+<tr id="i142" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#hasReferences--">hasReferences</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i142" class="altColor">
+<tr id="i143" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#heapSize--">heapSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i143" class="rowColor">
+<tr id="i144" 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/HRegion.html#incMemStoreSize-long-long-long-">incMemStoreSize</a></span>(long&nbsp;dataSizeDelta,
                long&nbsp;heapSizeDelta,
                long&nbsp;offHeapSizeDelta)</code>&nbsp;</td>
 </tr>
-<tr id="i144" class="altColor">
+<tr id="i145" 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/HRegion.html#incMemStoreSize-org.apache.hadoop.hbase.regionserver.MemStoreSize-">incMemStoreSize</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;mss)</code>
 <div class="block">Increase the size of mem store in this region and the size of global mem
  store</div>
 </td>
 </tr>
-<tr id="i145" class="rowColor">
+<tr id="i146" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#increment-org.apache.hadoop.hbase.client.Increment-">increment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Increment.html" title="class in org.apache.hadoop.hbase.client">Increment</a>&nbsp;increment)</code>
 <div class="block">Perform one or more increment operations on a row.</div>
 </td>
 </tr>
-<tr id="i146" class="altColor">
+<tr id="i147" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#increment-org.apache.hadoop.hbase.client.Increment-long-long-">increment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Increment.html" title="class in org.apache.hadoop.hbase.client">Increment</a>&nbsp;mutation,
          long&nbsp;nonceGroup,
          long&nbsp;nonce)</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/regionserver/HRegion.html#incrementCompactionsQueuedCount--">incrementCompactionsQueuedCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i148" class="altColor">
+<tr id="i149" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#incrementFlushesQueuedCount--">incrementFlushesQueuedCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i149" class="rowColor">
+<tr id="i150" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#initialize--">initialize</a></span>()</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -1560,45 +1566,45 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 </div>
 </td>
 </tr>
-<tr id="i150" class="altColor">
-<td class="colFirst"><code>private long</code></td>
+<tr id="i151" class="rowColor">
+<td class="colFirst"><code>(package private) long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#initialize-org.apache.hadoop.hbase.util.CancelableProgressable-">initialize</a></span>(<a href="../../../../../org/apache/hadoop/hbase/util/CancelableProgressable.html" title="interface in org.apache.hadoop.hbase.util">CancelableProgressable</a>&nbsp;reporter)</code>
 <div class="block">Initialize this region.</div>
 </td>
 </tr>
-<tr id="i151" class="rowColor">
+<tr id="i152" class="altColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#initializeRegionInternals-org.apache.hadoop.hbase.util.CancelableProgressable-org.apache.hadoop.hbase.monitoring.MonitoredTask-">initializeRegionInternals</a></span>(<a href="../../../../../org/apache/hadoop/hbase/util/CancelableProgressable.html" title="interface in org.apache.hadoop.hbase.util">CancelableProgressable</a>&nbsp;reporter,
                          <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="i152" class="altColor">
+<tr id="i153" class="rowColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#initializeStores-org.apache.hadoop.hbase.util.CancelableProgressable-org.apache.hadoop.hbase.monitoring.MonitoredTask-">initializeStores</a></span>(<a href="../../../../../org/apache/hadoop/hbase/util/CancelableProgressable.html" title="interface in org.apache.hadoop.hbase.util">CancelableProgressable</a>&nbsp;reporter,
                 <a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)</code>
 <div class="block">Open all Stores.</div>
 </td>
 </tr>
-<tr id="i153" class="rowColor">
+<tr id="i154" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#initializeWarmup-org.apache.hadoop.hbase.util.CancelableProgressable-">initializeWarmup</a></span>(<a href="../../../../../org/apache/hadoop/hbase/util/CancelableProgressable.html" title="interface in org.apache.hadoop.hbase.util">CancelableProgressable</a>&nbsp;reporter)</code>&nbsp;</td>
 </tr>
-<tr id="i154" class="altColor">
+<tr id="i155" class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#instantiateHStore-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">instantiateHStore</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="i155" class="rowColor">
+<tr id="i156" class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionScanner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#instantiateRegionScanner-org.apache.hadoop.hbase.client.Scan-java.util.List-">instantiateRegionScanner</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/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;additionalScanners)</code>&nbsp;</td>
 </tr>
-<tr id="i156" class="altColor">
+<tr id="i157" class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RegionScannerImpl</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#instantiateRegionScanner-org.apache.hadoop.hbase.client.Scan-java.util.List-long-long-">instantiateRegionScanner</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/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;additionalScanners,
                         long&nbsp;nonceGroup,
                         long&nbsp;nonce)</code>&nbsp;</td>
 </tr>
-<tr id="i157" class="rowColor">
+<tr id="i158" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.FlushResultImpl</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#internalFlushcache-java.util.Collection-org.apache.hadoop.hbase.monitoring.MonitoredTask-boolean-org.apache.hadoop.hbase.regionserver.FlushLifeCycleTracker-">internalFlushcache</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/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&gt;&nbsp;storesToFlush,
                   <a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status,
@@ -1607,13 +1613,13 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <div class="block">Flushing given stores.</div>
 </td>
 </tr>
-<tr id="i158" class="altColor">
+<tr id="i159" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html" title="interface in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#internalFlushcache-org.apache.hadoop.hbase.monitoring.MonitoredTask-">internalFlushcache</a></span>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)</code>
 <div class="block">Flushing all stores.</div>
 </td>
 </tr>
-<tr id="i159" class="rowColor">
+<tr id="i160" class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.FlushResultImpl</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#internalFlushcache-org.apache.hadoop.hbase.wal.WAL-long-java.util.Collection-org.apache.hadoop.hbase.monitoring.MonitoredTask-boolean-org.apache.hadoop.hbase.regionserver.FlushLifeCycleTracker-">internalFlushcache</a></span>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
                   long&nbsp;myseqid,
@@ -1624,14 +1630,14 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <div class="block">Flush the memstore.</div>
 </td>
 </tr>
-<tr id="i160" class="altColor">
+<tr id="i161" class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.FlushResultImpl</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#internalFlushCacheAndCommit-org.apache.hadoop.hbase.wal.WAL-org.apache.hadoop.hbase.monitoring.MonitoredTask-org.apache.hadoop.hbase.regionserver.HRegion.PrepareFlushResult-java.util.Collection-">internalFlushCacheAndCommit</a></span>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
                            <a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status,
                            <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.PrepareFlushResult</a>&nbsp;prepareResult,
                            <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/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&gt;&nbsp;storesToFlush)</code>&nbsp;</td>
 </tr>
-<tr id="i161" class="rowColor">
+<tr id="i162" class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.PrepareFlushResult</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#internalPrepareFlushCache-org.apache.hadoop.hbase.wal.WAL-long-java.util.Collection-org.apache.hadoop.hbase.monitoring.MonitoredTask-boolean-org.apache.hadoop.hbase.regionserver.FlushLifeCycleTracker-">internalPrepareFlushCache</a></span>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
                          long&nbsp;myseqid,
@@ -1640,86 +1646,86 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
                          boolean&nbsp;writeFlushWalMarker,
                          <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="i162" class="altColor">
+<tr id="i163" class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#isAllFamilies-java.util.Collection-">isAllFamilies</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/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&gt;&nbsp;families)</code>&nbsp;</td>
 </tr>
-<tr id="i163" class="rowColor">
+<tr id="i164" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#isAvailable--">isAvailable</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i164" class="altColor">
+<tr id="i165" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#isClosed--">isClosed</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i165" class="rowColor">
+<tr id="i166" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#isClosing--">isClosing</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i166" class="altColor">
+<tr id="i167" class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#isFlushSize-org.apache.hadoop.hbase.regionserver.MemStoreSize-">isFlushSize</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;size)</code>&nbsp;</td>
 </tr>
-<tr id="i167" class="rowColor">
+<tr id="i168" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#isLoadingCfsOnDemandDefault--">isLoadingCfsOnDemandDefault</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i168" class="altColor">
+<tr id="i169" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#isMergeable--">isMergeable</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i169" class="rowColor">
+<tr id="i170" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#isReadOnly--">isReadOnly</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i170" class="altColor">
+<tr id="i171" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#isSplittable--">isSplittable</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i171" class="rowColor">
+<tr id="i172" class="altColor">
 <td class="colFirst"><code>private static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#isZeroLengthThenDelete-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-">isZeroLengthThenDelete</a></span>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
                       org.apache.hadoop.fs.Path&nbsp;p)</code>&nbsp;</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/regionserver/HRegion.html#lock-java.util.concurrent.locks.Lock-">lock</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a>&nbsp;lock)</code>&nbsp;</td>
 </tr>
-<tr id="i173" class="rowColor">
+<tr id="i174" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#lock-java.util.concurrent.locks.Lock-int-">lock</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a>&nbsp;lock,
     int&nbsp;multiplier)</code>
 <div class="block">Try to acquire a lock.</div>
 </td>
 </tr>
-<tr id="i174" class="altColor">
+<tr id="i175" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#logFatLineOnFlush-java.util.Collection-long-">logFatLineOnFlush</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/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&gt;&nbsp;storesToFlush,
                  long&nbsp;sequenceId)</code>
 <div class="block">Utility method broken out of internalPrepareFlushCache so that method is smaller.</div>
 </td>
 </tr>
-<tr id="i175" class="rowColor">
+<tr id="i176" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#logRegionFiles--">logRegionFiles</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i176" class="altColor">
+<tr id="i177" class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#matches-org.apache.hadoop.hbase.CompareOperator-int-">matches</a></span>(<a href="../../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase">CompareOperator</a>&nbsp;op,
        int&nbsp;compareResult)</code>&nbsp;</td>
 </tr>
-<tr id="i177" class="rowColor">
+<tr id="i178" 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/HRegion.html#metricsUpdateForGet-java.util.List-long-">metricsUpdateForGet</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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;results,
                    long&nbsp;before)</code>&nbsp;</td>
 </tr>
-<tr id="i178" class="altColor">
+<tr id="i179" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#mutateRow-org.apache.hadoop.hbase.client.RowMutations-">mutateRow</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client">RowMutations</a>&nbsp;rm)</code>
 <div class="block">Performs multiple mutations atomically on a single row.</div>
 </td>
 </tr>
-<tr id="i179" class="rowColor">
+<tr id="i180" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#mutateRowsWithLocks-java.util.Collection-java.util.Collection-long-long-">mutateRowsWithLocks</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/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;mutations,
                    <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;byte[]&gt;&nbsp;rowsToLock,
@@ -1728,7 +1734,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <div class="block">Perform atomic (all or none) mutations within the region.</div>
 </td>
 </tr>
-<tr id="i180" class="altColor">
+<tr id="i181" class="rowColor">
 <td class="colFirst"><code>(package private) static <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/HRegion.html#newHRegion-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.wal.WAL-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.regionserver.RegionServerServices-">newHRegion</a></span>(org.apache.hadoop.fs.Path&nbsp;tableDir,
           <a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
@@ -1741,20 +1747,20 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
  <a href="../../../../../org/apache/hadoop/hbase/HConstants.html#REGION_IMPL"><code>HConstants.REGION_IMPL</code></a> configuration property.</div>
 </td>
 </tr>
-<tr id="i181" class="rowColor">
+<tr id="i182" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.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="i182" class="altColor">
+<tr id="i183" class="rowColor">
 <td class="colFirst"><code>protected <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/HRegion.html#openHRegion-org.apache.hadoop.hbase.util.CancelableProgressable-">openHRegion</a></span>(<a href="../../../../../org/apache/hadoop/hbase/util/CancelableProgressable.html" title="interface in org.apache.hadoop.hbase.util">CancelableProgressable</a>&nbsp;reporter)</code>
 <div class="block">Open HRegion.</div>
 </td>
 </tr>
-<tr id="i183" class="rowColor">
+<tr id="i184" class="altColor">
 <td class="colFirst"><code>static <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/HRegion.html#openHRegion-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.wal.WAL-org.apache.hadoop.hbase.regionserver.RegionServerServices-org.apache.hadoop.hbase.util.CancelableProgressable-">openHRegion</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
            org.apache.hadoop.fs.FileSystem&nbsp;fs,
@@ -1768,7 +1774,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <div class="block">Open a Region.</div>
 </td>
 </tr>
-<tr id="i184" class="altColor">
+<tr id="i185" class="rowColor">
 <td class="colFirst"><code>static <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/HRegion.html#openHRegion-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.wal.WAL-">openHRegion</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
            org.apache.hadoop.fs.FileSystem&nbsp;fs,
@@ -1779,7 +1785,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <div class="block">Open a Region.</div>
 </td>
 </tr>
-<tr id="i185" class="rowColor">
+<tr id="i186" class="altColor">
 <td class="colFirst"><code>static <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/HRegion.html#openHRegion-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.wal.WAL-org.apache.hadoop.hbase.regionserver.RegionServerServices-org.apache.hadoop.hbase.util.CancelableProgressable-">openHRegion</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
            org.apache.hadoop.fs.FileSystem&nbsp;fs,
@@ -1792,14 +1798,14 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <div class="block">Open a Region.</div>
 </td>
 </tr>
-<tr id="i186" class="altColor">
+<tr id="i187" class="rowColor">
 <td class="colFirst"><code>static <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/HRegion.html#openHRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.util.CancelableProgressable-">openHRegion</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;other,
            <a href="../../../../../org/apache/hadoop/hbase/util/CancelableProgressable.html" title="interface in org.apache.hadoop.hbase.util">CancelableProgressable</a>&nbsp;reporter)</code>
 <div class="block">Useful when reopening a closed region (normally for unit tests)</div>
 </td>
 </tr>
-<tr id="i187" class="rowColor">
+<tr id="i188" class="altColor">
 <td class="colFirst"><code>static <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/HRegion.html#openHRegion-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.wal.WAL-org.apache.hadoop.conf.Configuration-">openHRegion</a></span>(org.apache.hadoop.fs.Path&nbsp;rootDir,
            <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;info,
@@ -1809,7 +1815,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <div class="block">Open a Region.</div>
 </td>
 </tr>
-<tr id="i188" class="altColor">
+<tr id="i189" class="rowColor">
 <td class="colFirst"><code>static <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/HRegion.html#openHRegion-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.wal.WAL-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.regionserver.RegionServerServices-org.apache.hadoop.hbase.util.CancelableProgressable-">openHRegion</a></span>(org.apache.hadoop.fs.Path&nbsp;rootDir,
            <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;info,
@@ -1821,12 +1827,12 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <div class="block">Open a Region.</div>
 </td>
 </tr>
-<tr id="i189" class="rowColor">
+<tr id="i190" class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#openHRegion-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.util.CancelableProgressable-">openHRegion</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;other,
            <a href="../../../../../org/apache/hadoop/hbase/util/CancelableProgressable.html" title="interface in org.apache.hadoop.hbase.util">CancelableProgressable</a>&nbsp;reporter)</code>&nbsp;</td>
 </tr>
-<tr id="i190" class="altColor">
+<tr id="i191" class="rowColor">
 <td class="colFirst"><code>static <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/HRegion.html#openHRegion-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.wal.WAL-org.apache.hadoop.conf.Configuration-">openHRegion</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;info,
            <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;htd,
@@ -1835,7 +1841,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <div class="block">Open a Region.</div>
 </td>
 </tr>
-<tr id="i191" class="rowColor">
+<tr id="i192" class="altColor">
 <td class="colFirst"><code>static <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/HRegion.html#openHRegion-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.wal.WAL-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.regionserver.RegionServerServices-org.apache.hadoop.hbase.util.CancelableProgressable-">openHRegion</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;info,
            <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;htd,
@@ -1846,7 +1852,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <div class="block">Open a Region.</div>
 </td>
 </tr>
-<tr id="i192" class="altColor">
+<tr id="i193" class="rowColor">
 <td class="colFirst"><code>static <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/HRegion.html#openReadOnlyFileSystemHRegion-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.TableDescriptor-">openReadOnlyFileSystemHRegion</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                              org.apache.hadoop.fs.FileSystem&nbsp;fs,
@@ -1856,13 +1862,13 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <div class="block">Open a Region on a read-only file-system (like hdfs snapshots)</div>
 </td>
 </tr>
-<tr id="i193" class="rowColor">
+<tr id="i194" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#prepareDelete-org.apache.hadoop.hbase.client.Delete-">prepareDelete</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&nbsp;delete)</code>
 <div class="block">Prepare a delete for a row mutation processor</div>
 </td>
 </tr>
-<tr id="i194" class="altColor">
+<tr id="i195" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#prepareDeleteTimestamps-org.apache.hadoop.hbase.client.Mutation-java.util.Map-byte:A-">prepareDeleteTimestamps</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;mutation,
                        <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[],<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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;familyMap,
@@ -1870,22 +1876,22 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <div class="block">Set up correct timestamps in the KVs in Delete object.</div>
 </td>
 </tr>
-<tr id="i195" class="rowColor">
+<tr id="i196" 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/HRegion.html#prepareGet-org.apache.hadoop.hbase.client.Get-">prepareGet</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&nbsp;get)</code>&nbsp;</td>
 </tr>
-<tr id="i196" class="altColor">
+<tr id="i197" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#preProcess-org.apache.hadoop.hbase.regionserver.RowProcessor-org.apache.hadoop.hbase.wal.WALEdit-">preProcess</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/RowProcessor.html" title="interface in org.apache.hadoop.hbase.regionserver">RowProcessor</a>&lt;?,?&gt;&nbsp;processor,
           <a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;walEdit)</code>&nbsp;</td>
 </tr>
-<tr id="i197" class="rowColor">
+<tr id="i198" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#processRowsWithLocks-org.apache.hadoop.hbase.regionserver.RowProcessor-">processRowsWithLocks</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/RowProcessor.html" title="interface in org.apache.hadoop.hbase.regionserver">RowProcessor</a>&lt;?,?&gt;&nbsp;processor)</code>
 <div class="block">Performs atomic multiple reads and writes on a given row.</div>
 </td>
 </tr>
-<tr id="i198" class="altColor">
+<tr id="i199" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#processRowsWithLocks-org.apache.hadoop.hbase.regionserver.RowProcessor-long-long-">processRowsWithLocks</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/RowProcessor.html" title="interface in org.apache.hadoop.hbase.regionserver">RowProcessor</a>&lt;?,?&gt;&nbsp;processor,
                     long&nbsp;nonceGroup,
@@ -1893,7 +1899,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <div class="block">Performs atomic multiple reads and writes on a given row.</div>
 </td>
 </tr>
-<tr id="i199" class="rowColor">
+<tr id="i200" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#processRowsWithLocks-org.apache.hadoop.hbase.regionserver.RowProcessor-long-long-long-">processRowsWithLocks</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/RowProcessor.html" title="interface in org.apache.hadoop.hbase.regionserver">RowProcessor</a>&lt;?,?&gt;&nbsp;processor,
                     long&nbsp;timeout,
@@ -1902,7 +1908,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <div class="block">Performs atomic multiple reads and writes on a given ro

<TRUNCATED>

[30/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
index db8431b..a8cb7c4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
@@ -885,7766 +885,7797 @@
 <span class="sourceLineNo">877</span>   * @return What the next sequence (edit) id should be.<a name="line.877"></a>
 <span class="sourceLineNo">878</span>   * @throws IOException e<a name="line.878"></a>
 <span class="sourceLineNo">879</span>   */<a name="line.879"></a>
-<span class="sourceLineNo">880</span>  private long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.880"></a>
-<span class="sourceLineNo">881</span><a name="line.881"></a>
-<span class="sourceLineNo">882</span>    //Refuse to open the region if there is no column family in the table<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.884"></a>
-<span class="sourceLineNo">885</span>          " should have at least one column family.");<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    long nextSeqId = -1;<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    try {<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.891"></a>
-<span class="sourceLineNo">892</span>      return nextSeqId;<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    } finally {<a name="line.893"></a>
-<span class="sourceLineNo">894</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      // At least it will be 0 otherwise.<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      if (nextSeqId == -1) {<a name="line.896"></a>
-<span class="sourceLineNo">897</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.897"></a>
-<span class="sourceLineNo">898</span>          " initialization.");<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      }<a name="line.899"></a>
-<span class="sourceLineNo">900</span>    }<a name="line.900"></a>
-<span class="sourceLineNo">901</span>  }<a name="line.901"></a>
-<span class="sourceLineNo">902</span><a name="line.902"></a>
-<span class="sourceLineNo">903</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.903"></a>
-<span class="sourceLineNo">904</span>      final MonitoredTask status) throws IOException {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    if (coprocessorHost != null) {<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      coprocessorHost.preOpen();<a name="line.907"></a>
-<span class="sourceLineNo">908</span>    }<a name="line.908"></a>
-<span class="sourceLineNo">909</span><a name="line.909"></a>
-<span class="sourceLineNo">910</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.910"></a>
-<span class="sourceLineNo">911</span>    // Only the primary replica should write .regioninfo<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      status.setStatus("Writing region info on filesystem");<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      fs.checkRegionInfoOnFilesystem();<a name="line.914"></a>
-<span class="sourceLineNo">915</span>    }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>    // Initialize all the HStores<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    status.setStatus("Initializing all the Stores");<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.920"></a>
-<span class="sourceLineNo">921</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.922"></a>
-<span class="sourceLineNo">923</span>      try {<a name="line.923"></a>
-<span class="sourceLineNo">924</span>        // update the stores that we are replaying<a name="line.924"></a>
-<span class="sourceLineNo">925</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        // Recover any edits if available.<a name="line.927"></a>
-<span class="sourceLineNo">928</span>        maxSeqId = Math.max(maxSeqId,<a name="line.928"></a>
-<span class="sourceLineNo">929</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        // Make sure mvcc is up to max.<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      } finally {<a name="line.932"></a>
-<span class="sourceLineNo">933</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        // update the stores that we are done replaying<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        stores.forEach(HStore::stopReplayingFromWAL);<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>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    this.writestate.flushRequested = false;<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    this.writestate.compacting.set(0);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>    if (this.writestate.writesEnabled) {<a name="line.944"></a>
-<span class="sourceLineNo">945</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      // Remove temporary data left over from old regions<a name="line.946"></a>
-<span class="sourceLineNo">947</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.947"></a>
-<span class="sourceLineNo">948</span>      fs.cleanupTempDir();<a name="line.948"></a>
-<span class="sourceLineNo">949</span>    }<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>    if (this.writestate.writesEnabled) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      // these directories here on open.  We may be opening a region that was<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      // being split but we crashed in the middle of it all.<a name="line.955"></a>
-<span class="sourceLineNo">956</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      fs.cleanupAnySplitDetritus();<a name="line.957"></a>
-<span class="sourceLineNo">958</span>      fs.cleanupMergesDir();<a name="line.958"></a>
-<span class="sourceLineNo">959</span>    }<a name="line.959"></a>
+<span class="sourceLineNo">880</span>  @VisibleForTesting<a name="line.880"></a>
+<span class="sourceLineNo">881</span>  long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>    //Refuse to open the region if there is no column family in the table<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.885"></a>
+<span class="sourceLineNo">886</span>          " should have at least one column family.");<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    }<a name="line.887"></a>
+<span class="sourceLineNo">888</span><a name="line.888"></a>
+<span class="sourceLineNo">889</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>    long nextSeqId = -1;<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    try {<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      return nextSeqId;<a name="line.893"></a>
+<span class="sourceLineNo">894</span>    } catch (IOException e) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      LOG.warn("Failed initialize of region= {}, starting to roll back memstore",<a name="line.895"></a>
+<span class="sourceLineNo">896</span>          getRegionInfo().getRegionNameAsString(), e);<a name="line.896"></a>
+<span class="sourceLineNo">897</span>      // global memstore size will be decreased when dropping memstore<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      try {<a name="line.898"></a>
+<span class="sourceLineNo">899</span>        //drop the memory used by memstore if open region fails<a name="line.899"></a>
+<span class="sourceLineNo">900</span>        dropMemStoreContents();<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      } catch (IOException ioE) {<a name="line.901"></a>
+<span class="sourceLineNo">902</span>        if (conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {<a name="line.902"></a>
+<span class="sourceLineNo">903</span>          LOG.warn("Failed drop memstore of region= {}, "<a name="line.903"></a>
+<span class="sourceLineNo">904</span>                  + "some chunks may not released forever since MSLAB is enabled",<a name="line.904"></a>
+<span class="sourceLineNo">905</span>              getRegionInfo().getRegionNameAsString());<a name="line.905"></a>
+<span class="sourceLineNo">906</span>        }<a name="line.906"></a>
+<span class="sourceLineNo">907</span><a name="line.907"></a>
+<span class="sourceLineNo">908</span>      }<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      throw e;<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    } finally {<a name="line.910"></a>
+<span class="sourceLineNo">911</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      // At least it will be 0 otherwise.<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      if (nextSeqId == -1) {<a name="line.913"></a>
+<span class="sourceLineNo">914</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.914"></a>
+<span class="sourceLineNo">915</span>          " initialization.");<a name="line.915"></a>
+<span class="sourceLineNo">916</span>      }<a name="line.916"></a>
+<span class="sourceLineNo">917</span>    }<a name="line.917"></a>
+<span class="sourceLineNo">918</span>  }<a name="line.918"></a>
+<span class="sourceLineNo">919</span><a name="line.919"></a>
+<span class="sourceLineNo">920</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.920"></a>
+<span class="sourceLineNo">921</span>      final MonitoredTask status) throws IOException {<a name="line.921"></a>
+<span class="sourceLineNo">922</span>    if (coprocessorHost != null) {<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.923"></a>
+<span class="sourceLineNo">924</span>      coprocessorHost.preOpen();<a name="line.924"></a>
+<span class="sourceLineNo">925</span>    }<a name="line.925"></a>
+<span class="sourceLineNo">926</span><a name="line.926"></a>
+<span class="sourceLineNo">927</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.927"></a>
+<span class="sourceLineNo">928</span>    // Only the primary replica should write .regioninfo<a name="line.928"></a>
+<span class="sourceLineNo">929</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>      status.setStatus("Writing region info on filesystem");<a name="line.930"></a>
+<span class="sourceLineNo">931</span>      fs.checkRegionInfoOnFilesystem();<a name="line.931"></a>
+<span class="sourceLineNo">932</span>    }<a name="line.932"></a>
+<span class="sourceLineNo">933</span><a name="line.933"></a>
+<span class="sourceLineNo">934</span>    // Initialize all the HStores<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    status.setStatus("Initializing all the Stores");<a name="line.935"></a>
+<span class="sourceLineNo">936</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.937"></a>
+<span class="sourceLineNo">938</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.938"></a>
+<span class="sourceLineNo">939</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.939"></a>
+<span class="sourceLineNo">940</span>      try {<a name="line.940"></a>
+<span class="sourceLineNo">941</span>        // update the stores that we are replaying<a name="line.941"></a>
+<span class="sourceLineNo">942</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.942"></a>
+<span class="sourceLineNo">943</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.943"></a>
+<span class="sourceLineNo">944</span>        // Recover any edits if available.<a name="line.944"></a>
+<span class="sourceLineNo">945</span>        maxSeqId = Math.max(maxSeqId,<a name="line.945"></a>
+<span class="sourceLineNo">946</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.946"></a>
+<span class="sourceLineNo">947</span>        // Make sure mvcc is up to max.<a name="line.947"></a>
+<span class="sourceLineNo">948</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      } finally {<a name="line.949"></a>
+<span class="sourceLineNo">950</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        // update the stores that we are done replaying<a name="line.951"></a>
+<span class="sourceLineNo">952</span>        stores.forEach(HStore::stopReplayingFromWAL);<a name="line.952"></a>
+<span class="sourceLineNo">953</span>      }<a name="line.953"></a>
+<span class="sourceLineNo">954</span>    }<a name="line.954"></a>
+<span class="sourceLineNo">955</span>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.955"></a>
+<span class="sourceLineNo">956</span><a name="line.956"></a>
+<span class="sourceLineNo">957</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.957"></a>
+<span class="sourceLineNo">958</span>    this.writestate.flushRequested = false;<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    this.writestate.compacting.set(0);<a name="line.959"></a>
 <span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>    // Initialize split policy<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.962"></a>
-<span class="sourceLineNo">963</span><a name="line.963"></a>
-<span class="sourceLineNo">964</span>    // Initialize flush policy<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.965"></a>
-<span class="sourceLineNo">966</span><a name="line.966"></a>
-<span class="sourceLineNo">967</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    for (HStore store: stores.values()) {<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<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>    // Use maximum of log sequenceid or that which was found in stores<a name="line.972"></a>
-<span class="sourceLineNo">973</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.973"></a>
-<span class="sourceLineNo">974</span>    long maxSeqIdFromFile =<a name="line.974"></a>
-<span class="sourceLineNo">975</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.975"></a>
-<span class="sourceLineNo">976</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.976"></a>
-<span class="sourceLineNo">977</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    // the max sequence id file.<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.985"></a>
-<span class="sourceLineNo">986</span><a name="line.986"></a>
-<span class="sourceLineNo">987</span>    // A region can be reopened if failed a split; reset flags<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    this.closing.set(false);<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    this.closed.set(false);<a name="line.989"></a>
-<span class="sourceLineNo">990</span><a name="line.990"></a>
-<span class="sourceLineNo">991</span>    if (coprocessorHost != null) {<a name="line.991"></a>
-<span class="sourceLineNo">992</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.992"></a>
-<span class="sourceLineNo">993</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.993"></a>
-<span class="sourceLineNo">994</span>      coprocessorHost.postOpen();<a name="line.994"></a>
-<span class="sourceLineNo">995</span>    }<a name="line.995"></a>
-<span class="sourceLineNo">996</span><a name="line.996"></a>
-<span class="sourceLineNo">997</span>    status.markComplete("Region opened successfully");<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    return nextSeqId;<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>   * Open all Stores.<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>   * @param reporter<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   * @param status<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>   * @return Highest sequenceId found out in a Store.<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * @throws IOException<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   */<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      throws IOException {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>    // Load in all the HStores.<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    long maxSeqId = -1;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    long maxMemstoreTS = -1;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span><a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span><a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      // initialize each store in parallel<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>          @Override<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>          public HStore call() throws IOException {<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>            return instantiateHStore(family);<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          }<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>        });<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      }<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>      boolean allStoresOpened = false;<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>      boolean hasSloppyStores = false;<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>      try {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>          HStore store = future.get();<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>          if (store.isSloppyMemStore()) {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            hasSloppyStores = true;<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>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>              storeMaxSequenceId);<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            maxSeqId = storeMaxSequenceId;<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>          }<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>          }<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>        }<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>        allStoresOpened = true;<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>        if(hasSloppyStores) {<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>                  .build();<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        }<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>      } catch (InterruptedException e) {<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>      } catch (ExecutionException e) {<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        throw new IOException(e.getCause());<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>      } finally {<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        if (!allStoresOpened) {<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>          // something went wrong, close all opened stores<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>          for (HStore store : this.stores.values()) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>            try {<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>              store.close();<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>            } catch (IOException e) {<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>              LOG.warn("close store failed", e);<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>            }<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          }<a name="line.1075"></a>
+<span class="sourceLineNo">961</span>    if (this.writestate.writesEnabled) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      // Remove temporary data left over from old regions<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      fs.cleanupTempDir();<a name="line.965"></a>
+<span class="sourceLineNo">966</span>    }<a name="line.966"></a>
+<span class="sourceLineNo">967</span><a name="line.967"></a>
+<span class="sourceLineNo">968</span>    if (this.writestate.writesEnabled) {<a name="line.968"></a>
+<span class="sourceLineNo">969</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.969"></a>
+<span class="sourceLineNo">970</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.970"></a>
+<span class="sourceLineNo">971</span>      // these directories here on open.  We may be opening a region that was<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      // being split but we crashed in the middle of it all.<a name="line.972"></a>
+<span class="sourceLineNo">973</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.973"></a>
+<span class="sourceLineNo">974</span>      fs.cleanupAnySplitDetritus();<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      fs.cleanupMergesDir();<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    }<a name="line.976"></a>
+<span class="sourceLineNo">977</span><a name="line.977"></a>
+<span class="sourceLineNo">978</span>    // Initialize split policy<a name="line.978"></a>
+<span class="sourceLineNo">979</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.979"></a>
+<span class="sourceLineNo">980</span><a name="line.980"></a>
+<span class="sourceLineNo">981</span>    // Initialize flush policy<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.982"></a>
+<span class="sourceLineNo">983</span><a name="line.983"></a>
+<span class="sourceLineNo">984</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.984"></a>
+<span class="sourceLineNo">985</span>    for (HStore store: stores.values()) {<a name="line.985"></a>
+<span class="sourceLineNo">986</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<a name="line.986"></a>
+<span class="sourceLineNo">987</span>    }<a name="line.987"></a>
+<span class="sourceLineNo">988</span><a name="line.988"></a>
+<span class="sourceLineNo">989</span>    // Use maximum of log sequenceid or that which was found in stores<a name="line.989"></a>
+<span class="sourceLineNo">990</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.990"></a>
+<span class="sourceLineNo">991</span>    long maxSeqIdFromFile =<a name="line.991"></a>
+<span class="sourceLineNo">992</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.994"></a>
+<span class="sourceLineNo">995</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.995"></a>
+<span class="sourceLineNo">996</span>    // the max sequence id file.<a name="line.996"></a>
+<span class="sourceLineNo">997</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.997"></a>
+<span class="sourceLineNo">998</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.998"></a>
+<span class="sourceLineNo">999</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<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>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span><a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>    // A region can be reopened if failed a split; reset flags<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>    this.closing.set(false);<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    this.closed.set(false);<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span><a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>    if (coprocessorHost != null) {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>      coprocessorHost.postOpen();<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>    }<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span><a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>    status.markComplete("Region opened successfully");<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>    return nextSeqId;<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>  }<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span><a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>  /**<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>   * Open all Stores.<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>   * @param reporter<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>   * @param status<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>   * @return Highest sequenceId found out in a Store.<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>   * @throws IOException<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>   */<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>      throws IOException {<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    // Load in all the HStores.<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>    long maxSeqId = -1;<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>    long maxMemstoreTS = -1;<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span><a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>      // initialize each store in parallel<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>          @Override<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>          public HStore call() throws IOException {<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>            return instantiateHStore(family);<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>          }<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>        });<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>      }<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>      boolean allStoresOpened = false;<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>      boolean hasSloppyStores = false;<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>      try {<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>          HStore store = future.get();<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>          if (store.isSloppyMemStore()) {<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>            hasSloppyStores = true;<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>          }<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span><a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>              storeMaxSequenceId);<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>            maxSeqId = storeMaxSequenceId;<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>          }<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>          }<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span>        }<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>        allStoresOpened = true;<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>        if(hasSloppyStores) {<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>                  .build();<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1075"></a>
 <span class="sourceLineNo">1076</span>        }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      }<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    }<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>  }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span><a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>    // Initialize all the HStores<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>    status.setStatus("Warming up all the Stores");<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    try {<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>      initializeStores(reporter, status);<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>    } finally {<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>      status.markComplete("Done warming up.");<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>    }<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>  }<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>   * @return Map of StoreFiles by column family<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>   */<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    for (HStore store : stores.values()) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      if (storeFiles == null) {<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>        continue;<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>        storeFileNames.add(storeFile.getPath());<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      }<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>    }<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>    return allStoreFiles;<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>  }<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span><a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>  @VisibleForTesting<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>        mvcc);<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  }<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span><a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>        mvcc);<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span><a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>    // Store SeqId in HDFS when a region closes<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    // table is still online<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>        mvcc.getReadPoint());<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>    }<a name="line.1136"></a>
+<span class="sourceLineNo">1077</span>      } catch (InterruptedException e) {<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>      } catch (ExecutionException e) {<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>        throw new IOException(e.getCause());<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      } finally {<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>        if (!allStoresOpened) {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>          // something went wrong, close all opened stores<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>          for (HStore store : this.stores.values()) {<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>            try {<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>              store.close();<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>            } catch (IOException e) {<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>              LOG.warn("close store failed", e);<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>            }<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>      }<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>    }<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>  }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span><a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>    // Initialize all the HStores<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>    status.setStatus("Warming up all the Stores");<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>    try {<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>      initializeStores(reporter, status);<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>    } finally {<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>      status.markComplete("Done warming up.");<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>    }<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>  }<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span><a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>  /**<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>   * @return Map of StoreFiles by column family<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>   */<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>    for (HStore store : stores.values()) {<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>      if (storeFiles == null) {<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>        continue;<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span>      }<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>        storeFileNames.add(storeFile.getPath());<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>      }<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>    }<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>    return allStoreFiles;<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>  }<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span><a name="line.1128"></a>
+<span class="sourceLineNo">1129</span>  @VisibleForTesting<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>        mvcc);<a name="line.1136"></a>
 <span class="sourceLineNo">1137</span>  }<a name="line.1137"></a>
 <span class="sourceLineNo">1138</span><a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>  /**<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>   * @return True if this region has references.<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>   */<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>  public boolean hasReferences() {<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<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>  public void blockUpdates() {<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>    this.updatesLock.writeLock().lock();<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>  }<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span><a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>  public void unblockUpdates() {<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>    this.updatesLock.writeLock().unlock();<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>  }<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span><a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>    return hdfsBlocksDistribution;<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>  }<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span><a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>  /**<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>   * @param conf configuration<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>   * @param regionInfo encoded name of the region<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>   * @throws IOException<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>   */<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>  }<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span><a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>  /**<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>   * @param conf configuration<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>   * @param regionInfo encoded name of the region<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>   * @param tablePath the table directory<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>   * @throws IOException<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>   */<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1186"></a>
-<span class="sourceLineNo">1187</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1188"></a>
-<span class="sourceLineNo">1189</span><a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span>      if (locatedFileStatusList == null) {<a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>        continue;<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>      }<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span><a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>        Path p = status.getPath();<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>          // creation<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>              status.getBlockLocations());<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span>        } else {<a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>          throw new IOException("path=" + p<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>              + " doesn't look like a valid StoreFile");<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>        }<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>      }<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>    }<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>    return hdfsBlocksDistribution;<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>   * Increase the size of mem store in this region and the size of global mem<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>   * store<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>   */<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>  }<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span><a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>    if (this.rsAccounting != null) {<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>    }<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>    long dataSize =<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1234"></a>
+<span class="sourceLineNo">1139</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span>        mvcc);<a name="line.1145"></a>
+<span class="sourceLineNo">1146</span><a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>    // Store SeqId in HDFS when a region closes<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>    // table is still online<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span>        mvcc.getReadPoint());<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>    }<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>  }<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span><a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>  /**<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>   * @return True if this region has references.<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>   */<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>  public boolean hasReferences() {<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>  }<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span><a name="line.1162"></a>
+<span class="sourceLineNo">1163</span>  public void blockUpdates() {<a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>    this.updatesLock.writeLock().lock();<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>  }<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span><a name="line.1166"></a>
+<span class="sourceLineNo">1167</span>  public void unblockUpdates() {<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>    this.updatesLock.writeLock().unlock();<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>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1172"></a>
+<span class="sourceLineNo">1173</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1174"></a>
+<span class="sourceLineNo">1175</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>    return hdfsBlocksDistribution;<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span>  }<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span><a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>  /**<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>   * @param conf configuration<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1182"></a>
+<span class="sourceLineNo">1183</span>   * @param regionInfo encoded name of the region<a name="line.1183"></a>
+<span class="sourceLineNo">1184</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1184"></a>
+<span class="sourceLineNo">1185</span>   * @throws IOException<a name="line.1185"></a>
+<span class="sourceLineNo">1186</span>   */<a name="line.1186"></a>
+<span class="sourceLineNo">1187</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1187"></a>
+<span class="sourceLineNo">1188</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1188"></a>
+<span class="sourceLineNo">1189</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1189"></a>
+<span class="sourceLineNo">1190</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1190"></a>
+<span class="sourceLineNo">1191</span>  }<a name="line.1191"></a>
+<span class="sourceLineNo">1192</span><a name="line.1192"></a>
+<span class="sourceLineNo">1193</span>  /**<a name="line.1193"></a>
+<span class="sourceLineNo">1194</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1194"></a>
+<span class="sourceLineNo">1195</span>   * @param conf configuration<a name="line.1195"></a>
+<span class="sourceLineNo">1196</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1196"></a>
+<span class="sourceLineNo">1197</span>   * @param regionInfo encoded name of the region<a name="line.1197"></a>
+<span class="sourceLineNo">1198</span>   * @param tablePath the table directory<a name="line.1198"></a>
+<span class="sourceLineNo">1199</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1199"></a>
+<span class="sourceLineNo">1200</span>   * @throws IOException<a name="line.1200"></a>
+<span class="sourceLineNo">1201</span>   */<a name="line.1201"></a>
+<span class="sourceLineNo">1202</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1202"></a>
+<span class="sourceLineNo">1203</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1203"></a>
+<span class="sourceLineNo">1204</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1204"></a>
+<span class="sourceLineNo">1205</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1205"></a>
+<span class="sourceLineNo">1206</span><a name="line.1206"></a>
+<span class="sourceLineNo">1207</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1207"></a>
+<span class="sourceLineNo">1208</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1208"></a>
+<span class="sourceLineNo">1209</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1209"></a>
+<span class="sourceLineNo">1210</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1210"></a>
+<span class="sourceLineNo">1211</span>      if (locatedFileStatusList == null) {<a name="line.1211"></a>
+<span class="sourceLineNo">1212</span>        continue;<a name="line.1212"></a>
+<span class="sourceLineNo">1213</span>      }<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span><a name="line.1214"></a>
+<span class="sourceLineNo">1215</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1215"></a>
+<span class="sourceLineNo">1216</span>        Path p = status.getPath();<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1217"></a>
+<span class="sourceLineNo">1218</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span>          // creation<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1224"></a>
+<span class="sourceLineNo">1225</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1225"></a>
+<span class="sourceLineNo">1226</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1226"></a>
+<span class="sourceLineNo">1227</span>              status.getBlockLocations());<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span>        } else {<a name="line.1228"></a>
+<span class="sourceLineNo">1229</span>          throw new IOException("path=" + p<a name="line.1229"></a>
+<span class="sourceLineNo">1230</span>              + " doesn't look like a valid StoreFile");<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>    }<a name="line.1233"></a>
+<span class="sourceLineNo">1234</span>    return hdfsBlocksDistribution;<a name="line.1234"></a>
 <span class="sourceLineNo">1235</span>  }<a name="line.1235"></a>
 <span class="sourceLineNo">1236</span><a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>  }<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span><a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>    if (this.rsAccounting != null) {<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>    }<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>    long dataSize =<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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 checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    if (memStoreDataSize &lt; 0) {<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>    }<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>  }<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span><a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>  @Override<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>  public RegionInfo getRegionInfo() {<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>    return this.fs.getRegionInfo();<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>  }<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span><a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>  /**<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>   * @return Instance of {@link RegionServerServices} used by this HRegion.<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>   * Can be null.<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>   */<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>  RegionServerServices getRegionServerServices() {<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>    return this.rsServices;<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>  }<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span><a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>  @Override<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>  public long getReadRequestsCount() {<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>    return readRequestsCount.sum();<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>  }<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span><a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>  @Override<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>  public long getCpRequestsCount() {<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>    return cpRequestsCount.sum();<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>  @Override<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>  public long getFilteredReadRequestsCount() {<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>    return filteredReadRequestsCount.sum();<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>  @Override<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>  public long getWriteRequestsCount() {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    return writeRequestsCount.sum();<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>  }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>  @Override<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>  public long getMemStoreDataSize() {<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>    return memStoreSizing.getDataSize();<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>  @Override<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>  public long getMemStoreHeapSize() {<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>    return memStoreSizing.getHeapSize();<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>  }<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span><a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>  @Override<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>  public long getMemStoreOffHeapSize() {<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>    return memStoreSizing.getOffHeapSize();<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>  }<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span><a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>  /** @return store services for this region, to access services required by store level needs */<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>  public RegionServicesForStores getRegionServicesForStores() {<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>    return regionServicesForStores;<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>  @Override<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>  public long getNumMutationsWithoutWAL() {<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>    return numMutationsWithoutWAL.sum();<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>  @Override<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>  public long getDataInMemoryWithoutWAL() {<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>    return dataInMemoryWithoutWAL.sum();<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>  }<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span><a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>  @Override<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>  public long getBlockedRequestsCount() {<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>    return blockedRequestsCount.sum();<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>  }<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span><a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>  @Override<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>  public long getCheckAndMutateChecksPassed() {<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>    return checkAndMutateChecksPassed.sum();<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 long getCheckAndMutateChecksFailed() {<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    return checkAndMutateChecksFailed.sum();<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>  // TODO Needs to check whether we should expose our metrics system to CPs. If CPs themselves doing<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>  // the op and bypassing the core, this might be needed? Should be stop supporting the bypass<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>  // feature?<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>  public MetricsRegion getMetrics() {<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>    return metricsRegion;<a name="line.1342"></a>
+<span class="sourceLineNo">1237</span>  /**<a name="line.1237"></a>
+<span class="sourceLineNo">1238</span>   * Increase the size of mem store in this region and the size of global mem<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span>   * store<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span>   */<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>  }<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span><a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>    if (this.rsAccounting != null) {<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>    }<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>    long dataSize =<a name="line.1249"></a>
+<span class="sourceLineNo">1250</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1250"></a>
+<span class="sourceLineNo">1251</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>  }<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span><a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span>  }<a name="line.1256"></a>
+<span class="sourceLineNo">1257</span><a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>    if (this.rsAccounting != null) {<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>    }<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>    long dataSize =<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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>  private void checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>    if (memStoreDataSize &lt; 0) {<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>    }<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>  }<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span><a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>  @Override<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>  public RegionInfo getRegionInfo() {<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>    return this.fs.getRegionInfo();<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>  }<a name="line.1280"></a>
+<span class="sourceLineNo">1281</span><a name="line.1281"></a>
+<span class="sourceLineNo">1282</span>  /**<a name="l

<TRUNCATED>

[37/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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 938a4c9..28aa73e 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -708,20 +708,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/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/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactionStrategy.Action</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScanType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
index 19354d1..46651a5 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
@@ -247,8 +247,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.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/CompressionContext.DictionaryIndex.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">CompressionContext.DictionaryIndex</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/ProtobufLogReader.WALHdrResult.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">ProtobufLogReader.WALHdrResult</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/CompressionContext.DictionaryIndex.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">CompressionContext.DictionaryIndex</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.Type.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">RingBufferTruck.Type</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/rest/ScannerResource.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/rest/ScannerResource.html b/devapidocs/org/apache/hadoop/hbase/rest/ScannerResource.html
index 5353aa1..c8fd09e 100644
--- a/devapidocs/org/apache/hadoop/hbase/rest/ScannerResource.html
+++ b/devapidocs/org/apache/hadoop/hbase/rest/ScannerResource.html
@@ -119,7 +119,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/rest/ScannerResource.html#line.46">ScannerResource</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/rest/ScannerResource.html#line.50">ScannerResource</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/rest/ResourceBase.html" title="class in org.apache.hadoop.hbase.rest">ResourceBase</a></pre>
 </li>
 </ul>
@@ -258,7 +258,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/rest/ResourceBase.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/rest/ScannerResource.html#line.48">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/rest/ScannerResource.html#line.52">LOG</a></pre>
 </li>
 </ul>
 <a name="scanners">
@@ -267,7 +267,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/rest/ResourceBase.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>scanners</h4>
-<pre>static final&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="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="../../../../../org/apache/hadoop/hbase/rest/ScannerInstanceResource.html" title="class in org.apache.hadoop.hbase.rest">ScannerInstanceResource</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/rest/ScannerResource.html#line.50">scanners</a></pre>
+<pre>static final&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="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="../../../../../org/apache/hadoop/hbase/rest/ScannerInstanceResource.html" title="class in org.apache.hadoop.hbase.rest">ScannerInstanceResource</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/rest/ScannerResource.html#line.54">scanners</a></pre>
 </li>
 </ul>
 <a name="tableResource">
@@ -276,7 +276,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/rest/ResourceBase.html"
 <ul class="blockListLast">
 <li class="blockList">
 <h4>tableResource</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/rest/TableResource.html" title="class in org.apache.hadoop.hbase.rest">TableResource</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/rest/ScannerResource.html#line.53">tableResource</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/rest/TableResource.html" title="class in org.apache.hadoop.hbase.rest">TableResource</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/rest/ScannerResource.html#line.57">tableResource</a></pre>
 </li>
 </ul>
 </li>
@@ -293,7 +293,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/rest/ResourceBase.html"
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ScannerResource</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/rest/ScannerResource.html#line.60">ScannerResource</a>(<a href="../../../../../org/apache/hadoop/hbase/rest/TableResource.html" title="class in org.apache.hadoop.hbase.rest">TableResource</a>&nbsp;tableResource)
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/rest/ScannerResource.html#line.64">ScannerResource</a>(<a href="../../../../../org/apache/hadoop/hbase/rest/TableResource.html" title="class in org.apache.hadoop.hbase.rest">TableResource</a>&nbsp;tableResource)
                 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">Constructor</div>
 <dl>
@@ -318,7 +318,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/rest/ResourceBase.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>delete</h4>
-<pre>static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/rest/ScannerResource.html#line.65">delete</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;id)</pre>
+<pre>static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/rest/ScannerResource.html#line.69">delete</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;id)</pre>
 </li>
 </ul>
 <a name="update-org.apache.hadoop.hbase.rest.model.ScannerModel-boolean-javax.ws.rs.core.UriInfo-">
@@ -327,7 +327,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/rest/ResourceBase.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>update</h4>
-<pre>javax.ws.rs.core.Response&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/rest/ScannerResource.html#line.75">update</a>(<a href="../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel</a>&nbsp;model,
+<pre>javax.ws.rs.core.Response&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/rest/ScannerResource.html#line.79">update</a>(<a href="../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel</a>&nbsp;model,
                                  boolean&nbsp;replace,
                                  javax.ws.rs.core.UriInfo&nbsp;uriInfo)</pre>
 </li>
@@ -340,7 +340,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/rest/ResourceBase.html"
 <h4>put</h4>
 <pre>@PUT
  @Consumes(value={"text/xml","application/json","application/x-protobuf","application/protobuf"})
-public&nbsp;javax.ws.rs.core.Response&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/rest/ScannerResource.html#line.130">put</a>(<a href="../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel</a>&nbsp;model,
+public&nbsp;javax.ws.rs.core.Response&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/rest/ScannerResource.html#line.136">put</a>(<a href="../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel</a>&nbsp;model,
                                                                                                                                             @Context
                                                                                                                                             javax.ws.rs.core.UriInfo&nbsp;uriInfo)</pre>
 </li>
@@ -353,7 +353,7 @@ public&nbsp;javax.ws.rs.core.Response&nbsp;<a href="../../../../../src-html/org/
 <h4>post</h4>
 <pre>@POST
  @Consumes(value={"text/xml","application/json","application/x-protobuf","application/protobuf"})
-public&nbsp;javax.ws.rs.core.Response&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/rest/ScannerResource.html#line.141">post</a>(<a href="../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel</a>&nbsp;model,
+public&nbsp;javax.ws.rs.core.Response&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/rest/ScannerResource.html#line.147">post</a>(<a href="../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel</a>&nbsp;model,
                                                                                                                                               @Context
                                                                                                                                               javax.ws.rs.core.UriInfo&nbsp;uriInfo)</pre>
 </li>
@@ -365,7 +365,7 @@ public&nbsp;javax.ws.rs.core.Response&nbsp;<a href="../../../../../src-html/org/
 <li class="blockList">
 <h4>getScannerInstanceResource</h4>
 <pre>@Path(value="{scanner: .+}")
-public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/rest/ScannerInstanceResource.html" title="class in org.apache.hadoop.hbase.rest">ScannerInstanceResource</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/rest/ScannerResource.html#line.150">getScannerInstanceResource</a>(@PathParam(value="scanner")
+public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/rest/ScannerInstanceResource.html" title="class in org.apache.hadoop.hbase.rest">ScannerInstanceResource</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/rest/ScannerResource.html#line.156">getScannerInstanceResource</a>(@PathParam(value="scanner")
                                                                                        <a href="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;id)
                                                                                 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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html b/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
index c20ff47..034077c 100644
--- a/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
@@ -110,8 +110,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.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.FilterType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.FilterType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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 8051208..8a2815f 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
@@ -142,9 +142,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.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>
 <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/AccessControlFilter.Strategy.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessControlFilter.Strategy</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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 6ef281d..13f949c 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
@@ -192,8 +192,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.<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>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/AuthMethod.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">AuthMethod</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslStatus.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslStatus</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/util/class-use/CancelableProgressable.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/class-use/CancelableProgressable.html b/devapidocs/org/apache/hadoop/hbase/util/class-use/CancelableProgressable.html
index 52287c2..655b6cf 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/class-use/CancelableProgressable.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/class-use/CancelableProgressable.html
@@ -167,7 +167,7 @@
     <a href="../../../../../../org/apache/hadoop/hbase/util/CancelableProgressable.html" title="interface in org.apache.hadoop.hbase.util">CancelableProgressable</a>&nbsp;p)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private long</code></td>
+<td class="colFirst"><code>(package private) long</code></td>
 <td class="colLast"><span class="typeNameLabel">HRegion.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#initialize-org.apache.hadoop.hbase.util.CancelableProgressable-">initialize</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/util/CancelableProgressable.html" title="interface in org.apache.hadoop.hbase.util">CancelableProgressable</a>&nbsp;reporter)</code>
 <div class="block">Initialize this region.</div>
 </td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/util/class-use/PairOfSameType.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/class-use/PairOfSameType.html b/devapidocs/org/apache/hadoop/hbase/util/class-use/PairOfSameType.html
index 785e788..4877d5d 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/class-use/PairOfSameType.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/class-use/PairOfSameType.html
@@ -86,6 +86,10 @@
 <td class="colFirst"><a href="#org.apache.hadoop.hbase">org.apache.hadoop.hbase</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.master">org.apache.hadoop.hbase.master</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
 </tbody>
 </table>
 </li>
@@ -119,6 +123,30 @@
 </tbody>
 </table>
 </li>
+<li class="blockList"><a name="org.apache.hadoop.hbase.master">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/util/PairOfSameType.html" title="class in org.apache.hadoop.hbase.util">PairOfSameType</a> in <a href="../../../../../../org/apache/hadoop/hbase/master/package-summary.html">org.apache.hadoop.hbase.master</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
+<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/master/package-summary.html">org.apache.hadoop.hbase.master</a> that return <a href="../../../../../../org/apache/hadoop/hbase/util/PairOfSameType.html" title="class in org.apache.hadoop.hbase.util">PairOfSameType</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><a href="../../../../../../org/apache/hadoop/hbase/util/PairOfSameType.html" title="class in org.apache.hadoop.hbase.util">PairOfSameType</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>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">MetricsMasterWrapper.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getRegionCounts--">getRegionCounts</a></span>()</code>
+<div class="block">Get the online and offline region counts</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/util/PairOfSameType.html" title="class in org.apache.hadoop.hbase.util">PairOfSameType</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>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">MetricsMasterWrapperImpl.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html#getRegionCounts--">getRegionCounts</a></span>()</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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 0f4a558..df0a9b2 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/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/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/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/IdReadWriteLock.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLock.ReferenceType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
+<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/HBaseFsck.ErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/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/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/HBaseFsck.ErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/util/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/package-use.html b/devapidocs/org/apache/hadoop/hbase/util/package-use.html
index 35ef48d..b9f4205 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-use.html
@@ -941,11 +941,16 @@ service.</div>
 </td>
 </tr>
 <tr class="altColor">
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/util/class-use/PairOfSameType.html#org.apache.hadoop.hbase.master">PairOfSameType</a>
+<div class="block">A generic, immutable class for pairs of objects both of type <code>T</code>.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/util/class-use/ServerCommandLine.html#org.apache.hadoop.hbase.master">ServerCommandLine</a>
 <div class="block">Base class for command lines that start up various HBase daemons.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/util/class-use/Triple.html#org.apache.hadoop.hbase.master">Triple</a>
 <div class="block">Utility class to manage a triple.</div>
 </td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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 3034610..7de38f1 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 = "064388b4781828bb22c3ef17424d133804edc9b8";<a name="line.11"></a>
+<span class="sourceLineNo">011</span>  public static final String revision = "6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4";<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 = "Wed Aug 22 14:38:40 UTC 2018";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Thu Aug 23 14:38:46 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 = "170758ccf10039418b568bcc7f598a3c";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "1e08aed9fad639e572ab4a3a705f2a05";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/master/MetricsMasterSource.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/MetricsMasterSource.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/MetricsMasterSource.html
index 885c2f3..7b0a31f 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/MetricsMasterSource.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/MetricsMasterSource.html
@@ -71,38 +71,42 @@
 <span class="sourceLineNo">063</span>  String IS_ACTIVE_MASTER_NAME = "isActiveMaster";<a name="line.63"></a>
 <span class="sourceLineNo">064</span>  String SPLIT_PLAN_COUNT_NAME = "splitPlanCount";<a name="line.64"></a>
 <span class="sourceLineNo">065</span>  String MERGE_PLAN_COUNT_NAME = "mergePlanCount";<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>  String CLUSTER_REQUESTS_NAME = "clusterRequests";<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  String MASTER_ACTIVE_TIME_DESC = "Master Active Time";<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  String MASTER_START_TIME_DESC = "Master Start Time";<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  String MASTER_FINISHED_INITIALIZATION_TIME_DESC =<a name="line.70"></a>
-<span class="sourceLineNo">071</span>          "Timestamp when Master has finished initializing";<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  String AVERAGE_LOAD_DESC = "AverageLoad";<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  String LIVE_REGION_SERVERS_DESC = "Names of live RegionServers";<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  String NUMBER_OF_REGION_SERVERS_DESC = "Number of RegionServers";<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  String DEAD_REGION_SERVERS_DESC = "Names of dead RegionServers";<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  String NUMBER_OF_DEAD_REGION_SERVERS_DESC = "Number of dead RegionServers";<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  String ZOOKEEPER_QUORUM_DESC = "ZooKeeper Quorum";<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  String SERVER_NAME_DESC = "Server Name";<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  String CLUSTER_ID_DESC = "Cluster Id";<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  String IS_ACTIVE_MASTER_DESC = "Is Active Master";<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  String SPLIT_PLAN_COUNT_DESC = "Number of Region Split Plans executed";<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  String MERGE_PLAN_COUNT_DESC = "Number of Region Merge Plans executed";<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>  String SERVER_CRASH_METRIC_PREFIX = "serverCrash";<a name="line.84"></a>
-<span class="sourceLineNo">085</span><a name="line.85"></a>
-<span class="sourceLineNo">086</span>  /**<a name="line.86"></a>
-<span class="sourceLineNo">087</span>   * Increment the number of requests the cluster has seen.<a name="line.87"></a>
-<span class="sourceLineNo">088</span>   *<a name="line.88"></a>
-<span class="sourceLineNo">089</span>   * @param inc Ammount to increment the total by.<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   */<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  void incRequests(final long inc);<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  /**<a name="line.93"></a>
-<span class="sourceLineNo">094</span>   * @return {@link OperationMetrics} containing common metrics for server crash operation<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   */<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  OperationMetrics getServerCrashMetrics();<a name="line.96"></a>
-<span class="sourceLineNo">097</span>}<a name="line.97"></a>
+<span class="sourceLineNo">066</span>  String ONLINE_REGION_COUNT_NAME = "onlineRegionCount";<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  String OFFLINE_REGION_COUNT_NAME = "offlineRegionCount";<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>  String CLUSTER_REQUESTS_NAME = "clusterRequests";<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  String MASTER_ACTIVE_TIME_DESC = "Master Active Time";<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  String MASTER_START_TIME_DESC = "Master Start Time";<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  String MASTER_FINISHED_INITIALIZATION_TIME_DESC =<a name="line.72"></a>
+<span class="sourceLineNo">073</span>          "Timestamp when Master has finished initializing";<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  String AVERAGE_LOAD_DESC = "AverageLoad";<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  String LIVE_REGION_SERVERS_DESC = "Names of live RegionServers";<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  String NUMBER_OF_REGION_SERVERS_DESC = "Number of RegionServers";<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  String DEAD_REGION_SERVERS_DESC = "Names of dead RegionServers";<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  String NUMBER_OF_DEAD_REGION_SERVERS_DESC = "Number of dead RegionServers";<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  String ZOOKEEPER_QUORUM_DESC = "ZooKeeper Quorum";<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  String SERVER_NAME_DESC = "Server Name";<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  String CLUSTER_ID_DESC = "Cluster Id";<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  String IS_ACTIVE_MASTER_DESC = "Is Active Master";<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  String SPLIT_PLAN_COUNT_DESC = "Number of Region Split Plans executed";<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  String MERGE_PLAN_COUNT_DESC = "Number of Region Merge Plans executed";<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  String ONLINE_REGION_COUNT_DESC = "Number of Online Regions";<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  String OFFLINE_REGION_COUNT_DESC = "Number of Offline Regions";<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>  String SERVER_CRASH_METRIC_PREFIX = "serverCrash";<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  /**<a name="line.90"></a>
+<span class="sourceLineNo">091</span>   * Increment the number of requests the cluster has seen.<a name="line.91"></a>
+<span class="sourceLineNo">092</span>   *<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   * @param inc Ammount to increment the total by.<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   */<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  void incRequests(final long inc);<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>  /**<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   * @return {@link OperationMetrics} containing common metrics for server crash operation<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   */<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  OperationMetrics getServerCrashMetrics();<a name="line.100"></a>
+<span class="sourceLineNo">101</span>}<a name="line.101"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html
index 5459107..21a8b91 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html
@@ -29,108 +29,116 @@
 <span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.metrics.BaseSourceImpl;<a name="line.21"></a>
 <span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.metrics.Interns;<a name="line.22"></a>
 <span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.metrics.OperationMetrics;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hadoop.metrics2.MetricsCollector;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.metrics2.MetricsRecordBuilder;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.metrics2.lib.MutableFastCounter;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>/**<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * Hadoop2 implementation of MetricsMasterSource.<a name="line.30"></a>
-<span class="sourceLineNo">031</span> *<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * Implements BaseSource through BaseSourceImpl, following the pattern<a name="line.32"></a>
-<span class="sourceLineNo">033</span> */<a name="line.33"></a>
-<span class="sourceLineNo">034</span>@InterfaceAudience.Private<a name="line.34"></a>
-<span class="sourceLineNo">035</span>public class MetricsMasterSourceImpl<a name="line.35"></a>
-<span class="sourceLineNo">036</span>    extends BaseSourceImpl implements MetricsMasterSource {<a name="line.36"></a>
-<span class="sourceLineNo">037</span><a name="line.37"></a>
-<span class="sourceLineNo">038</span>  private final MetricsMasterWrapper masterWrapper;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>  private MutableFastCounter clusterRequestsCounter;<a name="line.39"></a>
-<span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>  private OperationMetrics serverCrashMetrics;<a name="line.41"></a>
-<span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>  public MetricsMasterSourceImpl(MetricsMasterWrapper masterWrapper) {<a name="line.43"></a>
-<span class="sourceLineNo">044</span>    this(METRICS_NAME,<a name="line.44"></a>
-<span class="sourceLineNo">045</span>        METRICS_DESCRIPTION,<a name="line.45"></a>
-<span class="sourceLineNo">046</span>        METRICS_CONTEXT,<a name="line.46"></a>
-<span class="sourceLineNo">047</span>        METRICS_JMX_CONTEXT,<a name="line.47"></a>
-<span class="sourceLineNo">048</span>        masterWrapper);<a name="line.48"></a>
-<span class="sourceLineNo">049</span>  }<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>  public MetricsMasterSourceImpl(String metricsName,<a name="line.51"></a>
-<span class="sourceLineNo">052</span>                                 String metricsDescription,<a name="line.52"></a>
-<span class="sourceLineNo">053</span>                                 String metricsContext,<a name="line.53"></a>
-<span class="sourceLineNo">054</span>                                 String metricsJmxContext,<a name="line.54"></a>
-<span class="sourceLineNo">055</span>                                 MetricsMasterWrapper masterWrapper) {<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    super(metricsName, metricsDescription, metricsContext, metricsJmxContext);<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    this.masterWrapper = masterWrapper;<a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span>  }<a name="line.59"></a>
-<span class="sourceLineNo">060</span><a name="line.60"></a>
-<span class="sourceLineNo">061</span>  @Override<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  public void init() {<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    super.init();<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    clusterRequestsCounter = metricsRegistry.newCounter(CLUSTER_REQUESTS_NAME, "", 0L);<a name="line.64"></a>
-<span class="sourceLineNo">065</span><a name="line.65"></a>
-<span class="sourceLineNo">066</span>    /*<a name="line.66"></a>
-<span class="sourceLineNo">067</span>     * NOTE: Please refer to HBASE-9774 and HBASE-14282. Based on these two issues, HBase is<a name="line.67"></a>
-<span class="sourceLineNo">068</span>     * moving away from using Hadoop's metric2 to having independent HBase specific Metrics. Use<a name="line.68"></a>
-<span class="sourceLineNo">069</span>     * {@link BaseSourceImpl#registry} to register the new metrics.<a name="line.69"></a>
-<span class="sourceLineNo">070</span>     */<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    serverCrashMetrics = new OperationMetrics(registry, SERVER_CRASH_METRIC_PREFIX);<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  }<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>  @Override<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  public void incRequests(final long inc) {<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    this.clusterRequestsCounter.incr(inc);<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  }<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>  @Override<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  public void getMetrics(MetricsCollector metricsCollector, boolean all) {<a name="line.80"></a>
-<span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>    MetricsRecordBuilder metricsRecordBuilder = metricsCollector.addRecord(metricsName);<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>    // masterWrapper can be null because this function is called inside of init.<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    if (masterWrapper != null) {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      metricsRecordBuilder<a name="line.86"></a>
-<span class="sourceLineNo">087</span>          .addGauge(Interns.info(MERGE_PLAN_COUNT_NAME, MERGE_PLAN_COUNT_DESC),<a name="line.87"></a>
-<span class="sourceLineNo">088</span>              masterWrapper.getMergePlanCount())<a name="line.88"></a>
-<span class="sourceLineNo">089</span>          .addGauge(Interns.info(SPLIT_PLAN_COUNT_NAME, SPLIT_PLAN_COUNT_DESC),<a name="line.89"></a>
-<span class="sourceLineNo">090</span>              masterWrapper.getSplitPlanCount())<a name="line.90"></a>
-<span class="sourceLineNo">091</span>          .addGauge(Interns.info(MASTER_ACTIVE_TIME_NAME,<a name="line.91"></a>
-<span class="sourceLineNo">092</span>              MASTER_ACTIVE_TIME_DESC), masterWrapper.getActiveTime())<a name="line.92"></a>
-<span class="sourceLineNo">093</span>          .addGauge(Interns.info(MASTER_START_TIME_NAME,<a name="line.93"></a>
-<span class="sourceLineNo">094</span>              MASTER_START_TIME_DESC), masterWrapper.getStartTime())<a name="line.94"></a>
-<span class="sourceLineNo">095</span>          .addGauge(Interns.info(MASTER_FINISHED_INITIALIZATION_TIME_NAME,<a name="line.95"></a>
-<span class="sourceLineNo">096</span>                  MASTER_FINISHED_INITIALIZATION_TIME_DESC),<a name="line.96"></a>
-<span class="sourceLineNo">097</span>                  masterWrapper.getMasterInitializationTime())<a name="line.97"></a>
-<span class="sourceLineNo">098</span>          .addGauge(Interns.info(AVERAGE_LOAD_NAME, AVERAGE_LOAD_DESC),<a name="line.98"></a>
-<span class="sourceLineNo">099</span>              masterWrapper.getAverageLoad())<a name="line.99"></a>
-<span class="sourceLineNo">100</span>          .tag(Interns.info(LIVE_REGION_SERVERS_NAME, LIVE_REGION_SERVERS_DESC),<a name="line.100"></a>
-<span class="sourceLineNo">101</span>                masterWrapper.getRegionServers())<a name="line.101"></a>
-<span class="sourceLineNo">102</span>          .addGauge(Interns.info(NUM_REGION_SERVERS_NAME,<a name="line.102"></a>
-<span class="sourceLineNo">103</span>              NUMBER_OF_REGION_SERVERS_DESC), masterWrapper.getNumRegionServers())<a name="line.103"></a>
-<span class="sourceLineNo">104</span>          .tag(Interns.info(DEAD_REGION_SERVERS_NAME, DEAD_REGION_SERVERS_DESC),<a name="line.104"></a>
-<span class="sourceLineNo">105</span>                masterWrapper.getDeadRegionServers())<a name="line.105"></a>
-<span class="sourceLineNo">106</span>          .addGauge(Interns.info(NUM_DEAD_REGION_SERVERS_NAME,<a name="line.106"></a>
-<span class="sourceLineNo">107</span>              NUMBER_OF_DEAD_REGION_SERVERS_DESC),<a name="line.107"></a>
-<span class="sourceLineNo">108</span>              masterWrapper.getNumDeadRegionServers())<a name="line.108"></a>
-<span class="sourceLineNo">109</span>          .tag(Interns.info(ZOOKEEPER_QUORUM_NAME, ZOOKEEPER_QUORUM_DESC),<a name="line.109"></a>
-<span class="sourceLineNo">110</span>              masterWrapper.getZookeeperQuorum())<a name="line.110"></a>
-<span class="sourceLineNo">111</span>          .tag(Interns.info(SERVER_NAME_NAME, SERVER_NAME_DESC), masterWrapper.getServerName())<a name="line.111"></a>
-<span class="sourceLineNo">112</span>          .tag(Interns.info(CLUSTER_ID_NAME, CLUSTER_ID_DESC), masterWrapper.getClusterId())<a name="line.112"></a>
-<span class="sourceLineNo">113</span>          .tag(Interns.info(IS_ACTIVE_MASTER_NAME,<a name="line.113"></a>
-<span class="sourceLineNo">114</span>              IS_ACTIVE_MASTER_DESC),<a name="line.114"></a>
-<span class="sourceLineNo">115</span>              String.valueOf(masterWrapper.getIsActiveMaster()));<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>    metricsRegistry.snapshot(metricsRecordBuilder, all);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  }<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  @Override<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public OperationMetrics getServerCrashMetrics() {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    return serverCrashMetrics;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  }<a name="line.124"></a>
-<span class="sourceLineNo">125</span>}<a name="line.125"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.util.PairOfSameType;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.metrics2.MetricsCollector;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.metrics2.MetricsRecordBuilder;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.metrics2.lib.MutableFastCounter;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.28"></a>
+<span class="sourceLineNo">029</span><a name="line.29"></a>
+<span class="sourceLineNo">030</span>/**<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * Hadoop2 implementation of MetricsMasterSource.<a name="line.31"></a>
+<span class="sourceLineNo">032</span> *<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * Implements BaseSource through BaseSourceImpl, following the pattern<a name="line.33"></a>
+<span class="sourceLineNo">034</span> */<a name="line.34"></a>
+<span class="sourceLineNo">035</span>@InterfaceAudience.Private<a name="line.35"></a>
+<span class="sourceLineNo">036</span>public class MetricsMasterSourceImpl<a name="line.36"></a>
+<span class="sourceLineNo">037</span>    extends BaseSourceImpl implements MetricsMasterSource {<a name="line.37"></a>
+<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">039</span>  private final MetricsMasterWrapper masterWrapper;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>  private MutableFastCounter clusterRequestsCounter;<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>  private OperationMetrics serverCrashMetrics;<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>  public MetricsMasterSourceImpl(MetricsMasterWrapper masterWrapper) {<a name="line.44"></a>
+<span class="sourceLineNo">045</span>    this(METRICS_NAME,<a name="line.45"></a>
+<span class="sourceLineNo">046</span>        METRICS_DESCRIPTION,<a name="line.46"></a>
+<span class="sourceLineNo">047</span>        METRICS_CONTEXT,<a name="line.47"></a>
+<span class="sourceLineNo">048</span>        METRICS_JMX_CONTEXT,<a name="line.48"></a>
+<span class="sourceLineNo">049</span>        masterWrapper);<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  }<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>  public MetricsMasterSourceImpl(String metricsName,<a name="line.52"></a>
+<span class="sourceLineNo">053</span>                                 String metricsDescription,<a name="line.53"></a>
+<span class="sourceLineNo">054</span>                                 String metricsContext,<a name="line.54"></a>
+<span class="sourceLineNo">055</span>                                 String metricsJmxContext,<a name="line.55"></a>
+<span class="sourceLineNo">056</span>                                 MetricsMasterWrapper masterWrapper) {<a name="line.56"></a>
+<span class="sourceLineNo">057</span>    super(metricsName, metricsDescription, metricsContext, metricsJmxContext);<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    this.masterWrapper = masterWrapper;<a name="line.58"></a>
+<span class="sourceLineNo">059</span><a name="line.59"></a>
+<span class="sourceLineNo">060</span>  }<a name="line.60"></a>
+<span class="sourceLineNo">061</span><a name="line.61"></a>
+<span class="sourceLineNo">062</span>  @Override<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  public void init() {<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    super.init();<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    clusterRequestsCounter = metricsRegistry.newCounter(CLUSTER_REQUESTS_NAME, "", 0L);<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>    /*<a name="line.67"></a>
+<span class="sourceLineNo">068</span>     * NOTE: Please refer to HBASE-9774 and HBASE-14282. Based on these two issues, HBase is<a name="line.68"></a>
+<span class="sourceLineNo">069</span>     * moving away from using Hadoop's metric2 to having independent HBase specific Metrics. Use<a name="line.69"></a>
+<span class="sourceLineNo">070</span>     * {@link BaseSourceImpl#registry} to register the new metrics.<a name="line.70"></a>
+<span class="sourceLineNo">071</span>     */<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    serverCrashMetrics = new OperationMetrics(registry, SERVER_CRASH_METRIC_PREFIX);<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>  @Override<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  public void incRequests(final long inc) {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    this.clusterRequestsCounter.incr(inc);<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  }<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>  @Override<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  public void getMetrics(MetricsCollector metricsCollector, boolean all) {<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>    MetricsRecordBuilder metricsRecordBuilder = metricsCollector.addRecord(metricsName);<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>    // masterWrapper can be null because this function is called inside of init.<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    if (masterWrapper != null) {<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>      // Pair&lt;online region number, offline region number&gt;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      PairOfSameType&lt;Integer&gt; regionNumberPair = masterWrapper.getRegionCounts();<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>      metricsRecordBuilder<a name="line.91"></a>
+<span class="sourceLineNo">092</span>          .addGauge(Interns.info(MERGE_PLAN_COUNT_NAME, MERGE_PLAN_COUNT_DESC),<a name="line.92"></a>
+<span class="sourceLineNo">093</span>              masterWrapper.getMergePlanCount())<a name="line.93"></a>
+<span class="sourceLineNo">094</span>          .addGauge(Interns.info(SPLIT_PLAN_COUNT_NAME, SPLIT_PLAN_COUNT_DESC),<a name="line.94"></a>
+<span class="sourceLineNo">095</span>              masterWrapper.getSplitPlanCount())<a name="line.95"></a>
+<span class="sourceLineNo">096</span>          .addGauge(Interns.info(MASTER_ACTIVE_TIME_NAME,<a name="line.96"></a>
+<span class="sourceLineNo">097</span>              MASTER_ACTIVE_TIME_DESC), masterWrapper.getActiveTime())<a name="line.97"></a>
+<span class="sourceLineNo">098</span>          .addGauge(Interns.info(MASTER_START_TIME_NAME,<a name="line.98"></a>
+<span class="sourceLineNo">099</span>              MASTER_START_TIME_DESC), masterWrapper.getStartTime())<a name="line.99"></a>
+<span class="sourceLineNo">100</span>          .addGauge(Interns.info(MASTER_FINISHED_INITIALIZATION_TIME_NAME,<a name="line.100"></a>
+<span class="sourceLineNo">101</span>                  MASTER_FINISHED_INITIALIZATION_TIME_DESC),<a name="line.101"></a>
+<span class="sourceLineNo">102</span>                  masterWrapper.getMasterInitializationTime())<a name="line.102"></a>
+<span class="sourceLineNo">103</span>          .addGauge(Interns.info(AVERAGE_LOAD_NAME, AVERAGE_LOAD_DESC),<a name="line.103"></a>
+<span class="sourceLineNo">104</span>              masterWrapper.getAverageLoad())<a name="line.104"></a>
+<span class="sourceLineNo">105</span>          .addGauge(Interns.info(ONLINE_REGION_COUNT_NAME, ONLINE_REGION_COUNT_DESC),<a name="line.105"></a>
+<span class="sourceLineNo">106</span>              regionNumberPair.getFirst())<a name="line.106"></a>
+<span class="sourceLineNo">107</span>          .addGauge(Interns.info(OFFLINE_REGION_COUNT_NAME, OFFLINE_REGION_COUNT_DESC),<a name="line.107"></a>
+<span class="sourceLineNo">108</span>              regionNumberPair.getSecond())<a name="line.108"></a>
+<span class="sourceLineNo">109</span>          .tag(Interns.info(LIVE_REGION_SERVERS_NAME, LIVE_REGION_SERVERS_DESC),<a name="line.109"></a>
+<span class="sourceLineNo">110</span>                masterWrapper.getRegionServers())<a name="line.110"></a>
+<span class="sourceLineNo">111</span>          .addGauge(Interns.info(NUM_REGION_SERVERS_NAME,<a name="line.111"></a>
+<span class="sourceLineNo">112</span>              NUMBER_OF_REGION_SERVERS_DESC), masterWrapper.getNumRegionServers())<a name="line.112"></a>
+<span class="sourceLineNo">113</span>          .tag(Interns.info(DEAD_REGION_SERVERS_NAME, DEAD_REGION_SERVERS_DESC),<a name="line.113"></a>
+<span class="sourceLineNo">114</span>                masterWrapper.getDeadRegionServers())<a name="line.114"></a>
+<span class="sourceLineNo">115</span>          .addGauge(Interns.info(NUM_DEAD_REGION_SERVERS_NAME,<a name="line.115"></a>
+<span class="sourceLineNo">116</span>              NUMBER_OF_DEAD_REGION_SERVERS_DESC),<a name="line.116"></a>
+<span class="sourceLineNo">117</span>              masterWrapper.getNumDeadRegionServers())<a name="line.117"></a>
+<span class="sourceLineNo">118</span>          .tag(Interns.info(ZOOKEEPER_QUORUM_NAME, ZOOKEEPER_QUORUM_DESC),<a name="line.118"></a>
+<span class="sourceLineNo">119</span>              masterWrapper.getZookeeperQuorum())<a name="line.119"></a>
+<span class="sourceLineNo">120</span>          .tag(Interns.info(SERVER_NAME_NAME, SERVER_NAME_DESC), masterWrapper.getServerName())<a name="line.120"></a>
+<span class="sourceLineNo">121</span>          .tag(Interns.info(CLUSTER_ID_NAME, CLUSTER_ID_DESC), masterWrapper.getClusterId())<a name="line.121"></a>
+<span class="sourceLineNo">122</span>          .tag(Interns.info(IS_ACTIVE_MASTER_NAME, IS_ACTIVE_MASTER_DESC),<a name="line.122"></a>
+<span class="sourceLineNo">123</span>              String.valueOf(masterWrapper.getIsActiveMaster()));<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    }<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>    metricsRegistry.snapshot(metricsRecordBuilder, all);<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>  @Override<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  public OperationMetrics getServerCrashMetrics() {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    return serverCrashMetrics;<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>
 
 
 


[22/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html
index db8431b..a8cb7c4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html
@@ -885,7766 +885,7797 @@
 <span class="sourceLineNo">877</span>   * @return What the next sequence (edit) id should be.<a name="line.877"></a>
 <span class="sourceLineNo">878</span>   * @throws IOException e<a name="line.878"></a>
 <span class="sourceLineNo">879</span>   */<a name="line.879"></a>
-<span class="sourceLineNo">880</span>  private long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.880"></a>
-<span class="sourceLineNo">881</span><a name="line.881"></a>
-<span class="sourceLineNo">882</span>    //Refuse to open the region if there is no column family in the table<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.884"></a>
-<span class="sourceLineNo">885</span>          " should have at least one column family.");<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    long nextSeqId = -1;<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    try {<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.891"></a>
-<span class="sourceLineNo">892</span>      return nextSeqId;<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    } finally {<a name="line.893"></a>
-<span class="sourceLineNo">894</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      // At least it will be 0 otherwise.<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      if (nextSeqId == -1) {<a name="line.896"></a>
-<span class="sourceLineNo">897</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.897"></a>
-<span class="sourceLineNo">898</span>          " initialization.");<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      }<a name="line.899"></a>
-<span class="sourceLineNo">900</span>    }<a name="line.900"></a>
-<span class="sourceLineNo">901</span>  }<a name="line.901"></a>
-<span class="sourceLineNo">902</span><a name="line.902"></a>
-<span class="sourceLineNo">903</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.903"></a>
-<span class="sourceLineNo">904</span>      final MonitoredTask status) throws IOException {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    if (coprocessorHost != null) {<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      coprocessorHost.preOpen();<a name="line.907"></a>
-<span class="sourceLineNo">908</span>    }<a name="line.908"></a>
-<span class="sourceLineNo">909</span><a name="line.909"></a>
-<span class="sourceLineNo">910</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.910"></a>
-<span class="sourceLineNo">911</span>    // Only the primary replica should write .regioninfo<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      status.setStatus("Writing region info on filesystem");<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      fs.checkRegionInfoOnFilesystem();<a name="line.914"></a>
-<span class="sourceLineNo">915</span>    }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>    // Initialize all the HStores<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    status.setStatus("Initializing all the Stores");<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.920"></a>
-<span class="sourceLineNo">921</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.922"></a>
-<span class="sourceLineNo">923</span>      try {<a name="line.923"></a>
-<span class="sourceLineNo">924</span>        // update the stores that we are replaying<a name="line.924"></a>
-<span class="sourceLineNo">925</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        // Recover any edits if available.<a name="line.927"></a>
-<span class="sourceLineNo">928</span>        maxSeqId = Math.max(maxSeqId,<a name="line.928"></a>
-<span class="sourceLineNo">929</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        // Make sure mvcc is up to max.<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      } finally {<a name="line.932"></a>
-<span class="sourceLineNo">933</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        // update the stores that we are done replaying<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        stores.forEach(HStore::stopReplayingFromWAL);<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>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    this.writestate.flushRequested = false;<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    this.writestate.compacting.set(0);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>    if (this.writestate.writesEnabled) {<a name="line.944"></a>
-<span class="sourceLineNo">945</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      // Remove temporary data left over from old regions<a name="line.946"></a>
-<span class="sourceLineNo">947</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.947"></a>
-<span class="sourceLineNo">948</span>      fs.cleanupTempDir();<a name="line.948"></a>
-<span class="sourceLineNo">949</span>    }<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>    if (this.writestate.writesEnabled) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      // these directories here on open.  We may be opening a region that was<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      // being split but we crashed in the middle of it all.<a name="line.955"></a>
-<span class="sourceLineNo">956</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      fs.cleanupAnySplitDetritus();<a name="line.957"></a>
-<span class="sourceLineNo">958</span>      fs.cleanupMergesDir();<a name="line.958"></a>
-<span class="sourceLineNo">959</span>    }<a name="line.959"></a>
+<span class="sourceLineNo">880</span>  @VisibleForTesting<a name="line.880"></a>
+<span class="sourceLineNo">881</span>  long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>    //Refuse to open the region if there is no column family in the table<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.885"></a>
+<span class="sourceLineNo">886</span>          " should have at least one column family.");<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    }<a name="line.887"></a>
+<span class="sourceLineNo">888</span><a name="line.888"></a>
+<span class="sourceLineNo">889</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>    long nextSeqId = -1;<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    try {<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      return nextSeqId;<a name="line.893"></a>
+<span class="sourceLineNo">894</span>    } catch (IOException e) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      LOG.warn("Failed initialize of region= {}, starting to roll back memstore",<a name="line.895"></a>
+<span class="sourceLineNo">896</span>          getRegionInfo().getRegionNameAsString(), e);<a name="line.896"></a>
+<span class="sourceLineNo">897</span>      // global memstore size will be decreased when dropping memstore<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      try {<a name="line.898"></a>
+<span class="sourceLineNo">899</span>        //drop the memory used by memstore if open region fails<a name="line.899"></a>
+<span class="sourceLineNo">900</span>        dropMemStoreContents();<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      } catch (IOException ioE) {<a name="line.901"></a>
+<span class="sourceLineNo">902</span>        if (conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {<a name="line.902"></a>
+<span class="sourceLineNo">903</span>          LOG.warn("Failed drop memstore of region= {}, "<a name="line.903"></a>
+<span class="sourceLineNo">904</span>                  + "some chunks may not released forever since MSLAB is enabled",<a name="line.904"></a>
+<span class="sourceLineNo">905</span>              getRegionInfo().getRegionNameAsString());<a name="line.905"></a>
+<span class="sourceLineNo">906</span>        }<a name="line.906"></a>
+<span class="sourceLineNo">907</span><a name="line.907"></a>
+<span class="sourceLineNo">908</span>      }<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      throw e;<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    } finally {<a name="line.910"></a>
+<span class="sourceLineNo">911</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      // At least it will be 0 otherwise.<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      if (nextSeqId == -1) {<a name="line.913"></a>
+<span class="sourceLineNo">914</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.914"></a>
+<span class="sourceLineNo">915</span>          " initialization.");<a name="line.915"></a>
+<span class="sourceLineNo">916</span>      }<a name="line.916"></a>
+<span class="sourceLineNo">917</span>    }<a name="line.917"></a>
+<span class="sourceLineNo">918</span>  }<a name="line.918"></a>
+<span class="sourceLineNo">919</span><a name="line.919"></a>
+<span class="sourceLineNo">920</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.920"></a>
+<span class="sourceLineNo">921</span>      final MonitoredTask status) throws IOException {<a name="line.921"></a>
+<span class="sourceLineNo">922</span>    if (coprocessorHost != null) {<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.923"></a>
+<span class="sourceLineNo">924</span>      coprocessorHost.preOpen();<a name="line.924"></a>
+<span class="sourceLineNo">925</span>    }<a name="line.925"></a>
+<span class="sourceLineNo">926</span><a name="line.926"></a>
+<span class="sourceLineNo">927</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.927"></a>
+<span class="sourceLineNo">928</span>    // Only the primary replica should write .regioninfo<a name="line.928"></a>
+<span class="sourceLineNo">929</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>      status.setStatus("Writing region info on filesystem");<a name="line.930"></a>
+<span class="sourceLineNo">931</span>      fs.checkRegionInfoOnFilesystem();<a name="line.931"></a>
+<span class="sourceLineNo">932</span>    }<a name="line.932"></a>
+<span class="sourceLineNo">933</span><a name="line.933"></a>
+<span class="sourceLineNo">934</span>    // Initialize all the HStores<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    status.setStatus("Initializing all the Stores");<a name="line.935"></a>
+<span class="sourceLineNo">936</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.937"></a>
+<span class="sourceLineNo">938</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.938"></a>
+<span class="sourceLineNo">939</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.939"></a>
+<span class="sourceLineNo">940</span>      try {<a name="line.940"></a>
+<span class="sourceLineNo">941</span>        // update the stores that we are replaying<a name="line.941"></a>
+<span class="sourceLineNo">942</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.942"></a>
+<span class="sourceLineNo">943</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.943"></a>
+<span class="sourceLineNo">944</span>        // Recover any edits if available.<a name="line.944"></a>
+<span class="sourceLineNo">945</span>        maxSeqId = Math.max(maxSeqId,<a name="line.945"></a>
+<span class="sourceLineNo">946</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.946"></a>
+<span class="sourceLineNo">947</span>        // Make sure mvcc is up to max.<a name="line.947"></a>
+<span class="sourceLineNo">948</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      } finally {<a name="line.949"></a>
+<span class="sourceLineNo">950</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        // update the stores that we are done replaying<a name="line.951"></a>
+<span class="sourceLineNo">952</span>        stores.forEach(HStore::stopReplayingFromWAL);<a name="line.952"></a>
+<span class="sourceLineNo">953</span>      }<a name="line.953"></a>
+<span class="sourceLineNo">954</span>    }<a name="line.954"></a>
+<span class="sourceLineNo">955</span>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.955"></a>
+<span class="sourceLineNo">956</span><a name="line.956"></a>
+<span class="sourceLineNo">957</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.957"></a>
+<span class="sourceLineNo">958</span>    this.writestate.flushRequested = false;<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    this.writestate.compacting.set(0);<a name="line.959"></a>
 <span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>    // Initialize split policy<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.962"></a>
-<span class="sourceLineNo">963</span><a name="line.963"></a>
-<span class="sourceLineNo">964</span>    // Initialize flush policy<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.965"></a>
-<span class="sourceLineNo">966</span><a name="line.966"></a>
-<span class="sourceLineNo">967</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    for (HStore store: stores.values()) {<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<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>    // Use maximum of log sequenceid or that which was found in stores<a name="line.972"></a>
-<span class="sourceLineNo">973</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.973"></a>
-<span class="sourceLineNo">974</span>    long maxSeqIdFromFile =<a name="line.974"></a>
-<span class="sourceLineNo">975</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.975"></a>
-<span class="sourceLineNo">976</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.976"></a>
-<span class="sourceLineNo">977</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    // the max sequence id file.<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.985"></a>
-<span class="sourceLineNo">986</span><a name="line.986"></a>
-<span class="sourceLineNo">987</span>    // A region can be reopened if failed a split; reset flags<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    this.closing.set(false);<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    this.closed.set(false);<a name="line.989"></a>
-<span class="sourceLineNo">990</span><a name="line.990"></a>
-<span class="sourceLineNo">991</span>    if (coprocessorHost != null) {<a name="line.991"></a>
-<span class="sourceLineNo">992</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.992"></a>
-<span class="sourceLineNo">993</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.993"></a>
-<span class="sourceLineNo">994</span>      coprocessorHost.postOpen();<a name="line.994"></a>
-<span class="sourceLineNo">995</span>    }<a name="line.995"></a>
-<span class="sourceLineNo">996</span><a name="line.996"></a>
-<span class="sourceLineNo">997</span>    status.markComplete("Region opened successfully");<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    return nextSeqId;<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>   * Open all Stores.<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>   * @param reporter<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   * @param status<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>   * @return Highest sequenceId found out in a Store.<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * @throws IOException<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   */<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      throws IOException {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>    // Load in all the HStores.<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    long maxSeqId = -1;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    long maxMemstoreTS = -1;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span><a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span><a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      // initialize each store in parallel<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>          @Override<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>          public HStore call() throws IOException {<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>            return instantiateHStore(family);<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          }<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>        });<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      }<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>      boolean allStoresOpened = false;<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>      boolean hasSloppyStores = false;<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>      try {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>          HStore store = future.get();<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>          if (store.isSloppyMemStore()) {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            hasSloppyStores = true;<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>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>              storeMaxSequenceId);<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            maxSeqId = storeMaxSequenceId;<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>          }<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>          }<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>        }<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>        allStoresOpened = true;<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>        if(hasSloppyStores) {<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>                  .build();<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        }<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>      } catch (InterruptedException e) {<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>      } catch (ExecutionException e) {<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        throw new IOException(e.getCause());<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>      } finally {<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        if (!allStoresOpened) {<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>          // something went wrong, close all opened stores<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>          for (HStore store : this.stores.values()) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>            try {<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>              store.close();<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>            } catch (IOException e) {<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>              LOG.warn("close store failed", e);<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>            }<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          }<a name="line.1075"></a>
+<span class="sourceLineNo">961</span>    if (this.writestate.writesEnabled) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      // Remove temporary data left over from old regions<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      fs.cleanupTempDir();<a name="line.965"></a>
+<span class="sourceLineNo">966</span>    }<a name="line.966"></a>
+<span class="sourceLineNo">967</span><a name="line.967"></a>
+<span class="sourceLineNo">968</span>    if (this.writestate.writesEnabled) {<a name="line.968"></a>
+<span class="sourceLineNo">969</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.969"></a>
+<span class="sourceLineNo">970</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.970"></a>
+<span class="sourceLineNo">971</span>      // these directories here on open.  We may be opening a region that was<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      // being split but we crashed in the middle of it all.<a name="line.972"></a>
+<span class="sourceLineNo">973</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.973"></a>
+<span class="sourceLineNo">974</span>      fs.cleanupAnySplitDetritus();<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      fs.cleanupMergesDir();<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    }<a name="line.976"></a>
+<span class="sourceLineNo">977</span><a name="line.977"></a>
+<span class="sourceLineNo">978</span>    // Initialize split policy<a name="line.978"></a>
+<span class="sourceLineNo">979</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.979"></a>
+<span class="sourceLineNo">980</span><a name="line.980"></a>
+<span class="sourceLineNo">981</span>    // Initialize flush policy<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.982"></a>
+<span class="sourceLineNo">983</span><a name="line.983"></a>
+<span class="sourceLineNo">984</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.984"></a>
+<span class="sourceLineNo">985</span>    for (HStore store: stores.values()) {<a name="line.985"></a>
+<span class="sourceLineNo">986</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<a name="line.986"></a>
+<span class="sourceLineNo">987</span>    }<a name="line.987"></a>
+<span class="sourceLineNo">988</span><a name="line.988"></a>
+<span class="sourceLineNo">989</span>    // Use maximum of log sequenceid or that which was found in stores<a name="line.989"></a>
+<span class="sourceLineNo">990</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.990"></a>
+<span class="sourceLineNo">991</span>    long maxSeqIdFromFile =<a name="line.991"></a>
+<span class="sourceLineNo">992</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.994"></a>
+<span class="sourceLineNo">995</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.995"></a>
+<span class="sourceLineNo">996</span>    // the max sequence id file.<a name="line.996"></a>
+<span class="sourceLineNo">997</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.997"></a>
+<span class="sourceLineNo">998</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.998"></a>
+<span class="sourceLineNo">999</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<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>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span><a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>    // A region can be reopened if failed a split; reset flags<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>    this.closing.set(false);<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    this.closed.set(false);<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span><a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>    if (coprocessorHost != null) {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>      coprocessorHost.postOpen();<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>    }<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span><a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>    status.markComplete("Region opened successfully");<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>    return nextSeqId;<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>  }<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span><a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>  /**<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>   * Open all Stores.<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>   * @param reporter<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>   * @param status<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>   * @return Highest sequenceId found out in a Store.<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>   * @throws IOException<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>   */<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>      throws IOException {<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    // Load in all the HStores.<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>    long maxSeqId = -1;<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>    long maxMemstoreTS = -1;<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span><a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>      // initialize each store in parallel<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>          @Override<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>          public HStore call() throws IOException {<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>            return instantiateHStore(family);<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>          }<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>        });<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>      }<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>      boolean allStoresOpened = false;<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>      boolean hasSloppyStores = false;<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>      try {<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>          HStore store = future.get();<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>          if (store.isSloppyMemStore()) {<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>            hasSloppyStores = true;<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>          }<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span><a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>              storeMaxSequenceId);<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>            maxSeqId = storeMaxSequenceId;<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>          }<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>          }<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span>        }<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>        allStoresOpened = true;<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>        if(hasSloppyStores) {<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>                  .build();<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1075"></a>
 <span class="sourceLineNo">1076</span>        }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      }<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    }<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>  }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span><a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>    // Initialize all the HStores<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>    status.setStatus("Warming up all the Stores");<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    try {<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>      initializeStores(reporter, status);<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>    } finally {<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>      status.markComplete("Done warming up.");<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>    }<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>  }<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>   * @return Map of StoreFiles by column family<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>   */<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    for (HStore store : stores.values()) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      if (storeFiles == null) {<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>        continue;<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>        storeFileNames.add(storeFile.getPath());<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      }<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>    }<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>    return allStoreFiles;<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>  }<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span><a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>  @VisibleForTesting<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>        mvcc);<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  }<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span><a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>        mvcc);<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span><a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>    // Store SeqId in HDFS when a region closes<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    // table is still online<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>        mvcc.getReadPoint());<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>    }<a name="line.1136"></a>
+<span class="sourceLineNo">1077</span>      } catch (InterruptedException e) {<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>      } catch (ExecutionException e) {<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>        throw new IOException(e.getCause());<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      } finally {<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>        if (!allStoresOpened) {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>          // something went wrong, close all opened stores<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>          for (HStore store : this.stores.values()) {<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>            try {<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>              store.close();<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>            } catch (IOException e) {<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>              LOG.warn("close store failed", e);<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>            }<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>      }<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>    }<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>  }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span><a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>    // Initialize all the HStores<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>    status.setStatus("Warming up all the Stores");<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>    try {<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>      initializeStores(reporter, status);<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>    } finally {<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>      status.markComplete("Done warming up.");<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>    }<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>  }<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span><a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>  /**<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>   * @return Map of StoreFiles by column family<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>   */<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>    for (HStore store : stores.values()) {<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>      if (storeFiles == null) {<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>        continue;<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span>      }<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>        storeFileNames.add(storeFile.getPath());<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>      }<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>    }<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>    return allStoreFiles;<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>  }<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span><a name="line.1128"></a>
+<span class="sourceLineNo">1129</span>  @VisibleForTesting<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>        mvcc);<a name="line.1136"></a>
 <span class="sourceLineNo">1137</span>  }<a name="line.1137"></a>
 <span class="sourceLineNo">1138</span><a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>  /**<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>   * @return True if this region has references.<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>   */<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>  public boolean hasReferences() {<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<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>  public void blockUpdates() {<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>    this.updatesLock.writeLock().lock();<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>  }<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span><a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>  public void unblockUpdates() {<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>    this.updatesLock.writeLock().unlock();<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>  }<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span><a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>    return hdfsBlocksDistribution;<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>  }<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span><a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>  /**<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>   * @param conf configuration<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>   * @param regionInfo encoded name of the region<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>   * @throws IOException<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>   */<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>  }<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span><a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>  /**<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>   * @param conf configuration<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>   * @param regionInfo encoded name of the region<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>   * @param tablePath the table directory<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>   * @throws IOException<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>   */<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1186"></a>
-<span class="sourceLineNo">1187</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1188"></a>
-<span class="sourceLineNo">1189</span><a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span>      if (locatedFileStatusList == null) {<a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>        continue;<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>      }<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span><a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>        Path p = status.getPath();<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>          // creation<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>              status.getBlockLocations());<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span>        } else {<a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>          throw new IOException("path=" + p<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>              + " doesn't look like a valid StoreFile");<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>        }<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>      }<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>    }<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>    return hdfsBlocksDistribution;<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>   * Increase the size of mem store in this region and the size of global mem<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>   * store<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>   */<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>  }<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span><a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>    if (this.rsAccounting != null) {<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>    }<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>    long dataSize =<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1234"></a>
+<span class="sourceLineNo">1139</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span>        mvcc);<a name="line.1145"></a>
+<span class="sourceLineNo">1146</span><a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>    // Store SeqId in HDFS when a region closes<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>    // table is still online<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span>        mvcc.getReadPoint());<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>    }<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>  }<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span><a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>  /**<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>   * @return True if this region has references.<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>   */<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>  public boolean hasReferences() {<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>  }<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span><a name="line.1162"></a>
+<span class="sourceLineNo">1163</span>  public void blockUpdates() {<a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>    this.updatesLock.writeLock().lock();<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>  }<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span><a name="line.1166"></a>
+<span class="sourceLineNo">1167</span>  public void unblockUpdates() {<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>    this.updatesLock.writeLock().unlock();<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>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1172"></a>
+<span class="sourceLineNo">1173</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1174"></a>
+<span class="sourceLineNo">1175</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>    return hdfsBlocksDistribution;<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span>  }<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span><a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>  /**<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>   * @param conf configuration<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1182"></a>
+<span class="sourceLineNo">1183</span>   * @param regionInfo encoded name of the region<a name="line.1183"></a>
+<span class="sourceLineNo">1184</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1184"></a>
+<span class="sourceLineNo">1185</span>   * @throws IOException<a name="line.1185"></a>
+<span class="sourceLineNo">1186</span>   */<a name="line.1186"></a>
+<span class="sourceLineNo">1187</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1187"></a>
+<span class="sourceLineNo">1188</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1188"></a>
+<span class="sourceLineNo">1189</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1189"></a>
+<span class="sourceLineNo">1190</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1190"></a>
+<span class="sourceLineNo">1191</span>  }<a name="line.1191"></a>
+<span class="sourceLineNo">1192</span><a name="line.1192"></a>
+<span class="sourceLineNo">1193</span>  /**<a name="line.1193"></a>
+<span class="sourceLineNo">1194</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1194"></a>
+<span class="sourceLineNo">1195</span>   * @param conf configuration<a name="line.1195"></a>
+<span class="sourceLineNo">1196</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1196"></a>
+<span class="sourceLineNo">1197</span>   * @param regionInfo encoded name of the region<a name="line.1197"></a>
+<span class="sourceLineNo">1198</span>   * @param tablePath the table directory<a name="line.1198"></a>
+<span class="sourceLineNo">1199</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1199"></a>
+<span class="sourceLineNo">1200</span>   * @throws IOException<a name="line.1200"></a>
+<span class="sourceLineNo">1201</span>   */<a name="line.1201"></a>
+<span class="sourceLineNo">1202</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1202"></a>
+<span class="sourceLineNo">1203</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1203"></a>
+<span class="sourceLineNo">1204</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1204"></a>
+<span class="sourceLineNo">1205</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1205"></a>
+<span class="sourceLineNo">1206</span><a name="line.1206"></a>
+<span class="sourceLineNo">1207</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1207"></a>
+<span class="sourceLineNo">1208</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1208"></a>
+<span class="sourceLineNo">1209</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1209"></a>
+<span class="sourceLineNo">1210</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1210"></a>
+<span class="sourceLineNo">1211</span>      if (locatedFileStatusList == null) {<a name="line.1211"></a>
+<span class="sourceLineNo">1212</span>        continue;<a name="line.1212"></a>
+<span class="sourceLineNo">1213</span>      }<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span><a name="line.1214"></a>
+<span class="sourceLineNo">1215</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1215"></a>
+<span class="sourceLineNo">1216</span>        Path p = status.getPath();<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1217"></a>
+<span class="sourceLineNo">1218</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span>          // creation<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1224"></a>
+<span class="sourceLineNo">1225</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1225"></a>
+<span class="sourceLineNo">1226</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1226"></a>
+<span class="sourceLineNo">1227</span>              status.getBlockLocations());<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span>        } else {<a name="line.1228"></a>
+<span class="sourceLineNo">1229</span>          throw new IOException("path=" + p<a name="line.1229"></a>
+<span class="sourceLineNo">1230</span>              + " doesn't look like a valid StoreFile");<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>    }<a name="line.1233"></a>
+<span class="sourceLineNo">1234</span>    return hdfsBlocksDistribution;<a name="line.1234"></a>
 <span class="sourceLineNo">1235</span>  }<a name="line.1235"></a>
 <span class="sourceLineNo">1236</span><a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>  }<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span><a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>    if (this.rsAccounting != null) {<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>    }<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>    long dataSize =<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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 checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    if (memStoreDataSize &lt; 0) {<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>    }<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>  }<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span><a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>  @Override<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>  public RegionInfo getRegionInfo() {<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>    return this.fs.getRegionInfo();<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>  }<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span><a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>  /**<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>   * @return Instance of {@link RegionServerServices} used by this HRegion.<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>   * Can be null.<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>   */<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>  RegionServerServices getRegionServerServices() {<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>    return this.rsServices;<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>  }<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span><a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>  @Override<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>  public long getReadRequestsCount() {<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>    return readRequestsCount.sum();<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>  }<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span><a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>  @Override<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>  public long getCpRequestsCount() {<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>    return cpRequestsCount.sum();<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>  @Override<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>  public long getFilteredReadRequestsCount() {<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>    return filteredReadRequestsCount.sum();<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>  @Override<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>  public long getWriteRequestsCount() {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    return writeRequestsCount.sum();<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>  }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>  @Override<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>  public long getMemStoreDataSize() {<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>    return memStoreSizing.getDataSize();<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>  @Override<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>  public long getMemStoreHeapSize() {<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>    return memStoreSizing.getHeapSize();<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>  }<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span><a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>  @Override<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>  public long getMemStoreOffHeapSize() {<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>    return memStoreSizing.getOffHeapSize();<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>  }<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span><a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>  /** @return store services for this region, to access services required by store level needs */<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>  public RegionServicesForStores getRegionServicesForStores() {<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>    return regionServicesForStores;<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>  @Override<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>  public long getNumMutationsWithoutWAL() {<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>    return numMutationsWithoutWAL.sum();<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>  @Override<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>  public long getDataInMemoryWithoutWAL() {<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>    return dataInMemoryWithoutWAL.sum();<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>  }<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span><a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>  @Override<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>  public long getBlockedRequestsCount() {<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>    return blockedRequestsCount.sum();<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>  }<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span><a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>  @Override<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>  public long getCheckAndMutateChecksPassed() {<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>    return checkAndMutateChecksPassed.sum();<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 long getCheckAndMutateChecksFailed() {<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    return checkAndMutateChecksFailed.sum();<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>  // TODO Needs to check whether we should expose our metrics system to CPs. If CPs themselves doing<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>  // the op and bypassing the core, this might be needed? Should be stop supporting the bypass<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>  // feature?<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>  public MetricsRegion getMetrics() {<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>    return metricsRegion;<a name="line.1342"></a>
+<span class="sourceLineNo">1237</span>  /**<a name="line.1237"></a>
+<span class="sourceLineNo">1238</span>   * Increase the size of mem store in this region and the size of global mem<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span>   * store<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span>   */<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>  }<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span><a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>    if (this.rsAccounting != null) {<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>    }<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>    long dataSize =<a name="line.1249"></a>
+<span class="sourceLineNo">1250</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1250"></a>
+<span class="sourceLineNo">1251</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>  }<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span><a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span>  }<a name="line.1256"></a>
+<span class="sourceLineNo">1257</span><a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>    if (this.rsAccounting != null) {<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>    }<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>    long dataSize =<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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>  private void checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>    if (memStoreDataSize &lt; 0) {<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>    }<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>  }<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span><a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>  @Override<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>  public RegionInfo getRegionInfo() {<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>    return this.fs.getRegionInfo();<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>  }<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>
+<spa

<TRUNCATED>

[43/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
index b62cd5a..d358bb7 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3769">HRegion.ReplayBatchOperation</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3786">HRegion.ReplayBatchOperation</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a>&gt;</pre>
 <div class="block">Batch of mutations for replay. Base class is shared with <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver"><code>HRegion.MutationBatchOperation</code></a> as most
  of the logic is same.</div>
@@ -306,7 +306,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>origLogSeqNum</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3770">origLogSeqNum</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3787">origLogSeqNum</a></pre>
 </li>
 </ul>
 </li>
@@ -323,7 +323,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ReplayBatchOperation</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3771">ReplayBatchOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3788">ReplayBatchOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
                             <a href="../../../../../org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a>[]&nbsp;operations,
                             long&nbsp;origLogSeqNum)</pre>
 </li>
@@ -342,7 +342,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getMutation</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3778">getMutation</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3795">getMutation</a>(int&nbsp;index)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getMutation-int-">getMutation</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a>&gt;</code></dd>
@@ -355,7 +355,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getNonceGroup</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3783">getNonceGroup</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3800">getNonceGroup</a>(int&nbsp;index)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getNonceGroup-int-">getNonceGroup</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a>&gt;</code></dd>
@@ -368,7 +368,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getNonce</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3788">getNonce</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3805">getNonce</a>(int&nbsp;index)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getNonce-int-">getNonce</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a>&gt;</code></dd>
@@ -381,7 +381,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getMutationsForCoprocs</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3793">getMutationsForCoprocs</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3810">getMutationsForCoprocs</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getMutationsForCoprocs--">HRegion.BatchOperation</a></code></span></div>
 <div class="block">This method is potentially expensive and useful mostly for non-replay CP path.</div>
 <dl>
@@ -396,7 +396,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>isInReplay</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3798">isInReplay</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3815">isInReplay</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#isInReplay--">isInReplay</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a>&gt;</code></dd>
@@ -409,7 +409,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getOrigLogSeqNum</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3803">getOrigLogSeqNum</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3820">getOrigLogSeqNum</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getOrigLogSeqNum--">getOrigLogSeqNum</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a>&gt;</code></dd>
@@ -422,7 +422,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>startRegionOperation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3808">startRegionOperation</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3825">startRegionOperation</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="overrideSpecifyLabel">Specified by:</span></dt>
@@ -438,7 +438,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>closeRegionOperation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3813">closeRegionOperation</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3830">closeRegionOperation</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="overrideSpecifyLabel">Specified by:</span></dt>
@@ -454,7 +454,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPreparePut</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3822">checkAndPreparePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3839">checkAndPreparePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)
                            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">During replay, there could exist column families which are removed between region server
  failure and replay</div>
@@ -472,7 +472,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPrepare</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3843">checkAndPrepare</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3860">checkAndPrepare</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 class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#checkAndPrepare--">HRegion.BatchOperation</a></code></span></div>
 <div class="block">Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs
@@ -494,7 +494,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>prepareMiniBatchOperations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3852">prepareMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3869">prepareMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                        long&nbsp;timestamp,
                                        <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/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&gt;&nbsp;acquiredRowLocks)
                                 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>
@@ -515,7 +515,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>writeMiniBatchOperationsToMemStore</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3864">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3881">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                                                                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;writeEntry)
                                                                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#writeMiniBatchOperationsToMemStore-org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress-org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry-">HRegion.BatchOperation</a></code></span></div>
@@ -534,7 +534,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>completeMiniBatchOperations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3872">completeMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3889">completeMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;writeEntry)
                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#completeMiniBatchOperations-org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress-org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry-">HRegion.BatchOperation</a></code></span></div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
index 080810d..84d6ebd 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5829">HRegion.RowLockContext</a>
+<pre>class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5860">HRegion.RowLockContext</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>
@@ -241,7 +241,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>row</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/HashedBytes.html" title="class in org.apache.hadoop.hbase.util">HashedBytes</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5830">row</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/HashedBytes.html" title="class in org.apache.hadoop.hbase.util">HashedBytes</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5861">row</a></pre>
 </li>
 </ul>
 <a name="readWriteLock">
@@ -250,7 +250,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>readWriteLock</h4>
-<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReadWriteLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5831">readWriteLock</a></pre>
+<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReadWriteLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5862">readWriteLock</a></pre>
 </li>
 </ul>
 <a name="usable">
@@ -259,7 +259,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>usable</h4>
-<pre>final&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/HRegion.RowLockContext.html#line.5832">usable</a></pre>
+<pre>final&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/HRegion.RowLockContext.html#line.5863">usable</a></pre>
 </li>
 </ul>
 <a name="count">
@@ -268,7 +268,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>count</h4>
-<pre>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/HRegion.RowLockContext.html#line.5833">count</a></pre>
+<pre>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/HRegion.RowLockContext.html#line.5864">count</a></pre>
 </li>
 </ul>
 <a name="lock">
@@ -277,7 +277,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>lock</h4>
-<pre>final&nbsp;<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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5834">lock</a></pre>
+<pre>final&nbsp;<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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5865">lock</a></pre>
 </li>
 </ul>
 <a name="threadName">
@@ -286,7 +286,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>threadName</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5835">threadName</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5866">threadName</a></pre>
 </li>
 </ul>
 </li>
@@ -303,7 +303,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RowLockContext</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5837">RowLockContext</a>(<a href="../../../../../org/apache/hadoop/hbase/util/HashedBytes.html" title="class in org.apache.hadoop.hbase.util">HashedBytes</a>&nbsp;row)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5868">RowLockContext</a>(<a href="../../../../../org/apache/hadoop/hbase/util/HashedBytes.html" title="class in org.apache.hadoop.hbase.util">HashedBytes</a>&nbsp;row)</pre>
 </li>
 </ul>
 </li>
@@ -320,7 +320,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>newWriteLock</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5841">newWriteLock</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5872">newWriteLock</a>()</pre>
 </li>
 </ul>
 <a name="newReadLock--">
@@ -329,7 +329,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>newReadLock</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5845">newReadLock</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5876">newReadLock</a>()</pre>
 </li>
 </ul>
 <a name="getRowLock-java.util.concurrent.locks.Lock-">
@@ -338,7 +338,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getRowLock</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5850">getRowLock</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a>&nbsp;l)</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5881">getRowLock</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a>&nbsp;l)</pre>
 </li>
 </ul>
 <a name="cleanUp--">
@@ -347,7 +347,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanUp</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5861">cleanUp</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5892">cleanUp</a>()</pre>
 </li>
 </ul>
 <a name="setThreadName-java.lang.String-">
@@ -356,7 +356,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setThreadName</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5874">setThreadName</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;threadName)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5905">setThreadName</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;threadName)</pre>
 </li>
 </ul>
 <a name="toString--">
@@ -365,7 +365,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <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/HRegion.RowLockContext.html#line.5879">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/HRegion.RowLockContext.html#line.5910">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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
index e0f651a..2202571 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5892">HRegion.RowLockImpl</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5923">HRegion.RowLockImpl</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/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a></pre>
 <div class="block">Class used to represent a lock on a row.</div>
@@ -226,7 +226,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.R
 <ul class="blockList">
 <li class="blockList">
 <h4>context</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockContext</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5893">context</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockContext</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5924">context</a></pre>
 </li>
 </ul>
 <a name="lock">
@@ -235,7 +235,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.R
 <ul class="blockListLast">
 <li class="blockList">
 <h4>lock</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5894">lock</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5925">lock</a></pre>
 </li>
 </ul>
 </li>
@@ -252,7 +252,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.R
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RowLockImpl</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5896">RowLockImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockContext</a>&nbsp;context,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5927">RowLockImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockContext</a>&nbsp;context,
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a>&nbsp;lock)</pre>
 </li>
 </ul>
@@ -270,7 +270,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.R
 <ul class="blockList">
 <li class="blockList">
 <h4>getLock</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5901">getLock</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5932">getLock</a>()</pre>
 </li>
 </ul>
 <a name="getContext--">
@@ -279,7 +279,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.R
 <ul class="blockList">
 <li class="blockList">
 <h4>getContext</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockContext</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5906">getContext</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockContext</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5937">getContext</a>()</pre>
 </li>
 </ul>
 <a name="release--">
@@ -288,7 +288,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.R
 <ul class="blockList">
 <li class="blockList">
 <h4>release</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5911">release</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5942">release</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html#release--">Region.RowLock</a></code></span></div>
 <div class="block">Release the given lock.  If there are no remaining locks held by the current thread
  then unlock the row and allow other threads to acquire the lock.</div>
@@ -304,7 +304,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.R
 <ul class="blockListLast">
 <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/HRegion.RowLockImpl.html#line.5917">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/HRegion.RowLockImpl.html#line.5948">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>


[33/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html
index bf6738e..a62d84e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html
@@ -74,569 +74,568 @@
 <span class="sourceLineNo">066</span><a name="line.66"></a>
 <span class="sourceLineNo">067</span>  private static final Logger LOG = LoggerFactory.getLogger(CompactingMemStore.class);<a name="line.67"></a>
 <span class="sourceLineNo">068</span>  private HStore store;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private RegionServicesForStores regionServices;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private CompactionPipeline pipeline;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  protected MemStoreCompactor compactor;<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private long inmemoryFlushSize;       // the threshold on active size for in-memory flush<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private final AtomicBoolean inMemoryCompactionInProgress = new AtomicBoolean(false);<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  // inWalReplay is true while we are synchronously replaying the edits from WAL<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  private boolean inWalReplay = false;<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>  @VisibleForTesting<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  protected final AtomicBoolean allowCompaction = new AtomicBoolean(true);<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  private boolean compositeSnapshot = true;<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  /**<a name="line.83"></a>
-<span class="sourceLineNo">084</span>   * Types of indexes (part of immutable segments) to be used after flattening,<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   * compaction, or merge are applied.<a name="line.85"></a>
-<span class="sourceLineNo">086</span>   */<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  public enum IndexType {<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    CSLM_MAP,   // ConcurrentSkipLisMap<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    ARRAY_MAP,  // CellArrayMap<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    CHUNK_MAP   // CellChunkMap<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  }<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private IndexType indexType = IndexType.ARRAY_MAP;  // default implementation<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  public static final long DEEP_OVERHEAD = ClassSize.align( AbstractMemStore.DEEP_OVERHEAD<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      + 7 * ClassSize.REFERENCE     // Store, RegionServicesForStores, CompactionPipeline,<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      // MemStoreCompactor, inMemoryCompactionInProgress,<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      // allowCompaction, indexType<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      + Bytes.SIZEOF_LONG           // inmemoryFlushSize<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      + 2 * Bytes.SIZEOF_BOOLEAN    // compositeSnapshot and inWalReplay<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      + 2 * ClassSize.ATOMIC_BOOLEAN// inMemoryCompactionInProgress and allowCompaction<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      + CompactionPipeline.DEEP_OVERHEAD + MemStoreCompactor.DEEP_OVERHEAD);<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  public CompactingMemStore(Configuration conf, CellComparator c,<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      HStore store, RegionServicesForStores regionServices,<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      MemoryCompactionPolicy compactionPolicy) throws IOException {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    super(conf, c);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    this.store = store;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    this.regionServices = regionServices;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    this.pipeline = new CompactionPipeline(getRegionServices());<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    this.compactor = createMemStoreCompactor(compactionPolicy);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    if (conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      // if user requested to work with MSLABs (whether on- or off-heap), then the<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      // immutable segments are going to use CellChunkMap as their index<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      indexType = IndexType.CHUNK_MAP;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    } else {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      indexType = IndexType.ARRAY_MAP;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    }<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    // initialization of the flush size should happen after initialization of the index type<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    // so do not transfer the following method<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    initInmemoryFlushSize(conf);<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    LOG.info("Store={}, in-memory flush size threshold={}, immutable segments index type={}, " +<a name="line.122"></a>
-<span class="sourceLineNo">123</span>            "compactor={}", this.store.getColumnFamilyName(),<a name="line.123"></a>
-<span class="sourceLineNo">124</span>        StringUtils.byteDesc(this.inmemoryFlushSize), this.indexType,<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        (this.compactor == null? "NULL": this.compactor.toString()));<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>  @VisibleForTesting<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  protected MemStoreCompactor createMemStoreCompactor(MemoryCompactionPolicy compactionPolicy)<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      throws IllegalArgumentIOException {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    return new MemStoreCompactor(this, compactionPolicy);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  private void initInmemoryFlushSize(Configuration conf) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    double factor = 0;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    long memstoreFlushSize = getRegionServices().getMemStoreFlushSize();<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    int numStores = getRegionServices().getNumStores();<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    if (numStores &lt;= 1) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      // Family number might also be zero in some of our unit test case<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      numStores = 1;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    }<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    factor = conf.getDouble(IN_MEMORY_FLUSH_THRESHOLD_FACTOR_KEY, 0.0);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    if(factor != 0.0) {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      // multiply by a factor (the same factor for all index types)<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      inmemoryFlushSize = (long) (factor * memstoreFlushSize) / numStores;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    } else {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      inmemoryFlushSize = IN_MEMORY_FLUSH_MULTIPLIER *<a name="line.147"></a>
-<span class="sourceLineNo">148</span>          conf.getLong(MemStoreLAB.CHUNK_SIZE_KEY, MemStoreLAB.CHUNK_SIZE_DEFAULT);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      inmemoryFlushSize -= ChunkCreator.SIZEOF_CHUNK_HEADER;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  }<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  /**<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * @return Total memory occupied by this MemStore. This won't include any size occupied by the<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   *         snapshot. We assume the snapshot will get cleared soon. This is not thread safe and<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   *         the memstore may be changed while computing its size. It is the responsibility of the<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   *         caller to make sure this doesn't happen.<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 MemStoreSize size() {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    MemStoreSizing memstoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    memstoreSizing.incMemStoreSize(getActive().getMemStoreSize());<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    for (Segment item : pipeline.getSegments()) {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      memstoreSizing.incMemStoreSize(item.getMemStoreSize());<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    return memstoreSizing.getMemStoreSize();<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>   * This method is called before the flush is executed.<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * @return an estimation (lower bound) of the unflushed sequence id in memstore after the flush<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * is executed. if memstore will be cleared returns {@code HConstants.NO_SEQNUM}.<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   */<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  public long preFlushSeqIDEstimation() {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    if(compositeSnapshot) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      return HConstants.NO_SEQNUM;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    Segment segment = getLastSegment();<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    if(segment == null) {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      return HConstants.NO_SEQNUM;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    }<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    return segment.getMinSequenceId();<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>  @Override<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public boolean isSloppy() {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    return true;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>  /**<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * Push the current active memstore segment into the pipeline<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * and create a snapshot of the tail of current compaction pipeline<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * Snapshot must be cleared by call to {@link #clearSnapshot}.<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * {@link #clearSnapshot(long)}.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   * @return {@link MemStoreSnapshot}<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   */<a name="line.197"></a>
-<span class="sourceLineNo">198</span>  @Override<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  public MemStoreSnapshot snapshot() {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    // If snapshot currently has entries, then flusher failed or didn't call<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    // cleanup.  Log a warning.<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    if (!this.snapshot.isEmpty()) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      LOG.warn("Snapshot called again without clearing previous. " +<a name="line.203"></a>
-<span class="sourceLineNo">204</span>          "Doing nothing. Another ongoing flush or did we fail last attempt?");<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    } else {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      LOG.debug("FLUSHING TO DISK {}, store={}",<a name="line.206"></a>
-<span class="sourceLineNo">207</span>          getRegionServices().getRegionInfo().getEncodedName(), getFamilyName());<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      stopCompaction();<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      // region level lock ensures pushing active to pipeline is done in isolation<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      // no concurrent update operations trying to flush the active segment<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      pushActiveToPipeline(getActive());<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      snapshotId = EnvironmentEdgeManager.currentTime();<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      // in both cases whatever is pushed to snapshot is cleared from the pipeline<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      if (compositeSnapshot) {<a name="line.214"></a>
-<span class="sourceLineNo">215</span>        pushPipelineToSnapshot();<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      } else {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        pushTailToSnapshot();<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      }<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      compactor.resetStats();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    return new MemStoreSnapshot(snapshotId, this.snapshot);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  @Override<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  public MemStoreSize getFlushableSize() {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    MemStoreSize mss = getSnapshotSize();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    if (mss.getDataSize() == 0) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      // if snapshot is empty the tail of the pipeline (or everything in the memstore) is flushed<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      if (compositeSnapshot) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing(pipeline.getPipelineSize());<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        MutableSegment currActive = getActive();<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        if(!currActive.isEmpty()) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>          memStoreSizing.incMemStoreSize(currActive.getMemStoreSize());<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        mss = memStoreSizing.getMemStoreSize();<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      } else {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        mss = pipeline.getTailSize();<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>    return mss.getDataSize() &gt; 0? mss: getActive().getMemStoreSize();<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  }<a name="line.241"></a>
+<span class="sourceLineNo">069</span>  private CompactionPipeline pipeline;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  protected MemStoreCompactor compactor;<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private long inmemoryFlushSize;       // the threshold on active size for in-memory flush<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private final AtomicBoolean inMemoryCompactionInProgress = new AtomicBoolean(false);<a name="line.73"></a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span>  // inWalReplay is true while we are synchronously replaying the edits from WAL<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private boolean inWalReplay = false;<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>  @VisibleForTesting<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  protected final AtomicBoolean allowCompaction = new AtomicBoolean(true);<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  private boolean compositeSnapshot = true;<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  /**<a name="line.82"></a>
+<span class="sourceLineNo">083</span>   * Types of indexes (part of immutable segments) to be used after flattening,<a name="line.83"></a>
+<span class="sourceLineNo">084</span>   * compaction, or merge are applied.<a name="line.84"></a>
+<span class="sourceLineNo">085</span>   */<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  public enum IndexType {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    CSLM_MAP,   // ConcurrentSkipLisMap<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    ARRAY_MAP,  // CellArrayMap<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    CHUNK_MAP   // CellChunkMap<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  }<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private IndexType indexType = IndexType.ARRAY_MAP;  // default implementation<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>  public static final long DEEP_OVERHEAD = ClassSize.align( AbstractMemStore.DEEP_OVERHEAD<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      + 6 * ClassSize.REFERENCE     // Store, CompactionPipeline,<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      // MemStoreCompactor, inMemoryCompactionInProgress,<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      // allowCompaction, indexType<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      + Bytes.SIZEOF_LONG           // inmemoryFlushSize<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      + 2 * Bytes.SIZEOF_BOOLEAN    // compositeSnapshot and inWalReplay<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      + 2 * ClassSize.ATOMIC_BOOLEAN// inMemoryCompactionInProgress and allowCompaction<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      + CompactionPipeline.DEEP_OVERHEAD + MemStoreCompactor.DEEP_OVERHEAD);<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>  public CompactingMemStore(Configuration conf, CellComparator c,<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      HStore store, RegionServicesForStores regionServices,<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      MemoryCompactionPolicy compactionPolicy) throws IOException {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    super(conf, c, regionServices);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    this.store = store;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    this.regionServices = regionServices;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    this.pipeline = new CompactionPipeline(getRegionServices());<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    this.compactor = createMemStoreCompactor(compactionPolicy);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    if (conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      // if user requested to work with MSLABs (whether on- or off-heap), then the<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      // immutable segments are going to use CellChunkMap as their index<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      indexType = IndexType.CHUNK_MAP;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    } else {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      indexType = IndexType.ARRAY_MAP;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    }<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    // initialization of the flush size should happen after initialization of the index type<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    // so do not transfer the following method<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    initInmemoryFlushSize(conf);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    LOG.info("Store={}, in-memory flush size threshold={}, immutable segments index type={}, " +<a name="line.121"></a>
+<span class="sourceLineNo">122</span>            "compactor={}", this.store.getColumnFamilyName(),<a name="line.122"></a>
+<span class="sourceLineNo">123</span>        StringUtils.byteDesc(this.inmemoryFlushSize), this.indexType,<a name="line.123"></a>
+<span class="sourceLineNo">124</span>        (this.compactor == null? "NULL": this.compactor.toString()));<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  }<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>  protected MemStoreCompactor createMemStoreCompactor(MemoryCompactionPolicy compactionPolicy)<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      throws IllegalArgumentIOException {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    return new MemStoreCompactor(this, compactionPolicy);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  }<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private void initInmemoryFlushSize(Configuration conf) {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    double factor = 0;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    long memstoreFlushSize = getRegionServices().getMemStoreFlushSize();<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    int numStores = getRegionServices().getNumStores();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    if (numStores &lt;= 1) {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      // Family number might also be zero in some of our unit test case<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      numStores = 1;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    }<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    factor = conf.getDouble(IN_MEMORY_FLUSH_THRESHOLD_FACTOR_KEY, 0.0);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    if(factor != 0.0) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      // multiply by a factor (the same factor for all index types)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      inmemoryFlushSize = (long) (factor * memstoreFlushSize) / numStores;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    } else {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      inmemoryFlushSize = IN_MEMORY_FLUSH_MULTIPLIER *<a name="line.146"></a>
+<span class="sourceLineNo">147</span>          conf.getLong(MemStoreLAB.CHUNK_SIZE_KEY, MemStoreLAB.CHUNK_SIZE_DEFAULT);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      inmemoryFlushSize -= ChunkCreator.SIZEOF_CHUNK_HEADER;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    }<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  /**<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * @return Total memory occupied by this MemStore. This won't include any size occupied by the<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   *         snapshot. We assume the snapshot will get cleared soon. This is not thread safe and<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   *         the memstore may be changed while computing its size. It is the responsibility of the<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   *         caller to make sure this doesn't happen.<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   */<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  @Override<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public MemStoreSize size() {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    MemStoreSizing memstoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    memstoreSizing.incMemStoreSize(getActive().getMemStoreSize());<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    for (Segment item : pipeline.getSegments()) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      memstoreSizing.incMemStoreSize(item.getMemStoreSize());<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    }<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    return memstoreSizing.getMemStoreSize();<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  }<a name="line.166"></a>
+<span class="sourceLineNo">167</span><a name="line.167"></a>
+<span class="sourceLineNo">168</span>  /**<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * This method is called before the flush is executed.<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * @return an estimation (lower bound) of the unflushed sequence id in memstore after the flush<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * is executed. if memstore will be cleared returns {@code HConstants.NO_SEQNUM}.<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   */<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  @Override<a name="line.173"></a>
+<span class="sourceLineNo">174</span>  public long preFlushSeqIDEstimation() {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    if(compositeSnapshot) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      return HConstants.NO_SEQNUM;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    Segment segment = getLastSegment();<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    if(segment == null) {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      return HConstants.NO_SEQNUM;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    return segment.getMinSequenceId();<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>  @Override<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public boolean isSloppy() {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    return true;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>  }<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>  /**<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * Push the current active memstore segment into the pipeline<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * and create a snapshot of the tail of current compaction pipeline<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * Snapshot must be cleared by call to {@link #clearSnapshot}.<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * {@link #clearSnapshot(long)}.<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * @return {@link MemStoreSnapshot}<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  @Override<a name="line.197"></a>
+<span class="sourceLineNo">198</span>  public MemStoreSnapshot snapshot() {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    // If snapshot currently has entries, then flusher failed or didn't call<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    // cleanup.  Log a warning.<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    if (!this.snapshot.isEmpty()) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      LOG.warn("Snapshot called again without clearing previous. " +<a name="line.202"></a>
+<span class="sourceLineNo">203</span>          "Doing nothing. Another ongoing flush or did we fail last attempt?");<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    } else {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      LOG.debug("FLUSHING TO DISK {}, store={}",<a name="line.205"></a>
+<span class="sourceLineNo">206</span>          getRegionServices().getRegionInfo().getEncodedName(), getFamilyName());<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      stopCompaction();<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      // region level lock ensures pushing active to pipeline is done in isolation<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      // no concurrent update operations trying to flush the active segment<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      pushActiveToPipeline(getActive());<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      snapshotId = EnvironmentEdgeManager.currentTime();<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      // in both cases whatever is pushed to snapshot is cleared from the pipeline<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      if (compositeSnapshot) {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>        pushPipelineToSnapshot();<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      } else {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>        pushTailToSnapshot();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      compactor.resetStats();<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    return new MemStoreSnapshot(snapshotId, this.snapshot);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  @Override<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  public MemStoreSize getFlushableSize() {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    MemStoreSize mss = getSnapshotSize();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    if (mss.getDataSize() == 0) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      // if snapshot is empty the tail of the pipeline (or everything in the memstore) is flushed<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      if (compositeSnapshot) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing(pipeline.getPipelineSize());<a name="line.229"></a>
+<span class="sourceLineNo">230</span>        MutableSegment currActive = getActive();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        if(!currActive.isEmpty()) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>          memStoreSizing.incMemStoreSize(currActive.getMemStoreSize());<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        }<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        mss = memStoreSizing.getMemStoreSize();<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      } else {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        mss = pipeline.getTailSize();<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      }<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    }<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    return mss.getDataSize() &gt; 0? mss: getActive().getMemStoreSize();<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
 <span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span><a name="line.243"></a>
-<span class="sourceLineNo">244</span>  public void setInMemoryCompactionCompleted() {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    inMemoryCompactionInProgress.set(false);<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>  protected boolean setInMemoryCompactionFlag() {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    return inMemoryCompactionInProgress.compareAndSet(false, true);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  @Override<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  protected long keySize() {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    // Need to consider dataSize/keySize of all segments in pipeline and active<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    long keySize = getActive().getDataSize();<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    for (Segment segment : this.pipeline.getSegments()) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      keySize += segment.getDataSize();<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    }<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    return keySize;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>  @Override<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  protected long heapSize() {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    // Need to consider heapOverhead of all segments in pipeline and active<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    long h = getActive().getHeapSize();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    for (Segment segment : this.pipeline.getSegments()) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      h += segment.getHeapSize();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    }<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    return h;<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>  @Override<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  public void updateLowestUnflushedSequenceIdInWAL(boolean onlyIfGreater) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    long minSequenceId = pipeline.getMinSequenceId();<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    if(minSequenceId != Long.MAX_VALUE) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      byte[] encodedRegionName = getRegionServices().getRegionInfo().getEncodedNameAsBytes();<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      byte[] familyName = getFamilyNameInBytes();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      WAL WAL = getRegionServices().getWAL();<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      if (WAL != null) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        WAL.updateStore(encodedRegionName, familyName, minSequenceId, onlyIfGreater);<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>  }<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>   * This message intends to inform the MemStore that next coming updates<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * are going to be part of the replaying edits from WAL<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   */<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  @Override<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  public void startReplayingFromWAL() {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    inWalReplay = true;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>  /**<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * This message intends to inform the MemStore that the replaying edits from WAL<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   * are done<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 void stopReplayingFromWAL() {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    inWalReplay = false;<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>   * Issue any synchronization and test needed before applying the update<a name="line.304"></a>
-<span class="sourceLineNo">305</span>   * For compacting memstore this means checking the update can increase the size without<a name="line.305"></a>
-<span class="sourceLineNo">306</span>   * overflow<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   * @param currentActive the segment to be updated<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * @param cell the cell to be added<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * @param memstoreSizing object to accumulate region size changes<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * @return true iff can proceed with applying the update<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   */<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  @Override protected boolean preUpdate(MutableSegment currentActive, Cell cell,<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      MemStoreSizing memstoreSizing) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    if(currentActive.sharedLock()) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      if (checkAndAddToActiveSize(currentActive, cell, memstoreSizing)) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>        return true;<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      currentActive.sharedUnlock();<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    return false;<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>  @Override protected void postUpdate(MutableSegment currentActive) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    currentActive.sharedUnlock();<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>  @Override protected boolean sizeAddedPreOperation() {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    return true;<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>  // the getSegments() method is used for tests only<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  @VisibleForTesting<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  @Override<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  protected List&lt;Segment&gt; getSegments() {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    List&lt;? extends Segment&gt; pipelineList = pipeline.getSegments();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    List&lt;Segment&gt; list = new ArrayList&lt;&gt;(pipelineList.size() + 2);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    list.add(getActive());<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    list.addAll(pipelineList);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    list.addAll(snapshot.getAllSegments());<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>    return list;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  }<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>  // the following three methods allow to manipulate the settings of composite snapshot<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  public void setCompositeSnapshot(boolean useCompositeSnapshot) {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    this.compositeSnapshot = useCompositeSnapshot;<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>  public boolean swapCompactedSegments(VersionedSegmentsList versionedList, ImmutableSegment result,<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      boolean merge) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    // last true stands for updating the region size<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    return pipeline.swap(versionedList, result, !merge, true);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>  /**<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * @param requesterVersion The caller must hold the VersionedList of the pipeline<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   *           with version taken earlier. This version must be passed as a parameter here.<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   *           The flattening happens only if versions match.<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   */<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  public void flattenOneSegment(long requesterVersion,  MemStoreCompactionStrategy.Action action) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    pipeline.flattenOneSegment(requesterVersion, indexType, action);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>  // setter is used only for testability<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  @VisibleForTesting<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  void setIndexType(IndexType type) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    indexType = type;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    // Because this functionality is for testing only and tests are setting in-memory flush size<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    // according to their need, there is no setting of in-memory flush size, here.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    // If it is needed, please change in-memory flush size explicitly<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  }<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>  public IndexType getIndexType() {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    return indexType;<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>  public boolean hasImmutableSegments() {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    return !pipeline.isEmpty();<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  }<a name="line.379"></a>
-<span class="sourceLineNo">380</span><a name="line.380"></a>
-<span class="sourceLineNo">381</span>  public VersionedSegmentsList getImmutableSegments() {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    return pipeline.getVersionedList();<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>  public long getSmallestReadPoint() {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    return store.getSmallestReadPoint();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  }<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span>  public HStore getStore() {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    return store;<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  }<a name="line.391"></a>
-<span class="sourceLineNo">392</span><a name="line.392"></a>
-<span class="sourceLineNo">393</span>  public String getFamilyName() {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    return Bytes.toString(getFamilyNameInBytes());<a name="line.394"></a>
-<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>  @Override<a name="line.397"></a>
-<span class="sourceLineNo">398</span>  public List&lt;KeyValueScanner&gt; getScanners(long readPt) throws IOException {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    MutableSegment activeTmp = getActive();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    List&lt;? extends Segment&gt; pipelineList = pipeline.getSegments();<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    List&lt;? extends Segment&gt; snapshotList = snapshot.getAllSegments();<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    long numberOfSegments = 1L + pipelineList.size() + snapshotList.size();<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    // The list of elements in pipeline + the active element + the snapshot segment<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    List&lt;KeyValueScanner&gt; list = createList((int) numberOfSegments);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    addToScanners(activeTmp, readPt, list);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    addToScanners(pipelineList, readPt, list);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    addToScanners(snapshotList, readPt, list);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    return list;<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>  @VisibleForTesting<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  protected List&lt;KeyValueScanner&gt; createList(int capacity) {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    return new ArrayList&lt;&gt;(capacity);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>  }<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>  /**<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * Check whether anything need to be done based on the current active set size.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * The method is invoked upon every addition to the active set.<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * For CompactingMemStore, flush the active set to the read-only memory if it's<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * size is above threshold<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * @param currActive intended segment to update<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   * @param cellToAdd cell to be added to the segment<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * @param memstoreSizing object to accumulate changed size<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * @return true if the cell can be added to the<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   */<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  private boolean checkAndAddToActiveSize(MutableSegment currActive, Cell cellToAdd,<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      MemStoreSizing memstoreSizing) {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    if (shouldFlushInMemory(currActive, cellToAdd, memstoreSizing)) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      if (currActive.setInMemoryFlushed()) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        flushInMemory(currActive);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        if (setInMemoryCompactionFlag()) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>          // The thread is dispatched to do in-memory compaction in the background<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          InMemoryCompactionRunnable runnable = new InMemoryCompactionRunnable();<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          if (LOG.isTraceEnabled()) {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>            LOG.trace("Dispatching the MemStore in-memory flush for store " + store<a name="line.435"></a>
-<span class="sourceLineNo">436</span>                .getColumnFamilyName());<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          }<a name="line.437"></a>
-<span class="sourceLineNo">438</span>          getPool().execute(runnable);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      }<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      return false;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    return true;<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>  // externally visible only for tests<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  // when invoked directly from tests it must be verified that the caller doesn't hold updatesLock,<a name="line.447"></a>
-<span class="sourceLineNo">448</span>  // otherwise there is a deadlock<a name="line.448"></a>
-<span class="sourceLineNo">449</span>  @VisibleForTesting<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  void flushInMemory() {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    MutableSegment currActive = getActive();<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    if(currActive.setInMemoryFlushed()) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      flushInMemory(currActive);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    inMemoryCompaction();<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>  private void flushInMemory(MutableSegment currActive) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    LOG.trace("IN-MEMORY FLUSH: Pushing active segment into compaction pipeline");<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    pushActiveToPipeline(currActive);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>  }<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>  void inMemoryCompaction() {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    // setting the inMemoryCompactionInProgress flag again for the case this method is invoked<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    // directly (only in tests) in the common path setting from true to true is idempotent<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    inMemoryCompactionInProgress.set(true);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    // Used by tests<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    if (!allowCompaction.get()) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      return;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    }<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    try {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      // Speculative compaction execution, may be interrupted if flush is forced while<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      // compaction is in progress<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      if(!compactor.start()) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        setInMemoryCompactionCompleted();<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      }<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    } catch (IOException e) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      LOG.warn("Unable to run in-memory compaction on {}/{}; exception={}",<a name="line.478"></a>
-<span class="sourceLineNo">479</span>          getRegionServices().getRegionInfo().getEncodedName(), getFamilyName(), e);<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>  private Segment getLastSegment() {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    Segment localActive = getActive();<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    Segment tail = pipeline.getTail();<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    return tail == null ? localActive : tail;<a name="line.486"></a>
-<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>  private byte[] getFamilyNameInBytes() {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    return store.getColumnFamilyDescriptor().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>  private ThreadPoolExecutor getPool() {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    return getRegionServices().getInMemoryCompactionPool();<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>  @VisibleForTesting<a name="line.497"></a>
-<span class="sourceLineNo">498</span>  protected boolean shouldFlushInMemory(MutableSegment currActive, Cell cellToAdd,<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      MemStoreSizing memstoreSizing) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    long cellSize = currActive.getCellLength(cellToAdd);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    long segmentDataSize = currActive.getDataSize();<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    while (segmentDataSize + cellSize &lt; inmemoryFlushSize || inWalReplay) {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      // when replaying edits from WAL there is no need in in-memory flush regardless the size<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      // otherwise size below flush threshold try to update atomically<a name="line.504"></a>
-<span class="sourceLineNo">505</span>      if(currActive.compareAndSetDataSize(segmentDataSize, segmentDataSize + cellSize)) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>        if(memstoreSizing != null){<a name="line.506"></a>
-<span class="sourceLineNo">507</span>          memstoreSizing.incMemStoreSize(cellSize, 0, 0);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>        }<a name="line.508"></a>
-<span class="sourceLineNo">509</span>        //enough space for cell - no need to flush<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        return false;<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      }<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      segmentDataSize = currActive.getDataSize();<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    // size above flush threshold<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    return true;<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>  /**<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * The request to cancel the compaction asynchronous task (caused by in-memory flush)<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   * The compaction may still happen if the request was sent too late<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * Non-blocking request<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   */<a name="line.522"></a>
-<span class="sourceLineNo">523</span>  private void stopCompaction() {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    if (inMemoryCompactionInProgress.get()) {<a name="line.524"></a>
-<span class="sourceLineNo">525</span>      compactor.stop();<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>  protected void pushActiveToPipeline(MutableSegment currActive) {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    if (!currActive.isEmpty()) {<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      pipeline.pushHead(currActive);<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      resetActive();<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    }<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  }<a name="line.534"></a>
-<span class="sourceLineNo">535</span><a name="line.535"></a>
-<span class="sourceLineNo">536</span>  private void pushTailToSnapshot() {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    VersionedSegmentsList segments = pipeline.getVersionedTail();<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    pushToSnapshot(segments.getStoreSegments());<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    // In Swap: don't close segments (they are in snapshot now) and don't update the region size<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    pipeline.swap(segments,null,false, false);<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>  private void pushPipelineToSnapshot() {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    int iterationsCnt = 0;<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    boolean done = false;<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    while (!done) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      iterationsCnt++;<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      VersionedSegmentsList segments = pipeline.getVersionedList();<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      pushToSnapshot(segments.getStoreSegments());<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      // swap can return false in case the pipeline was updated by ongoing compaction<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      // and the version increase, the chance of it happenning is very low<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      // In Swap: don't close segments (they are in snapshot now) and don't update the region size<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      done = pipeline.swap(segments, null, false, false);<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      if (iterationsCnt&gt;2) {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>        // practically it is impossible that this loop iterates more than two times<a name="line.555"></a>
-<span class="sourceLineNo">556</span>        // (because the compaction is stopped and none restarts it while in snapshot request),<a name="line.556"></a>
-<span class="sourceLineNo">557</span>        // however stopping here for the case of the infinite loop causing by any error<a name="line.557"></a>
-<span class="sourceLineNo">558</span>        LOG.warn("Multiple unsuccessful attempts to push the compaction pipeline to snapshot," +<a name="line.558"></a>
-<span class="sourceLineNo">559</span>            " while flushing to disk.");<a name="line.559"></a>
-<span class="sourceLineNo">560</span>        this.snapshot = SegmentFactory.instance().createImmutableSegment(getComparator());<a name="line.560"></a>
-<span class="sourceLineNo">561</span>        break;<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>  }<a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>  private void pushToSnapshot(List&lt;ImmutableSegment&gt; segments) {<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    if(segments.isEmpty()) return;<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    if(segments.size() == 1 &amp;&amp; !segments.get(0).isEmpty()) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      this.snapshot = segments.get(0);<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      return;<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    } else { // create composite snapshot<a name="line.571"></a>
-<span class="sourceLineNo">572</span>      this.snapshot =<a name="line.572"></a>
-<span class="sourceLineNo">573</span>          SegmentFactory.instance().createCompositeImmutableSegment(getComparator(), segments);<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><a name="line.576"></a>
-<span class="sourceLineNo">577</span>  private RegionServicesForStores getRegionServices() {<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    return regionServices;<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>  /**<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * The in-memory-flusher thread performs the flush asynchronously.<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * There is at most one thread per memstore instance.<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   * It takes the updatesLock exclusively, pushes active into the pipeline, releases updatesLock<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * and compacts the pipeline.<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   */<a name="line.586"></a>
-<span class="sourceLineNo">587</span>  private class InMemoryCompactionRunnable implements Runnable {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    @Override<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    public void run() {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>      inMemoryCompaction();<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>  @VisibleForTesting<a name="line.594"></a>
-<span class="sourceLineNo">595</span>  boolean isMemStoreFlushingInMemory() {<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    return inMemoryCompactionInProgress.get();<a name="line.596"></a>
-<span class="sourceLineNo">597</span>  }<a name="line.597"></a>
-<span class="sourceLineNo">598</span><a name="line.598"></a>
-<span class="sourceLineNo">599</span>  /**<a name="line.599"></a>
-<span class="sourceLineNo">600</span>   * @param cell Find the row that comes after this one.  If null, we return the<a name="line.600"></a>
-<span class="sourceLineNo">601</span>   *             first.<a name="line.601"></a>
-<span class="sourceLineNo">602</span>   * @return Next row or null if none found.<a name="line.602"></a>
-<span class="sourceLineNo">603</span>   */<a name="line.603"></a>
-<span class="sourceLineNo">604</span>  Cell getNextRow(final Cell cell) {<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    Cell lowest = null;<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    List&lt;Segment&gt; segments = getSegments();<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    for (Segment segment : segments) {<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      if (lowest == null) {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>        lowest = getNextRow(cell, segment.getCellSet());<a name="line.609"></a>
-<span class="sourceLineNo">610</span>      } else {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>        lowest = getLowest(lowest, getNextRow(cell, segment.getCellSet()));<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>    return lowest;<a name="line.614"></a>
-<span class="sourceLineNo">615</span>  }<a name="line.615"></a>
-<span class="sourceLineNo">616</span><a name="line.616"></a>
-<span class="sourceLineNo">617</span>  @VisibleForTesting<a name="line.617"></a>
-<span class="sourceLineNo">618</span>  long getInmemoryFlushSize() {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    return inmemoryFlushSize;<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>  // debug method<a name="line.622"></a>
-<span class="sourceLineNo">623</span>  public void debug() {<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    String msg = "active size=" + getActive().getDataSize();<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    msg += " allow compaction is "+ (allowCompaction.get() ? "true" : "false");<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    msg += " inMemoryCompactionInProgress is "+ (inMemoryCompactionInProgress.get() ? "true" :<a name="line.626"></a>
-<span class="sourceLineNo">627</span>        "false");<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    LOG.debug(msg);<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>}<a name="line.631"></a>
+<span class="sourceLineNo">243</span>  public void setInMemoryCompactionCompleted() {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    inMemoryCompactionInProgress.set(false);<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>  protected boolean setInMemoryCompactionFlag() {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    return inMemoryCompactionInProgress.compareAndSet(false, 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>  @Override<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  protected long keySize() {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    // Need to consider dataSize/keySize of all segments in pipeline and active<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    long keySize = getActive().getDataSize();<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    for (Segment segment : this.pipeline.getSegments()) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      keySize += segment.getDataSize();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    return keySize;<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>  @Override<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  protected long heapSize() {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    // Need to consider heapOverhead of all segments in pipeline and active<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    long h = getActive().getHeapSize();<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    for (Segment segment : this.pipeline.getSegments()) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      h += segment.getHeapSize();<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    return h;<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>  @Override<a name="line.271"></a>
+<span class="sourceLineNo">272</span>  public void updateLowestUnflushedSequenceIdInWAL(boolean onlyIfGreater) {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    long minSequenceId = pipeline.getMinSequenceId();<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    if(minSequenceId != Long.MAX_VALUE) {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      byte[] encodedRegionName = getRegionServices().getRegionInfo().getEncodedNameAsBytes();<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      byte[] familyName = getFamilyNameInBytes();<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      WAL WAL = getRegionServices().getWAL();<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      if (WAL != null) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        WAL.updateStore(encodedRegionName, familyName, minSequenceId, onlyIfGreater);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>  }<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  /**<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   * This message intends to inform the MemStore that next coming updates<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * are going to be part of the replaying edits from WAL<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 void startReplayingFromWAL() {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    inWalReplay = true;<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>   * This message intends to inform the MemStore that the replaying edits from WAL<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   * are done<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   */<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  @Override<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public void stopReplayingFromWAL() {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    inWalReplay = false;<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>   * Issue any synchronization and test needed before applying the update<a name="line.303"></a>
+<span class="sourceLineNo">304</span>   * For compacting memstore this means checking the update can increase the size without<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   * overflow<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   * @param currentActive the segment to be updated<a name="line.306"></a>
+<span class="sourceLineNo">307</span>   * @param cell the cell to be added<a name="line.307"></a>
+<span class="sourceLineNo">308</span>   * @param memstoreSizing object to accumulate region size changes<a name="line.308"></a>
+<span class="sourceLineNo">309</span>   * @return true iff can proceed with applying the update<a name="line.309"></a>
+<span class="sourceLineNo">310</span>   */<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  @Override protected boolean preUpdate(MutableSegment currentActive, Cell cell,<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      MemStoreSizing memstoreSizing) {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    if(currentActive.sharedLock()) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      if (checkAndAddToActiveSize(currentActive, cell, memstoreSizing)) {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        return true;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      currentActive.sharedUnlock();<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    }<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    return false;<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>  @Override protected void postUpdate(MutableSegment currentActive) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    currentActive.sharedUnlock();<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
+<span class="sourceLineNo">325</span><a name="line.325"></a>
+<span class="sourceLineNo">326</span>  @Override protected boolean sizeAddedPreOperation() {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    return true;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  }<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>  // the getSegments() method is used for tests only<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  @VisibleForTesting<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  @Override<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  protected List&lt;Segment&gt; getSegments() {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    List&lt;? extends Segment&gt; pipelineList = pipeline.getSegments();<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    List&lt;Segment&gt; list = new ArrayList&lt;&gt;(pipelineList.size() + 2);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    list.add(getActive());<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    list.addAll(pipelineList);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    list.addAll(snapshot.getAllSegments());<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>    return list;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  }<a name="line.341"></a>
+<span class="sourceLineNo">342</span><a name="line.342"></a>
+<span class="sourceLineNo">343</span>  // the following three methods allow to manipulate the settings of composite snapshot<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  public void setCompositeSnapshot(boolean useCompositeSnapshot) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    this.compositeSnapshot = useCompositeSnapshot;<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>  public boolean swapCompactedSegments(VersionedSegmentsList versionedList, ImmutableSegment result,<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      boolean merge) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // last true stands for updating the region size<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    return pipeline.swap(versionedList, result, !merge, true);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  /**<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * @param requesterVersion The caller must hold the VersionedList of the pipeline<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   *           with version taken earlier. This version must be passed as a parameter here.<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   *           The flattening happens only if versions match.<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   */<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  public void flattenOneSegment(long requesterVersion,  MemStoreCompactionStrategy.Action action) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    pipeline.flattenOneSegment(requesterVersion, indexType, action);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  }<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  // setter is used only for testability<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  @VisibleForTesting<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  void setIndexType(IndexType type) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    indexType = type;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    // Because this functionality is for testing only and tests are setting in-memory flush size<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    // according to their need, there is no setting of in-memory flush size, here.<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    // If it is needed, please change in-memory flush size explicitly<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  public IndexType getIndexType() {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    return indexType;<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>  public boolean hasImmutableSegments() {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    return !pipeline.isEmpty();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  }<a name="line.378"></a>
+<span class="sourceLineNo">379</span><a name="line.379"></a>
+<span class="sourceLineNo">380</span>  public VersionedSegmentsList getImmutableSegments() {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    return pipeline.getVersionedList();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
+<span class="sourceLineNo">383</span><a name="line.383"></a>
+<span class="sourceLineNo">384</span>  public long getSmallestReadPoint() {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    return store.getSmallestReadPoint();<a name="line.385"></a>
+<span class="sourceLineNo">386</span>  }<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  public HStore getStore() {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    return store;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  }<a name="line.390"></a>
+<span class="sourceLineNo">391</span><a name="line.391"></a>
+<span class="sourceLineNo">392</span>  public String getFamilyName() {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    return Bytes.toString(getFamilyNameInBytes());<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>  @Override<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  public List&lt;KeyValueScanner&gt; getScanners(long readPt) throws IOException {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    MutableSegment activeTmp = getActive();<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    List&lt;? extends Segment&gt; pipelineList = pipeline.getSegments();<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    List&lt;? extends Segment&gt; snapshotList = snapshot.getAllSegments();<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    long numberOfSegments = 1L + pipelineList.size() + snapshotList.size();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    // The list of elements in pipeline + the active element + the snapshot segment<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    List&lt;KeyValueScanner&gt; list = createList((int) numberOfSegments);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    addToScanners(activeTmp, readPt, list);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    addToScanners(pipelineList, readPt, list);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    addToScanners(snapshotList, readPt, list);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    return list;<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>  @VisibleForTesting<a name="line.410"></a>
+<span class="sourceLineNo">411</span>  protected List&lt;KeyValueScanner&gt; createList(int capacity) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    return new ArrayList&lt;&gt;(capacity);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  }<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span>  /**<a name="line.415"></a>
+<span class="sourceLineNo">416</span>   * Check whether anything need to be done based on the current active

<TRUNCATED>

[16/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.html
index db8431b..a8cb7c4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.html
@@ -885,7766 +885,7797 @@
 <span class="sourceLineNo">877</span>   * @return What the next sequence (edit) id should be.<a name="line.877"></a>
 <span class="sourceLineNo">878</span>   * @throws IOException e<a name="line.878"></a>
 <span class="sourceLineNo">879</span>   */<a name="line.879"></a>
-<span class="sourceLineNo">880</span>  private long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.880"></a>
-<span class="sourceLineNo">881</span><a name="line.881"></a>
-<span class="sourceLineNo">882</span>    //Refuse to open the region if there is no column family in the table<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.884"></a>
-<span class="sourceLineNo">885</span>          " should have at least one column family.");<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    long nextSeqId = -1;<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    try {<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.891"></a>
-<span class="sourceLineNo">892</span>      return nextSeqId;<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    } finally {<a name="line.893"></a>
-<span class="sourceLineNo">894</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      // At least it will be 0 otherwise.<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      if (nextSeqId == -1) {<a name="line.896"></a>
-<span class="sourceLineNo">897</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.897"></a>
-<span class="sourceLineNo">898</span>          " initialization.");<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      }<a name="line.899"></a>
-<span class="sourceLineNo">900</span>    }<a name="line.900"></a>
-<span class="sourceLineNo">901</span>  }<a name="line.901"></a>
-<span class="sourceLineNo">902</span><a name="line.902"></a>
-<span class="sourceLineNo">903</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.903"></a>
-<span class="sourceLineNo">904</span>      final MonitoredTask status) throws IOException {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    if (coprocessorHost != null) {<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      coprocessorHost.preOpen();<a name="line.907"></a>
-<span class="sourceLineNo">908</span>    }<a name="line.908"></a>
-<span class="sourceLineNo">909</span><a name="line.909"></a>
-<span class="sourceLineNo">910</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.910"></a>
-<span class="sourceLineNo">911</span>    // Only the primary replica should write .regioninfo<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      status.setStatus("Writing region info on filesystem");<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      fs.checkRegionInfoOnFilesystem();<a name="line.914"></a>
-<span class="sourceLineNo">915</span>    }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>    // Initialize all the HStores<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    status.setStatus("Initializing all the Stores");<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.920"></a>
-<span class="sourceLineNo">921</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.922"></a>
-<span class="sourceLineNo">923</span>      try {<a name="line.923"></a>
-<span class="sourceLineNo">924</span>        // update the stores that we are replaying<a name="line.924"></a>
-<span class="sourceLineNo">925</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        // Recover any edits if available.<a name="line.927"></a>
-<span class="sourceLineNo">928</span>        maxSeqId = Math.max(maxSeqId,<a name="line.928"></a>
-<span class="sourceLineNo">929</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        // Make sure mvcc is up to max.<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      } finally {<a name="line.932"></a>
-<span class="sourceLineNo">933</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        // update the stores that we are done replaying<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        stores.forEach(HStore::stopReplayingFromWAL);<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>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    this.writestate.flushRequested = false;<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    this.writestate.compacting.set(0);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>    if (this.writestate.writesEnabled) {<a name="line.944"></a>
-<span class="sourceLineNo">945</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      // Remove temporary data left over from old regions<a name="line.946"></a>
-<span class="sourceLineNo">947</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.947"></a>
-<span class="sourceLineNo">948</span>      fs.cleanupTempDir();<a name="line.948"></a>
-<span class="sourceLineNo">949</span>    }<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>    if (this.writestate.writesEnabled) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      // these directories here on open.  We may be opening a region that was<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      // being split but we crashed in the middle of it all.<a name="line.955"></a>
-<span class="sourceLineNo">956</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      fs.cleanupAnySplitDetritus();<a name="line.957"></a>
-<span class="sourceLineNo">958</span>      fs.cleanupMergesDir();<a name="line.958"></a>
-<span class="sourceLineNo">959</span>    }<a name="line.959"></a>
+<span class="sourceLineNo">880</span>  @VisibleForTesting<a name="line.880"></a>
+<span class="sourceLineNo">881</span>  long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>    //Refuse to open the region if there is no column family in the table<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.885"></a>
+<span class="sourceLineNo">886</span>          " should have at least one column family.");<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    }<a name="line.887"></a>
+<span class="sourceLineNo">888</span><a name="line.888"></a>
+<span class="sourceLineNo">889</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>    long nextSeqId = -1;<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    try {<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      return nextSeqId;<a name="line.893"></a>
+<span class="sourceLineNo">894</span>    } catch (IOException e) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      LOG.warn("Failed initialize of region= {}, starting to roll back memstore",<a name="line.895"></a>
+<span class="sourceLineNo">896</span>          getRegionInfo().getRegionNameAsString(), e);<a name="line.896"></a>
+<span class="sourceLineNo">897</span>      // global memstore size will be decreased when dropping memstore<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      try {<a name="line.898"></a>
+<span class="sourceLineNo">899</span>        //drop the memory used by memstore if open region fails<a name="line.899"></a>
+<span class="sourceLineNo">900</span>        dropMemStoreContents();<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      } catch (IOException ioE) {<a name="line.901"></a>
+<span class="sourceLineNo">902</span>        if (conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {<a name="line.902"></a>
+<span class="sourceLineNo">903</span>          LOG.warn("Failed drop memstore of region= {}, "<a name="line.903"></a>
+<span class="sourceLineNo">904</span>                  + "some chunks may not released forever since MSLAB is enabled",<a name="line.904"></a>
+<span class="sourceLineNo">905</span>              getRegionInfo().getRegionNameAsString());<a name="line.905"></a>
+<span class="sourceLineNo">906</span>        }<a name="line.906"></a>
+<span class="sourceLineNo">907</span><a name="line.907"></a>
+<span class="sourceLineNo">908</span>      }<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      throw e;<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    } finally {<a name="line.910"></a>
+<span class="sourceLineNo">911</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      // At least it will be 0 otherwise.<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      if (nextSeqId == -1) {<a name="line.913"></a>
+<span class="sourceLineNo">914</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.914"></a>
+<span class="sourceLineNo">915</span>          " initialization.");<a name="line.915"></a>
+<span class="sourceLineNo">916</span>      }<a name="line.916"></a>
+<span class="sourceLineNo">917</span>    }<a name="line.917"></a>
+<span class="sourceLineNo">918</span>  }<a name="line.918"></a>
+<span class="sourceLineNo">919</span><a name="line.919"></a>
+<span class="sourceLineNo">920</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.920"></a>
+<span class="sourceLineNo">921</span>      final MonitoredTask status) throws IOException {<a name="line.921"></a>
+<span class="sourceLineNo">922</span>    if (coprocessorHost != null) {<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.923"></a>
+<span class="sourceLineNo">924</span>      coprocessorHost.preOpen();<a name="line.924"></a>
+<span class="sourceLineNo">925</span>    }<a name="line.925"></a>
+<span class="sourceLineNo">926</span><a name="line.926"></a>
+<span class="sourceLineNo">927</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.927"></a>
+<span class="sourceLineNo">928</span>    // Only the primary replica should write .regioninfo<a name="line.928"></a>
+<span class="sourceLineNo">929</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>      status.setStatus("Writing region info on filesystem");<a name="line.930"></a>
+<span class="sourceLineNo">931</span>      fs.checkRegionInfoOnFilesystem();<a name="line.931"></a>
+<span class="sourceLineNo">932</span>    }<a name="line.932"></a>
+<span class="sourceLineNo">933</span><a name="line.933"></a>
+<span class="sourceLineNo">934</span>    // Initialize all the HStores<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    status.setStatus("Initializing all the Stores");<a name="line.935"></a>
+<span class="sourceLineNo">936</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.937"></a>
+<span class="sourceLineNo">938</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.938"></a>
+<span class="sourceLineNo">939</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.939"></a>
+<span class="sourceLineNo">940</span>      try {<a name="line.940"></a>
+<span class="sourceLineNo">941</span>        // update the stores that we are replaying<a name="line.941"></a>
+<span class="sourceLineNo">942</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.942"></a>
+<span class="sourceLineNo">943</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.943"></a>
+<span class="sourceLineNo">944</span>        // Recover any edits if available.<a name="line.944"></a>
+<span class="sourceLineNo">945</span>        maxSeqId = Math.max(maxSeqId,<a name="line.945"></a>
+<span class="sourceLineNo">946</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.946"></a>
+<span class="sourceLineNo">947</span>        // Make sure mvcc is up to max.<a name="line.947"></a>
+<span class="sourceLineNo">948</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      } finally {<a name="line.949"></a>
+<span class="sourceLineNo">950</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        // update the stores that we are done replaying<a name="line.951"></a>
+<span class="sourceLineNo">952</span>        stores.forEach(HStore::stopReplayingFromWAL);<a name="line.952"></a>
+<span class="sourceLineNo">953</span>      }<a name="line.953"></a>
+<span class="sourceLineNo">954</span>    }<a name="line.954"></a>
+<span class="sourceLineNo">955</span>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.955"></a>
+<span class="sourceLineNo">956</span><a name="line.956"></a>
+<span class="sourceLineNo">957</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.957"></a>
+<span class="sourceLineNo">958</span>    this.writestate.flushRequested = false;<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    this.writestate.compacting.set(0);<a name="line.959"></a>
 <span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>    // Initialize split policy<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.962"></a>
-<span class="sourceLineNo">963</span><a name="line.963"></a>
-<span class="sourceLineNo">964</span>    // Initialize flush policy<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.965"></a>
-<span class="sourceLineNo">966</span><a name="line.966"></a>
-<span class="sourceLineNo">967</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    for (HStore store: stores.values()) {<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<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>    // Use maximum of log sequenceid or that which was found in stores<a name="line.972"></a>
-<span class="sourceLineNo">973</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.973"></a>
-<span class="sourceLineNo">974</span>    long maxSeqIdFromFile =<a name="line.974"></a>
-<span class="sourceLineNo">975</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.975"></a>
-<span class="sourceLineNo">976</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.976"></a>
-<span class="sourceLineNo">977</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    // the max sequence id file.<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.985"></a>
-<span class="sourceLineNo">986</span><a name="line.986"></a>
-<span class="sourceLineNo">987</span>    // A region can be reopened if failed a split; reset flags<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    this.closing.set(false);<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    this.closed.set(false);<a name="line.989"></a>
-<span class="sourceLineNo">990</span><a name="line.990"></a>
-<span class="sourceLineNo">991</span>    if (coprocessorHost != null) {<a name="line.991"></a>
-<span class="sourceLineNo">992</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.992"></a>
-<span class="sourceLineNo">993</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.993"></a>
-<span class="sourceLineNo">994</span>      coprocessorHost.postOpen();<a name="line.994"></a>
-<span class="sourceLineNo">995</span>    }<a name="line.995"></a>
-<span class="sourceLineNo">996</span><a name="line.996"></a>
-<span class="sourceLineNo">997</span>    status.markComplete("Region opened successfully");<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    return nextSeqId;<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>   * Open all Stores.<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>   * @param reporter<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   * @param status<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>   * @return Highest sequenceId found out in a Store.<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * @throws IOException<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   */<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      throws IOException {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>    // Load in all the HStores.<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    long maxSeqId = -1;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    long maxMemstoreTS = -1;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span><a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span><a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      // initialize each store in parallel<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>          @Override<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>          public HStore call() throws IOException {<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>            return instantiateHStore(family);<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          }<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>        });<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      }<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>      boolean allStoresOpened = false;<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>      boolean hasSloppyStores = false;<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>      try {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>          HStore store = future.get();<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>          if (store.isSloppyMemStore()) {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            hasSloppyStores = true;<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>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>              storeMaxSequenceId);<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            maxSeqId = storeMaxSequenceId;<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>          }<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>          }<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>        }<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>        allStoresOpened = true;<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>        if(hasSloppyStores) {<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>                  .build();<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        }<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>      } catch (InterruptedException e) {<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>      } catch (ExecutionException e) {<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        throw new IOException(e.getCause());<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>      } finally {<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        if (!allStoresOpened) {<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>          // something went wrong, close all opened stores<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>          for (HStore store : this.stores.values()) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>            try {<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>              store.close();<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>            } catch (IOException e) {<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>              LOG.warn("close store failed", e);<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>            }<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          }<a name="line.1075"></a>
+<span class="sourceLineNo">961</span>    if (this.writestate.writesEnabled) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      // Remove temporary data left over from old regions<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      fs.cleanupTempDir();<a name="line.965"></a>
+<span class="sourceLineNo">966</span>    }<a name="line.966"></a>
+<span class="sourceLineNo">967</span><a name="line.967"></a>
+<span class="sourceLineNo">968</span>    if (this.writestate.writesEnabled) {<a name="line.968"></a>
+<span class="sourceLineNo">969</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.969"></a>
+<span class="sourceLineNo">970</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.970"></a>
+<span class="sourceLineNo">971</span>      // these directories here on open.  We may be opening a region that was<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      // being split but we crashed in the middle of it all.<a name="line.972"></a>
+<span class="sourceLineNo">973</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.973"></a>
+<span class="sourceLineNo">974</span>      fs.cleanupAnySplitDetritus();<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      fs.cleanupMergesDir();<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    }<a name="line.976"></a>
+<span class="sourceLineNo">977</span><a name="line.977"></a>
+<span class="sourceLineNo">978</span>    // Initialize split policy<a name="line.978"></a>
+<span class="sourceLineNo">979</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.979"></a>
+<span class="sourceLineNo">980</span><a name="line.980"></a>
+<span class="sourceLineNo">981</span>    // Initialize flush policy<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.982"></a>
+<span class="sourceLineNo">983</span><a name="line.983"></a>
+<span class="sourceLineNo">984</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.984"></a>
+<span class="sourceLineNo">985</span>    for (HStore store: stores.values()) {<a name="line.985"></a>
+<span class="sourceLineNo">986</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<a name="line.986"></a>
+<span class="sourceLineNo">987</span>    }<a name="line.987"></a>
+<span class="sourceLineNo">988</span><a name="line.988"></a>
+<span class="sourceLineNo">989</span>    // Use maximum of log sequenceid or that which was found in stores<a name="line.989"></a>
+<span class="sourceLineNo">990</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.990"></a>
+<span class="sourceLineNo">991</span>    long maxSeqIdFromFile =<a name="line.991"></a>
+<span class="sourceLineNo">992</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.994"></a>
+<span class="sourceLineNo">995</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.995"></a>
+<span class="sourceLineNo">996</span>    // the max sequence id file.<a name="line.996"></a>
+<span class="sourceLineNo">997</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.997"></a>
+<span class="sourceLineNo">998</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.998"></a>
+<span class="sourceLineNo">999</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<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>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span><a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>    // A region can be reopened if failed a split; reset flags<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>    this.closing.set(false);<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    this.closed.set(false);<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span><a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>    if (coprocessorHost != null) {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>      coprocessorHost.postOpen();<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>    }<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span><a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>    status.markComplete("Region opened successfully");<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>    return nextSeqId;<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>  }<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span><a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>  /**<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>   * Open all Stores.<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>   * @param reporter<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>   * @param status<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>   * @return Highest sequenceId found out in a Store.<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>   * @throws IOException<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>   */<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>      throws IOException {<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    // Load in all the HStores.<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>    long maxSeqId = -1;<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>    long maxMemstoreTS = -1;<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span><a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>      // initialize each store in parallel<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>          @Override<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>          public HStore call() throws IOException {<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>            return instantiateHStore(family);<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>          }<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>        });<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>      }<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>      boolean allStoresOpened = false;<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>      boolean hasSloppyStores = false;<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>      try {<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>          HStore store = future.get();<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>          if (store.isSloppyMemStore()) {<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>            hasSloppyStores = true;<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>          }<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span><a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>              storeMaxSequenceId);<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>            maxSeqId = storeMaxSequenceId;<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>          }<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>          }<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span>        }<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>        allStoresOpened = true;<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>        if(hasSloppyStores) {<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>                  .build();<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1075"></a>
 <span class="sourceLineNo">1076</span>        }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      }<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    }<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>  }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span><a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>    // Initialize all the HStores<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>    status.setStatus("Warming up all the Stores");<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    try {<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>      initializeStores(reporter, status);<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>    } finally {<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>      status.markComplete("Done warming up.");<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>    }<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>  }<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>   * @return Map of StoreFiles by column family<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>   */<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    for (HStore store : stores.values()) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      if (storeFiles == null) {<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>        continue;<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>        storeFileNames.add(storeFile.getPath());<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      }<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>    }<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>    return allStoreFiles;<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>  }<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span><a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>  @VisibleForTesting<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>        mvcc);<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  }<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span><a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>        mvcc);<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span><a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>    // Store SeqId in HDFS when a region closes<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    // table is still online<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>        mvcc.getReadPoint());<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>    }<a name="line.1136"></a>
+<span class="sourceLineNo">1077</span>      } catch (InterruptedException e) {<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>      } catch (ExecutionException e) {<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>        throw new IOException(e.getCause());<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      } finally {<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>        if (!allStoresOpened) {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>          // something went wrong, close all opened stores<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>          for (HStore store : this.stores.values()) {<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>            try {<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>              store.close();<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>            } catch (IOException e) {<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>              LOG.warn("close store failed", e);<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>            }<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>      }<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>    }<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>  }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span><a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>    // Initialize all the HStores<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>    status.setStatus("Warming up all the Stores");<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>    try {<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>      initializeStores(reporter, status);<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>    } finally {<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>      status.markComplete("Done warming up.");<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>    }<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>  }<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span><a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>  /**<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>   * @return Map of StoreFiles by column family<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>   */<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>    for (HStore store : stores.values()) {<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>      if (storeFiles == null) {<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>        continue;<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span>      }<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>        storeFileNames.add(storeFile.getPath());<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>      }<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>    }<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>    return allStoreFiles;<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>  }<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span><a name="line.1128"></a>
+<span class="sourceLineNo">1129</span>  @VisibleForTesting<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>        mvcc);<a name="line.1136"></a>
 <span class="sourceLineNo">1137</span>  }<a name="line.1137"></a>
 <span class="sourceLineNo">1138</span><a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>  /**<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>   * @return True if this region has references.<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>   */<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>  public boolean hasReferences() {<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<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>  public void blockUpdates() {<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>    this.updatesLock.writeLock().lock();<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>  }<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span><a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>  public void unblockUpdates() {<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>    this.updatesLock.writeLock().unlock();<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>  }<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span><a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>    return hdfsBlocksDistribution;<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>  }<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span><a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>  /**<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>   * @param conf configuration<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>   * @param regionInfo encoded name of the region<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>   * @throws IOException<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>   */<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>  }<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span><a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>  /**<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>   * @param conf configuration<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>   * @param regionInfo encoded name of the region<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>   * @param tablePath the table directory<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>   * @throws IOException<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>   */<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1186"></a>
-<span class="sourceLineNo">1187</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1188"></a>
-<span class="sourceLineNo">1189</span><a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span>      if (locatedFileStatusList == null) {<a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>        continue;<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>      }<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span><a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>        Path p = status.getPath();<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>          // creation<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>              status.getBlockLocations());<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span>        } else {<a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>          throw new IOException("path=" + p<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>              + " doesn't look like a valid StoreFile");<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>        }<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>      }<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>    }<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>    return hdfsBlocksDistribution;<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>   * Increase the size of mem store in this region and the size of global mem<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>   * store<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>   */<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>  }<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span><a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>    if (this.rsAccounting != null) {<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>    }<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>    long dataSize =<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1234"></a>
+<span class="sourceLineNo">1139</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span>        mvcc);<a name="line.1145"></a>
+<span class="sourceLineNo">1146</span><a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>    // Store SeqId in HDFS when a region closes<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>    // table is still online<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span>        mvcc.getReadPoint());<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>    }<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>  }<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span><a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>  /**<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>   * @return True if this region has references.<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>   */<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>  public boolean hasReferences() {<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>  }<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span><a name="line.1162"></a>
+<span class="sourceLineNo">1163</span>  public void blockUpdates() {<a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>    this.updatesLock.writeLock().lock();<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>  }<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span><a name="line.1166"></a>
+<span class="sourceLineNo">1167</span>  public void unblockUpdates() {<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>    this.updatesLock.writeLock().unlock();<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>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1172"></a>
+<span class="sourceLineNo">1173</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1174"></a>
+<span class="sourceLineNo">1175</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>    return hdfsBlocksDistribution;<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span>  }<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span><a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>  /**<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>   * @param conf configuration<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1182"></a>
+<span class="sourceLineNo">1183</span>   * @param regionInfo encoded name of the region<a name="line.1183"></a>
+<span class="sourceLineNo">1184</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1184"></a>
+<span class="sourceLineNo">1185</span>   * @throws IOException<a name="line.1185"></a>
+<span class="sourceLineNo">1186</span>   */<a name="line.1186"></a>
+<span class="sourceLineNo">1187</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1187"></a>
+<span class="sourceLineNo">1188</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1188"></a>
+<span class="sourceLineNo">1189</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1189"></a>
+<span class="sourceLineNo">1190</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1190"></a>
+<span class="sourceLineNo">1191</span>  }<a name="line.1191"></a>
+<span class="sourceLineNo">1192</span><a name="line.1192"></a>
+<span class="sourceLineNo">1193</span>  /**<a name="line.1193"></a>
+<span class="sourceLineNo">1194</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1194"></a>
+<span class="sourceLineNo">1195</span>   * @param conf configuration<a name="line.1195"></a>
+<span class="sourceLineNo">1196</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1196"></a>
+<span class="sourceLineNo">1197</span>   * @param regionInfo encoded name of the region<a name="line.1197"></a>
+<span class="sourceLineNo">1198</span>   * @param tablePath the table directory<a name="line.1198"></a>
+<span class="sourceLineNo">1199</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1199"></a>
+<span class="sourceLineNo">1200</span>   * @throws IOException<a name="line.1200"></a>
+<span class="sourceLineNo">1201</span>   */<a name="line.1201"></a>
+<span class="sourceLineNo">1202</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1202"></a>
+<span class="sourceLineNo">1203</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1203"></a>
+<span class="sourceLineNo">1204</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1204"></a>
+<span class="sourceLineNo">1205</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1205"></a>
+<span class="sourceLineNo">1206</span><a name="line.1206"></a>
+<span class="sourceLineNo">1207</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1207"></a>
+<span class="sourceLineNo">1208</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1208"></a>
+<span class="sourceLineNo">1209</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1209"></a>
+<span class="sourceLineNo">1210</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1210"></a>
+<span class="sourceLineNo">1211</span>      if (locatedFileStatusList == null) {<a name="line.1211"></a>
+<span class="sourceLineNo">1212</span>        continue;<a name="line.1212"></a>
+<span class="sourceLineNo">1213</span>      }<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span><a name="line.1214"></a>
+<span class="sourceLineNo">1215</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1215"></a>
+<span class="sourceLineNo">1216</span>        Path p = status.getPath();<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1217"></a>
+<span class="sourceLineNo">1218</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span>          // creation<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1224"></a>
+<span class="sourceLineNo">1225</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1225"></a>
+<span class="sourceLineNo">1226</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1226"></a>
+<span class="sourceLineNo">1227</span>              status.getBlockLocations());<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span>        } else {<a name="line.1228"></a>
+<span class="sourceLineNo">1229</span>          throw new IOException("path=" + p<a name="line.1229"></a>
+<span class="sourceLineNo">1230</span>              + " doesn't look like a valid StoreFile");<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>    }<a name="line.1233"></a>
+<span class="sourceLineNo">1234</span>    return hdfsBlocksDistribution;<a name="line.1234"></a>
 <span class="sourceLineNo">1235</span>  }<a name="line.1235"></a>
 <span class="sourceLineNo">1236</span><a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>  }<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span><a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>    if (this.rsAccounting != null) {<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>    }<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>    long dataSize =<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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 checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    if (memStoreDataSize &lt; 0) {<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>    }<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>  }<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span><a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>  @Override<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>  public RegionInfo getRegionInfo() {<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>    return this.fs.getRegionInfo();<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>  }<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span><a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>  /**<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>   * @return Instance of {@link RegionServerServices} used by this HRegion.<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>   * Can be null.<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>   */<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>  RegionServerServices getRegionServerServices() {<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>    return this.rsServices;<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>  }<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span><a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>  @Override<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>  public long getReadRequestsCount() {<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>    return readRequestsCount.sum();<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>  }<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span><a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>  @Override<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>  public long getCpRequestsCount() {<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>    return cpRequestsCount.sum();<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>  @Override<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>  public long getFilteredReadRequestsCount() {<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>    return filteredReadRequestsCount.sum();<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>  @Override<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>  public long getWriteRequestsCount() {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    return writeRequestsCount.sum();<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>  }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>  @Override<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>  public long getMemStoreDataSize() {<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>    return memStoreSizing.getDataSize();<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>  @Override<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>  public long getMemStoreHeapSize() {<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>    return memStoreSizing.getHeapSize();<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>  }<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span><a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>  @Override<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>  public long getMemStoreOffHeapSize() {<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>    return memStoreSizing.getOffHeapSize();<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>  }<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span><a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>  /** @return store services for this region, to access services required by store level needs */<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>  public RegionServicesForStores getRegionServicesForStores() {<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>    return regionServicesForStores;<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>  @Override<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>  public long getNumMutationsWithoutWAL() {<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>    return numMutationsWithoutWAL.sum();<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>  @Override<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>  public long getDataInMemoryWithoutWAL() {<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>    return dataInMemoryWithoutWAL.sum();<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>  }<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span><a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>  @Override<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>  public long getBlockedRequestsCount() {<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>    return blockedRequestsCount.sum();<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>  }<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span><a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>  @Override<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>  public long getCheckAndMutateChecksPassed() {<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>    return checkAndMutateChecksPassed.sum();<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 long getCheckAndMutateChecksFailed() {<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    return checkAndMutateChecksFailed.sum();<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>  // TODO Needs to check whether we should expose our metrics system to CPs. If CPs themselves doing<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>  // the op and bypassing the core, this might be needed? Should be stop supporting the bypass<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>  // feature?<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>  public MetricsRegion getMetrics() {<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>    return metricsRegion;<a name="line.1342"></a>
+<span class="sourceLineNo">1237</span>  /**<a name="line.1237"></a>
+<span class="sourceLineNo">1238</span>   * Increase the size of mem store in this region and the size of global mem<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span>   * store<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span>   */<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>  }<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span><a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>    if (this.rsAccounting != null) {<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>    }<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>    long dataSize =<a name="line.1249"></a>
+<span class="sourceLineNo">1250</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1250"></a>
+<span class="sourceLineNo">1251</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>  }<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span><a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span>  }<a name="line.1256"></a>
+<span class="sourceLineNo">1257</span><a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>    if (this.rsAccounting != null) {<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>    }<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>    long dataSize =<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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>  private void checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>    if (memStoreDataSize &lt; 0) {<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>    }<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>  }<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span><a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>  @Override<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>  public RegionInfo getRegionInfo() {<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>    return this.fs.getRegionInfo();<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>  }<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>   * @return Instance of {@link RegionServerServices} used by

<TRUNCATED>

[13/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html
index 598cf81..26b0752 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html
@@ -55,88 +55,92 @@
 <span class="sourceLineNo">047</span>      + ClassSize.REFERENCE<a name="line.47"></a>
 <span class="sourceLineNo">048</span>      + ClassSize.ATOMIC_BOOLEAN);<a name="line.48"></a>
 <span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>  protected MutableSegment(CellSet cellSet, CellComparator comparator, MemStoreLAB memStoreLAB) {<a name="line.50"></a>
-<span class="sourceLineNo">051</span>    super(cellSet, comparator, memStoreLAB, TimeRangeTracker.create(TimeRangeTracker.Type.SYNC));<a name="line.51"></a>
-<span class="sourceLineNo">052</span>    incMemStoreSize(0, DEEP_OVERHEAD, 0); // update the mutable segment metadata<a name="line.52"></a>
-<span class="sourceLineNo">053</span>  }<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>  /**<a name="line.55"></a>
-<span class="sourceLineNo">056</span>   * Adds the given cell into the segment<a name="line.56"></a>
-<span class="sourceLineNo">057</span>   * @param cell the cell to add<a name="line.57"></a>
-<span class="sourceLineNo">058</span>   * @param mslabUsed whether using MSLAB<a name="line.58"></a>
-<span class="sourceLineNo">059</span>   */<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  public void add(Cell cell, boolean mslabUsed, MemStoreSizing memStoreSizing,<a name="line.60"></a>
-<span class="sourceLineNo">061</span>      boolean sizeAddedPreOperation) {<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    internalAdd(cell, mslabUsed, memStoreSizing, sizeAddedPreOperation);<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  }<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  public void upsert(Cell cell, long readpoint, MemStoreSizing memStoreSizing,<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      boolean sizeAddedPreOperation) {<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    internalAdd(cell, false, memStoreSizing, sizeAddedPreOperation);<a name="line.67"></a>
+<span class="sourceLineNo">050</span>  protected MutableSegment(CellSet cellSet, CellComparator comparator,<a name="line.50"></a>
+<span class="sourceLineNo">051</span>      MemStoreLAB memStoreLAB, MemStoreSizing memstoreSizing) {<a name="line.51"></a>
+<span class="sourceLineNo">052</span>    super(cellSet, comparator, memStoreLAB, TimeRangeTracker.create(TimeRangeTracker.Type.SYNC));<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    incMemStoreSize(0, DEEP_OVERHEAD, 0); // update the mutable segment metadata<a name="line.53"></a>
+<span class="sourceLineNo">054</span>    if (memstoreSizing != null) {<a name="line.54"></a>
+<span class="sourceLineNo">055</span>      memstoreSizing.incMemStoreSize(0, DEEP_OVERHEAD, 0);<a name="line.55"></a>
+<span class="sourceLineNo">056</span>    }<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  }<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  /**<a name="line.59"></a>
+<span class="sourceLineNo">060</span>   * Adds the given cell into the segment<a name="line.60"></a>
+<span class="sourceLineNo">061</span>   * @param cell the cell to add<a name="line.61"></a>
+<span class="sourceLineNo">062</span>   * @param mslabUsed whether using MSLAB<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   */<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  public void add(Cell cell, boolean mslabUsed, MemStoreSizing memStoreSizing,<a name="line.64"></a>
+<span class="sourceLineNo">065</span>      boolean sizeAddedPreOperation) {<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    internalAdd(cell, mslabUsed, memStoreSizing, sizeAddedPreOperation);<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  }<a name="line.67"></a>
 <span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>    // Get the Cells for the row/family/qualifier regardless of timestamp.<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    // For this case we want to clean up any other puts<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    Cell firstCell = PrivateCellUtil.createFirstOnRowColTS(cell, HConstants.LATEST_TIMESTAMP);<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    SortedSet&lt;Cell&gt; ss = this.tailSet(firstCell);<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    Iterator&lt;Cell&gt; it = ss.iterator();<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    // versions visible to oldest scanner<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    int versionsVisible = 0;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    while (it.hasNext()) {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      Cell cur = it.next();<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>      if (cell == cur) {<a name="line.79"></a>
-<span class="sourceLineNo">080</span>        // ignore the one just put in<a name="line.80"></a>
-<span class="sourceLineNo">081</span>        continue;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      }<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      // check that this is the row and column we are interested in, otherwise bail<a name="line.83"></a>
-<span class="sourceLineNo">084</span>      if (CellUtil.matchingRows(cell, cur) &amp;&amp; CellUtil.matchingQualifier(cell, cur)) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>        // only remove Puts that concurrent scanners cannot possibly see<a name="line.85"></a>
-<span class="sourceLineNo">086</span>        if (cur.getTypeByte() == KeyValue.Type.Put.getCode() &amp;&amp; cur.getSequenceId() &lt;= readpoint) {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>          if (versionsVisible &gt;= 1) {<a name="line.87"></a>
-<span class="sourceLineNo">088</span>            // if we get here we have seen at least one version visible to the oldest scanner,<a name="line.88"></a>
-<span class="sourceLineNo">089</span>            // which means we can prove that no scanner will see this version<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>            // false means there was a change, so give us the size.<a name="line.91"></a>
-<span class="sourceLineNo">092</span>            // TODO when the removed cell ie.'cur' having its data in MSLAB, we can not release that<a name="line.92"></a>
-<span class="sourceLineNo">093</span>            // area. Only the Cell object as such going way. We need to consider cellLen to be<a name="line.93"></a>
-<span class="sourceLineNo">094</span>            // decreased there as 0 only. Just keeping it as existing code now. We need to know the<a name="line.94"></a>
-<span class="sourceLineNo">095</span>            // removed cell is from MSLAB or not. Will do once HBASE-16438 is in<a name="line.95"></a>
-<span class="sourceLineNo">096</span>            int cellLen = getCellLength(cur);<a name="line.96"></a>
-<span class="sourceLineNo">097</span>            long heapSize = heapSizeChange(cur, true);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>            long offHeapSize = offHeapSizeChange(cur, true);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>            incMemStoreSize(-cellLen, -heapSize, -offHeapSize);<a name="line.99"></a>
-<span class="sourceLineNo">100</span>            if (memStoreSizing != null) {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>              memStoreSizing.decMemStoreSize(cellLen, heapSize, offHeapSize);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>            }<a name="line.102"></a>
-<span class="sourceLineNo">103</span>            it.remove();<a name="line.103"></a>
-<span class="sourceLineNo">104</span>          } else {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>            versionsVisible++;<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>      } else {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>        // past the row or column, done<a name="line.109"></a>
-<span class="sourceLineNo">110</span>        break;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      }<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>  }<a name="line.113"></a>
-<span class="sourceLineNo">114</span><a name="line.114"></a>
-<span class="sourceLineNo">115</span>  public boolean setInMemoryFlushed() {<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    return flushed.compareAndSet(false, true);<a name="line.116"></a>
+<span class="sourceLineNo">069</span>  public void upsert(Cell cell, long readpoint, MemStoreSizing memStoreSizing,<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      boolean sizeAddedPreOperation) {<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    internalAdd(cell, false, memStoreSizing, sizeAddedPreOperation);<a name="line.71"></a>
+<span class="sourceLineNo">072</span><a name="line.72"></a>
+<span class="sourceLineNo">073</span>    // Get the Cells for the row/family/qualifier regardless of timestamp.<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    // For this case we want to clean up any other puts<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    Cell firstCell = PrivateCellUtil.createFirstOnRowColTS(cell, HConstants.LATEST_TIMESTAMP);<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    SortedSet&lt;Cell&gt; ss = this.tailSet(firstCell);<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    Iterator&lt;Cell&gt; it = ss.iterator();<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    // versions visible to oldest scanner<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    int versionsVisible = 0;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    while (it.hasNext()) {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>      Cell cur = it.next();<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>      if (cell == cur) {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>        // ignore the one just put in<a name="line.84"></a>
+<span class="sourceLineNo">085</span>        continue;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      }<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      // check that this is the row and column we are interested in, otherwise bail<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      if (CellUtil.matchingRows(cell, cur) &amp;&amp; CellUtil.matchingQualifier(cell, cur)) {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>        // only remove Puts that concurrent scanners cannot possibly see<a name="line.89"></a>
+<span class="sourceLineNo">090</span>        if (cur.getTypeByte() == KeyValue.Type.Put.getCode() &amp;&amp; cur.getSequenceId() &lt;= readpoint) {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>          if (versionsVisible &gt;= 1) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>            // if we get here we have seen at least one version visible to the oldest scanner,<a name="line.92"></a>
+<span class="sourceLineNo">093</span>            // which means we can prove that no scanner will see this version<a name="line.93"></a>
+<span class="sourceLineNo">094</span><a name="line.94"></a>
+<span class="sourceLineNo">095</span>            // false means there was a change, so give us the size.<a name="line.95"></a>
+<span class="sourceLineNo">096</span>            // TODO when the removed cell ie.'cur' having its data in MSLAB, we can not release that<a name="line.96"></a>
+<span class="sourceLineNo">097</span>            // area. Only the Cell object as such going way. We need to consider cellLen to be<a name="line.97"></a>
+<span class="sourceLineNo">098</span>            // decreased there as 0 only. Just keeping it as existing code now. We need to know the<a name="line.98"></a>
+<span class="sourceLineNo">099</span>            // removed cell is from MSLAB or not. Will do once HBASE-16438 is in<a name="line.99"></a>
+<span class="sourceLineNo">100</span>            int cellLen = getCellLength(cur);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>            long heapSize = heapSizeChange(cur, true);<a name="line.101"></a>
+<span class="sourceLineNo">102</span>            long offHeapSize = offHeapSizeChange(cur, true);<a name="line.102"></a>
+<span class="sourceLineNo">103</span>            incMemStoreSize(-cellLen, -heapSize, -offHeapSize);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>            if (memStoreSizing != null) {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>              memStoreSizing.decMemStoreSize(cellLen, heapSize, offHeapSize);<a name="line.105"></a>
+<span class="sourceLineNo">106</span>            }<a name="line.106"></a>
+<span class="sourceLineNo">107</span>            it.remove();<a name="line.107"></a>
+<span class="sourceLineNo">108</span>          } else {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>            versionsVisible++;<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>      } else {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>        // past the row or column, done<a name="line.113"></a>
+<span class="sourceLineNo">114</span>        break;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      }<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><a name="line.118"></a>
-<span class="sourceLineNo">119</span>  /**<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * Returns the first cell in the segment<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   * @return the first cell in the segment<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   */<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  @VisibleForTesting<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  Cell first() {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    return this.getCellSet().first();<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>  @Override protected long indexEntrySize() {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      return ClassSize.CONCURRENT_SKIPLISTMAP_ENTRY;<a name="line.129"></a>
+<span class="sourceLineNo">119</span>  public boolean setInMemoryFlushed() {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    return flushed.compareAndSet(false, true);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  }<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>   * Returns the first cell in the segment<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   * @return the first cell in the segment<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>  Cell first() {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    return this.getCellSet().first();<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">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>  @Override protected long indexEntrySize() {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      return ClassSize.CONCURRENT_SKIPLISTMAP_ENTRY;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  }<a name="line.134"></a>
+<span class="sourceLineNo">135</span>}<a name="line.135"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html
index 4782db3..b369d13 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html
@@ -27,248 +27,196 @@
 <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 java.lang.management.MemoryType;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.util.concurrent.ConcurrentMap;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.util.concurrent.ConcurrentSkipListMap;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.util.concurrent.atomic.LongAdder;<a name="line.24"></a>
-<span class="sourceLineNo">025</span><a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.conf.Configuration;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.io.util.MemorySizeUtil;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.30"></a>
-<span class="sourceLineNo">031</span><a name="line.31"></a>
-<span class="sourceLineNo">032</span>/**<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * RegionServerAccounting keeps record of some basic real time information about<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * the Region Server. Currently, it keeps record the global memstore size and global memstore<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * on-heap and off-heap overhead. It also tracks the replay edits per region.<a name="line.35"></a>
-<span class="sourceLineNo">036</span> */<a name="line.36"></a>
-<span class="sourceLineNo">037</span>@InterfaceAudience.Private<a name="line.37"></a>
-<span class="sourceLineNo">038</span>public class RegionServerAccounting {<a name="line.38"></a>
-<span class="sourceLineNo">039</span>  // memstore data size<a name="line.39"></a>
-<span class="sourceLineNo">040</span>  private final LongAdder globalMemStoreDataSize = new LongAdder();<a name="line.40"></a>
-<span class="sourceLineNo">041</span>  // memstore heap size.<a name="line.41"></a>
-<span class="sourceLineNo">042</span>  private final LongAdder globalMemStoreHeapSize = new LongAdder();<a name="line.42"></a>
-<span class="sourceLineNo">043</span>  // memstore off-heap size.<a name="line.43"></a>
-<span class="sourceLineNo">044</span>  private final LongAdder globalMemStoreOffHeapSize = new LongAdder();<a name="line.44"></a>
-<span class="sourceLineNo">045</span><a name="line.45"></a>
-<span class="sourceLineNo">046</span>  // Store the edits size during replaying WAL. Use this to roll back the<a name="line.46"></a>
-<span class="sourceLineNo">047</span>  // global memstore size once a region opening failed.<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  private final ConcurrentMap&lt;byte[], MemStoreSizing&gt; replayEditsPerRegion =<a name="line.48"></a>
-<span class="sourceLineNo">049</span>    new ConcurrentSkipListMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>  private long globalMemStoreLimit;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>  private final float globalMemStoreLimitLowMarkPercent;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>  private long globalMemStoreLimitLowMark;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>  private final MemoryType memType;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  private long globalOnHeapMemstoreLimit;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>  private long globalOnHeapMemstoreLimitLowMark;<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>  public RegionServerAccounting(Configuration conf) {<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    Pair&lt;Long, MemoryType&gt; globalMemstoreSizePair = MemorySizeUtil.getGlobalMemStoreSize(conf);<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    this.globalMemStoreLimit = globalMemstoreSizePair.getFirst();<a name="line.60"></a>
-<span class="sourceLineNo">061</span>    this.memType = globalMemstoreSizePair.getSecond();<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    this.globalMemStoreLimitLowMarkPercent =<a name="line.62"></a>
-<span class="sourceLineNo">063</span>        MemorySizeUtil.getGlobalMemStoreHeapLowerMark(conf, this.memType == MemoryType.HEAP);<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    // When off heap memstore in use we configure the global off heap space for memstore as bytes<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    // not as % of max memory size. In such case, the lower water mark should be specified using the<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    // key "hbase.regionserver.global.memstore.size.lower.limit" which says % of the global upper<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    // bound and defaults to 95%. In on heap case also specifying this way is ideal. But in the past<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    // we used to take lower bound also as the % of xmx (38% as default). For backward compatibility<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    // for this deprecated config,we will fall back to read that config when new one is missing.<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    // Only for on heap case, do this fallback mechanism. For off heap it makes no sense.<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    // TODO When to get rid of the deprecated config? ie<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    // "hbase.regionserver.global.memstore.lowerLimit". Can get rid of this boolean passing then.<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    this.globalMemStoreLimitLowMark =<a name="line.73"></a>
-<span class="sourceLineNo">074</span>        (long) (this.globalMemStoreLimit * this.globalMemStoreLimitLowMarkPercent);<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    this.globalOnHeapMemstoreLimit = MemorySizeUtil.getOnheapGlobalMemStoreSize(conf);<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    this.globalOnHeapMemstoreLimitLowMark =<a name="line.76"></a>
-<span class="sourceLineNo">077</span>        (long) (this.globalOnHeapMemstoreLimit * this.globalMemStoreLimitLowMarkPercent);<a name="line.77"></a>
+<span class="sourceLineNo">022</span>import java.util.concurrent.atomic.LongAdder;<a name="line.22"></a>
+<span class="sourceLineNo">023</span><a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.conf.Configuration;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.io.util.MemorySizeUtil;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.27"></a>
+<span class="sourceLineNo">028</span><a name="line.28"></a>
+<span class="sourceLineNo">029</span>/**<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * RegionServerAccounting keeps record of some basic real time information about<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * the Region Server. Currently, it keeps record the global memstore size and global memstore<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * on-heap and off-heap overhead. It also tracks the replay edits per region.<a name="line.32"></a>
+<span class="sourceLineNo">033</span> */<a name="line.33"></a>
+<span class="sourceLineNo">034</span>@InterfaceAudience.Private<a name="line.34"></a>
+<span class="sourceLineNo">035</span>public class RegionServerAccounting {<a name="line.35"></a>
+<span class="sourceLineNo">036</span>  // memstore data size<a name="line.36"></a>
+<span class="sourceLineNo">037</span>  private final LongAdder globalMemStoreDataSize = new LongAdder();<a name="line.37"></a>
+<span class="sourceLineNo">038</span>  // memstore heap size.<a name="line.38"></a>
+<span class="sourceLineNo">039</span>  private final LongAdder globalMemStoreHeapSize = new LongAdder();<a name="line.39"></a>
+<span class="sourceLineNo">040</span>  // memstore off-heap size.<a name="line.40"></a>
+<span class="sourceLineNo">041</span>  private final LongAdder globalMemStoreOffHeapSize = new LongAdder();<a name="line.41"></a>
+<span class="sourceLineNo">042</span><a name="line.42"></a>
+<span class="sourceLineNo">043</span>  private long globalMemStoreLimit;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>  private final float globalMemStoreLimitLowMarkPercent;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  private long globalMemStoreLimitLowMark;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>  private final MemoryType memType;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  private long globalOnHeapMemstoreLimit;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>  private long globalOnHeapMemstoreLimitLowMark;<a name="line.48"></a>
+<span class="sourceLineNo">049</span><a name="line.49"></a>
+<span class="sourceLineNo">050</span>  public RegionServerAccounting(Configuration conf) {<a name="line.50"></a>
+<span class="sourceLineNo">051</span>    Pair&lt;Long, MemoryType&gt; globalMemstoreSizePair = MemorySizeUtil.getGlobalMemStoreSize(conf);<a name="line.51"></a>
+<span class="sourceLineNo">052</span>    this.globalMemStoreLimit = globalMemstoreSizePair.getFirst();<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    this.memType = globalMemstoreSizePair.getSecond();<a name="line.53"></a>
+<span class="sourceLineNo">054</span>    this.globalMemStoreLimitLowMarkPercent =<a name="line.54"></a>
+<span class="sourceLineNo">055</span>        MemorySizeUtil.getGlobalMemStoreHeapLowerMark(conf, this.memType == MemoryType.HEAP);<a name="line.55"></a>
+<span class="sourceLineNo">056</span>    // When off heap memstore in use we configure the global off heap space for memstore as bytes<a name="line.56"></a>
+<span class="sourceLineNo">057</span>    // not as % of max memory size. In such case, the lower water mark should be specified using the<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    // key "hbase.regionserver.global.memstore.size.lower.limit" which says % of the global upper<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    // bound and defaults to 95%. In on heap case also specifying this way is ideal. But in the past<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    // we used to take lower bound also as the % of xmx (38% as default). For backward compatibility<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    // for this deprecated config,we will fall back to read that config when new one is missing.<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    // Only for on heap case, do this fallback mechanism. For off heap it makes no sense.<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    // TODO When to get rid of the deprecated config? ie<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    // "hbase.regionserver.global.memstore.lowerLimit". Can get rid of this boolean passing then.<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    this.globalMemStoreLimitLowMark =<a name="line.65"></a>
+<span class="sourceLineNo">066</span>        (long) (this.globalMemStoreLimit * this.globalMemStoreLimitLowMarkPercent);<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    this.globalOnHeapMemstoreLimit = MemorySizeUtil.getOnheapGlobalMemStoreSize(conf);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    this.globalOnHeapMemstoreLimitLowMark =<a name="line.68"></a>
+<span class="sourceLineNo">069</span>        (long) (this.globalOnHeapMemstoreLimit * this.globalMemStoreLimitLowMarkPercent);<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  }<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>  long getGlobalMemStoreLimit() {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    return this.globalMemStoreLimit;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  }<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>  long getGlobalOnHeapMemStoreLimit() {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    return this.globalOnHeapMemstoreLimit;<a name="line.77"></a>
 <span class="sourceLineNo">078</span>  }<a name="line.78"></a>
 <span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  long getGlobalMemStoreLimit() {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    return this.globalMemStoreLimit;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  }<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>  long getGlobalOnHeapMemStoreLimit() {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    return this.globalOnHeapMemstoreLimit;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>  // Called by the tuners.<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  void setGlobalMemStoreLimits(long newGlobalMemstoreLimit) {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    if (this.memType == MemoryType.HEAP) {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      this.globalMemStoreLimit = newGlobalMemstoreLimit;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      this.globalMemStoreLimitLowMark =<a name="line.92"></a>
-<span class="sourceLineNo">093</span>          (long) (this.globalMemStoreLimit * this.globalMemStoreLimitLowMarkPercent);<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    } else {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      this.globalOnHeapMemstoreLimit = newGlobalMemstoreLimit;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      this.globalOnHeapMemstoreLimitLowMark =<a name="line.96"></a>
-<span class="sourceLineNo">097</span>          (long) (this.globalOnHeapMemstoreLimit * this.globalMemStoreLimitLowMarkPercent);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
+<span class="sourceLineNo">080</span>  // Called by the tuners.<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  void setGlobalMemStoreLimits(long newGlobalMemstoreLimit) {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    if (this.memType == MemoryType.HEAP) {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      this.globalMemStoreLimit = newGlobalMemstoreLimit;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      this.globalMemStoreLimitLowMark =<a name="line.84"></a>
+<span class="sourceLineNo">085</span>          (long) (this.globalMemStoreLimit * this.globalMemStoreLimitLowMarkPercent);<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    } else {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      this.globalOnHeapMemstoreLimit = newGlobalMemstoreLimit;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      this.globalOnHeapMemstoreLimitLowMark =<a name="line.88"></a>
+<span class="sourceLineNo">089</span>          (long) (this.globalOnHeapMemstoreLimit * this.globalMemStoreLimitLowMarkPercent);<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    }<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  }<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>  boolean isOffheap() {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    return this.memType == MemoryType.NON_HEAP;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  }<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>  long getGlobalMemStoreLimitLowMark() {<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    return this.globalMemStoreLimitLowMark;<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>  boolean isOffheap() {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    return this.memType == MemoryType.NON_HEAP;<a name="line.102"></a>
+<span class="sourceLineNo">101</span>  float getGlobalMemStoreLimitLowMarkPercent() {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    return this.globalMemStoreLimitLowMarkPercent;<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>  long getGlobalMemStoreLimitLowMark() {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    return this.globalMemStoreLimitLowMark;<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>  float getGlobalMemStoreLimitLowMarkPercent() {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    return this.globalMemStoreLimitLowMarkPercent;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  }<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span>  /**<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * @return the global Memstore data size in the RegionServer<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  public long getGlobalMemStoreDataSize() {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    return globalMemStoreDataSize.sum();<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>  /**<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   * @return the global memstore heap size in the RegionServer<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   */<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  public long getGlobalMemStoreHeapSize() {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    return this.globalMemStoreHeapSize.sum();<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  }<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>   * @return the global memstore heap size in the RegionServer<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   */<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  public long getGlobalMemStoreOffHeapSize() {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    return this.globalMemStoreOffHeapSize.sum();<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>  void incGlobalMemStoreSize(MemStoreSize mss) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    incGlobalMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<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 void incGlobalMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    globalMemStoreDataSize.add(dataSizeDelta);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    globalMemStoreHeapSize.add(heapSizeDelta);<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    globalMemStoreOffHeapSize.add(offHeapSizeDelta);<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>  public void decGlobalMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    globalMemStoreDataSize.add(-dataSizeDelta);<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    globalMemStoreHeapSize.add(-heapSizeDelta);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    globalMemStoreOffHeapSize.add(-offHeapSizeDelta);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  /**<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * Return true if we are above the memstore high water mark<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   * @return the flushtype<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   */<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  public FlushType isAboveHighWaterMark() {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    // for onheap memstore we check if the global memstore size and the<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    // global heap overhead is greater than the global memstore limit<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    if (memType == MemoryType.HEAP) {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      if (getGlobalMemStoreHeapSize() &gt;= globalMemStoreLimit) {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>        return FlushType.ABOVE_ONHEAP_HIGHER_MARK;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    } else {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      // If the configured memstore is offheap, check for two things<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      // 1) If the global memstore off-heap size is greater than the configured<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      // 'hbase.regionserver.offheap.global.memstore.size'<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      // 2) If the global memstore heap size is greater than the configured onheap<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      // global memstore limit 'hbase.regionserver.global.memstore.size'.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      // We do this to avoid OOME incase of scenarios where the heap is occupied with<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      // lot of onheap references to the cells in memstore<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      if (getGlobalMemStoreOffHeapSize() &gt;= globalMemStoreLimit) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        // Indicates that global memstore size is above the configured<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        // 'hbase.regionserver.offheap.global.memstore.size'<a name="line.171"></a>
-<span class="sourceLineNo">172</span>        return FlushType.ABOVE_OFFHEAP_HIGHER_MARK;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      } else if (getGlobalMemStoreHeapSize() &gt;= this.globalOnHeapMemstoreLimit) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        // Indicates that the offheap memstore's heap overhead is greater than the<a name="line.174"></a>
-<span class="sourceLineNo">175</span>        // configured 'hbase.regionserver.global.memstore.size'.<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        return FlushType.ABOVE_ONHEAP_HIGHER_MARK;<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>    return FlushType.NORMAL;<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>   * Return true if we're above the low watermark<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   */<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  public FlushType isAboveLowWaterMark() {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    // for onheap memstore we check if the global memstore size and the<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    // global heap overhead is greater than the global memstore lower mark limit<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    if (memType == MemoryType.HEAP) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      if (getGlobalMemStoreHeapSize() &gt;= globalMemStoreLimitLowMark) {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>        return FlushType.ABOVE_ONHEAP_LOWER_MARK;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      }<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    } else {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      if (getGlobalMemStoreOffHeapSize() &gt;= globalMemStoreLimitLowMark) {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>        // Indicates that the offheap memstore's size is greater than the global memstore<a name="line.194"></a>
-<span class="sourceLineNo">195</span>        // lower limit<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        return FlushType.ABOVE_OFFHEAP_LOWER_MARK;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      } else if (getGlobalMemStoreHeapSize() &gt;= globalOnHeapMemstoreLimitLowMark) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>        // Indicates that the offheap memstore's heap overhead is greater than the global memstore<a name="line.198"></a>
-<span class="sourceLineNo">199</span>        // onheap lower limit<a name="line.199"></a>
-<span class="sourceLineNo">200</span>        return FlushType.ABOVE_ONHEAP_LOWER_MARK;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      }<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    return FlushType.NORMAL;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  }<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>  /**<a name="line.206"></a>
-<span class="sourceLineNo">207</span>   * @return the flush pressure of all stores on this regionserver. The value should be greater than<a name="line.207"></a>
-<span class="sourceLineNo">208</span>   *         or equal to 0.0, and any value greater than 1.0 means we enter the emergency state that<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   *         global memstore size already exceeds lower limit.<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   */<a name="line.210"></a>
-<span class="sourceLineNo">211</span>  public double getFlushPressure() {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    if (memType == MemoryType.HEAP) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      return (getGlobalMemStoreHeapSize()) * 1.0 / globalMemStoreLimitLowMark;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    } else {<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      return Math.max(getGlobalMemStoreOffHeapSize() * 1.0 / globalMemStoreLimitLowMark,<a name="line.215"></a>
-<span class="sourceLineNo">216</span>          getGlobalMemStoreHeapSize() * 1.0 / globalOnHeapMemstoreLimitLowMark);<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    }<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>  /***<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   * Add memStoreSize to replayEditsPerRegion.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   *<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * @param regionName region name.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   * @param memStoreSize the Memstore size will be added to replayEditsPerRegion.<a name="line.224"></a>
-<span class="sourceLineNo">225</span>   */<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  public void addRegionReplayEditsSize(byte[] regionName, MemStoreSize memStoreSize) {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    MemStoreSizing replayEdistsSize = replayEditsPerRegion.get(regionName);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    // All ops on the same MemStoreSize object is going to be done by single thread, sequentially<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    // only. First calls to this method to increment the per region reply edits size and then call<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // to either rollbackRegionReplayEditsSize or clearRegionReplayEditsSize as per the result of<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    // the region open operation. No need to handle multi thread issues on one region's entry in<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    // this Map.<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    if (replayEdistsSize == null) {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      replayEdistsSize = new ThreadSafeMemStoreSizing();<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      replayEditsPerRegion.put(regionName, replayEdistsSize);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    }<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    replayEdistsSize.incMemStoreSize(memStoreSize);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  /**<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   * Roll back the global MemStore size for a specified region when this region<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   * can't be opened.<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   *<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   * @param regionName the region which could not open.<a name="line.244"></a>
-<span class="sourceLineNo">245</span>   */<a name="line.245"></a>
-<span class="sourceLineNo">246</span>  public void rollbackRegionReplayEditsSize(byte[] regionName) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    MemStoreSizing replayEditsSizing = replayEditsPerRegion.get(regionName);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    if (replayEditsSizing != null) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      clearRegionReplayEditsSize(regionName);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      decGlobalMemStoreSize(replayEditsSizing.getDataSize(), replayEditsSizing.getHeapSize(),<a name="line.250"></a>
-<span class="sourceLineNo">251</span>          replayEditsSizing.getOffHeapSize());<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><a name="line.254"></a>
-<span class="sourceLineNo">255</span>  /**<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   * Clear a region from replayEditsPerRegion.<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   *<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   * @param regionName region name.<a name="line.258"></a>
-<span class="sourceLineNo">259</span>   */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public void clearRegionReplayEditsSize(byte[] regionName) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    replayEditsPerRegion.remove(regionName);<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">105</span>  /**<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   * @return the global Memstore data size in the RegionServer<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   */<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  public long getGlobalMemStoreDataSize() {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    return globalMemStoreDataSize.sum();<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>  /**<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   * @return the global memstore heap size in the RegionServer<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   */<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  public long getGlobalMemStoreHeapSize() {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    return this.globalMemStoreHeapSize.sum();<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  }<a name="line.117"></a>
+<span class="sourceLineNo">118</span><a name="line.118"></a>
+<span class="sourceLineNo">119</span>  /**<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   * @return the global memstore heap size in the RegionServer<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  public long getGlobalMemStoreOffHeapSize() {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    return this.globalMemStoreOffHeapSize.sum();<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  }<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>  void incGlobalMemStoreSize(MemStoreSize mss) {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    incGlobalMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  }<a name="line.128"></a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span>  public void incGlobalMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    globalMemStoreDataSize.add(dataSizeDelta);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    globalMemStoreHeapSize.add(heapSizeDelta);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    globalMemStoreOffHeapSize.add(offHeapSizeDelta);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  }<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  public void decGlobalMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    globalMemStoreDataSize.add(-dataSizeDelta);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    globalMemStoreHeapSize.add(-heapSizeDelta);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    globalMemStoreOffHeapSize.add(-offHeapSizeDelta);<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>   * Return true if we are above the memstore high water mark<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * @return the flushtype<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  public FlushType isAboveHighWaterMark() {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    // for onheap memstore we check if the global memstore size and the<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    // global heap overhead is greater than the global memstore limit<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    if (memType == MemoryType.HEAP) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      if (getGlobalMemStoreHeapSize() &gt;= globalMemStoreLimit) {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        return FlushType.ABOVE_ONHEAP_HIGHER_MARK;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      }<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    } else {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      // If the configured memstore is offheap, check for two things<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      // 1) If the global memstore off-heap size is greater than the configured<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      // 'hbase.regionserver.offheap.global.memstore.size'<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      // 2) If the global memstore heap size is greater than the configured onheap<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      // global memstore limit 'hbase.regionserver.global.memstore.size'.<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      // We do this to avoid OOME incase of scenarios where the heap is occupied with<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      // lot of onheap references to the cells in memstore<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      if (getGlobalMemStoreOffHeapSize() &gt;= globalMemStoreLimit) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>        // Indicates that global memstore size is above the configured<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        // 'hbase.regionserver.offheap.global.memstore.size'<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        return FlushType.ABOVE_OFFHEAP_HIGHER_MARK;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      } else if (getGlobalMemStoreHeapSize() &gt;= this.globalOnHeapMemstoreLimit) {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        // Indicates that the offheap memstore's heap overhead is greater than the<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        // configured 'hbase.regionserver.global.memstore.size'.<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        return FlushType.ABOVE_ONHEAP_HIGHER_MARK;<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>    return FlushType.NORMAL;<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>  /**<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   * Return true if we're above the low watermark<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   */<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  public FlushType isAboveLowWaterMark() {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    // for onheap memstore we check if the global memstore size and the<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    // global heap overhead is greater than the global memstore lower mark limit<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    if (memType == MemoryType.HEAP) {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      if (getGlobalMemStoreHeapSize() &gt;= globalMemStoreLimitLowMark) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        return FlushType.ABOVE_ONHEAP_LOWER_MARK;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      }<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    } else {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      if (getGlobalMemStoreOffHeapSize() &gt;= globalMemStoreLimitLowMark) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        // Indicates that the offheap memstore's size is greater than the global memstore<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        // lower limit<a name="line.187"></a>
+<span class="sourceLineNo">188</span>        return FlushType.ABOVE_OFFHEAP_LOWER_MARK;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      } else if (getGlobalMemStoreHeapSize() &gt;= globalOnHeapMemstoreLimitLowMark) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        // Indicates that the offheap memstore's heap overhead is greater than the global memstore<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        // onheap lower limit<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        return FlushType.ABOVE_ONHEAP_LOWER_MARK;<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>    return FlushType.NORMAL;<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>  /**<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * @return the flush pressure of all stores on this regionserver. The value should be greater than<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   *         or equal to 0.0, and any value greater than 1.0 means we enter the emergency state that<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   *         global memstore size already exceeds lower limit.<a name="line.201"></a>
+<span class="sourceLineNo">202</span>   */<a name="line.202"></a>
+<span class="sourceLineNo">203</span>  public double getFlushPressure() {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    if (memType == MemoryType.HEAP) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      return (getGlobalMemStoreHeapSize()) * 1.0 / globalMemStoreLimitLowMark;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    } else {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      return Math.max(getGlobalMemStoreOffHeapSize() * 1.0 / globalMemStoreLimitLowMark,<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          getGlobalMemStoreHeapSize() * 1.0 / globalOnHeapMemstoreLimitLowMark);<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>}<a name="line.211"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/SegmentFactory.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/SegmentFactory.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/SegmentFactory.html
index 253454f..65d8ba4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/SegmentFactory.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/SegmentFactory.html
@@ -68,98 +68,106 @@
 <span class="sourceLineNo">060</span>            conf,comparator,iterator,memStoreLAB,numOfCells,action,idxType);<a name="line.60"></a>
 <span class="sourceLineNo">061</span>  }<a name="line.61"></a>
 <span class="sourceLineNo">062</span><a name="line.62"></a>
-<span class="sourceLineNo">063</span>  // create empty immutable segment<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  // for initializations<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  public ImmutableSegment createImmutableSegment(CellComparator comparator) {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    MutableSegment segment = generateMutableSegment(null, comparator, null);<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    return createImmutableSegment(segment);<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  }<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>  // create not-flat immutable segment from mutable segment<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  public ImmutableSegment createImmutableSegment(MutableSegment segment) {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    return new CSLMImmutableSegment(segment);<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>  // create mutable segment<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  public MutableSegment createMutableSegment(final Configuration conf, CellComparator comparator) {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    MemStoreLAB memStoreLAB = MemStoreLAB.newInstance(conf);<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    return generateMutableSegment(conf, comparator, memStoreLAB);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  }<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>  // create new flat immutable segment from merging old immutable segments<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  // for merge<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  public ImmutableSegment createImmutableSegmentByMerge(final Configuration conf,<a name="line.83"></a>
-<span class="sourceLineNo">084</span>      final CellComparator comparator, MemStoreSegmentsIterator iterator, int numOfCells,<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      List&lt;ImmutableSegment&gt; segments, CompactingMemStore.IndexType idxType,<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      MemStoreCompactionStrategy.Action action)<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      throws IOException {<a name="line.87"></a>
+<span class="sourceLineNo">063</span>  /**<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   * create empty immutable segment for initializations<a name="line.64"></a>
+<span class="sourceLineNo">065</span>   * This ImmutableSegment is used as a place holder for snapshot in Memstore.<a name="line.65"></a>
+<span class="sourceLineNo">066</span>   * It won't flush later, So it is not necessary to record the initial size<a name="line.66"></a>
+<span class="sourceLineNo">067</span>   * for it.<a name="line.67"></a>
+<span class="sourceLineNo">068</span>   * @param comparator comparator<a name="line.68"></a>
+<span class="sourceLineNo">069</span>   * @return ImmutableSegment<a name="line.69"></a>
+<span class="sourceLineNo">070</span>   */<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  public ImmutableSegment createImmutableSegment(CellComparator comparator) {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    MutableSegment segment = generateMutableSegment(null, comparator, null, null);<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    return createImmutableSegment(segment, null);<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  }<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>  // create not-flat immutable segment from mutable segment<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  public ImmutableSegment createImmutableSegment(MutableSegment segment,<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      MemStoreSizing memstoreSizing) {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    return new CSLMImmutableSegment(segment, memstoreSizing);<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  }<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  // create mutable segment<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  public MutableSegment createMutableSegment(final Configuration conf,<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      CellComparator comparator, MemStoreSizing memstoreSizing) {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    MemStoreLAB memStoreLAB = MemStoreLAB.newInstance(conf);<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    return generateMutableSegment(conf, comparator, memStoreLAB, memstoreSizing);<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  }<a name="line.87"></a>
 <span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>    MemStoreLAB memStoreLAB = getMergedMemStoreLAB(conf, segments);<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    return<a name="line.90"></a>
-<span class="sourceLineNo">091</span>        createImmutableSegment(<a name="line.91"></a>
-<span class="sourceLineNo">092</span>            conf,comparator,iterator,memStoreLAB,numOfCells,action,idxType);<a name="line.92"></a>
-<span class="sourceLineNo">093</span><a name="line.93"></a>
-<span class="sourceLineNo">094</span>  }<a name="line.94"></a>
-<span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>  // create flat immutable segment from non-flat immutable segment<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  // for flattening<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  public ImmutableSegment createImmutableSegmentByFlattening(<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      CSLMImmutableSegment segment, CompactingMemStore.IndexType idxType,<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      MemStoreSizing memstoreSizing, MemStoreCompactionStrategy.Action action) {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    ImmutableSegment res = null;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    switch (idxType) {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      case CHUNK_MAP:<a name="line.103"></a>
-<span class="sourceLineNo">104</span>        res = new CellChunkImmutableSegment(segment, memstoreSizing, action);<a name="line.104"></a>
-<span class="sourceLineNo">105</span>        break;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      case CSLM_MAP:<a name="line.106"></a>
-<span class="sourceLineNo">107</span>        assert false; // non-flat segment can not be the result of flattening<a name="line.107"></a>
-<span class="sourceLineNo">108</span>        break;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      case ARRAY_MAP:<a name="line.109"></a>
-<span class="sourceLineNo">110</span>        res = new CellArrayImmutableSegment(segment, memstoreSizing, action);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>        break;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    return res;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  }<a name="line.114"></a>
-<span class="sourceLineNo">115</span><a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  //****** private methods to instantiate concrete store segments **********//<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  private ImmutableSegment createImmutableSegment(final Configuration conf, final CellComparator comparator,<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      MemStoreSegmentsIterator iterator, MemStoreLAB memStoreLAB, int numOfCells,<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      MemStoreCompactionStrategy.Action action, CompactingMemStore.IndexType idxType) {<a name="line.120"></a>
-<span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>    ImmutableSegment res = null;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    switch (idxType) {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    case CHUNK_MAP:<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      res = new CellChunkImmutableSegment(comparator, iterator, memStoreLAB, numOfCells, action);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      break;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    case CSLM_MAP:<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      assert false; // non-flat segment can not be created here<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      break;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    case ARRAY_MAP:<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      res = new CellArrayImmutableSegment(comparator, iterator, memStoreLAB, numOfCells, action);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      break;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    return res;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  }<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private MutableSegment generateMutableSegment(final Configuration conf, CellComparator comparator,<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      MemStoreLAB memStoreLAB) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    // TBD use configuration to set type of segment<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    CellSet set = new CellSet(comparator);<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    return new MutableSegment(set, comparator, memStoreLAB);<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>  private MemStoreLAB getMergedMemStoreLAB(Configuration conf, List&lt;ImmutableSegment&gt; segments) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    List&lt;MemStoreLAB&gt; mslabs = new ArrayList&lt;&gt;();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    if (!conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      return null;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    }<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    for (ImmutableSegment segment : segments) {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      mslabs.add(segment.getMemStoreLAB());<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    }<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    return new ImmutableMemStoreLAB(mslabs);<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">089</span>  // create new flat immutable segment from merging old immutable segments<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  // for merge<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public ImmutableSegment createImmutableSegmentByMerge(final Configuration conf,<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      final CellComparator comparator, MemStoreSegmentsIterator iterator, int numOfCells,<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      List&lt;ImmutableSegment&gt; segments, CompactingMemStore.IndexType idxType,<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      MemStoreCompactionStrategy.Action action)<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      throws IOException {<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>    MemStoreLAB memStoreLAB = getMergedMemStoreLAB(conf, segments);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    return<a name="line.98"></a>
+<span class="sourceLineNo">099</span>        createImmutableSegment(<a name="line.99"></a>
+<span class="sourceLineNo">100</span>            conf,comparator,iterator,memStoreLAB,numOfCells,action,idxType);<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><a name="line.103"></a>
+<span class="sourceLineNo">104</span>  // create flat immutable segment from non-flat immutable segment<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  // for flattening<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  public ImmutableSegment createImmutableSegmentByFlattening(<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      CSLMImmutableSegment segment, CompactingMemStore.IndexType idxType,<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      MemStoreSizing memstoreSizing, MemStoreCompactionStrategy.Action action) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    ImmutableSegment res = null;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    switch (idxType) {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      case CHUNK_MAP:<a name="line.111"></a>
+<span class="sourceLineNo">112</span>        res = new CellChunkImmutableSegment(segment, memstoreSizing, action);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>        break;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      case CSLM_MAP:<a name="line.114"></a>
+<span class="sourceLineNo">115</span>        assert false; // non-flat segment can not be the result of flattening<a name="line.115"></a>
+<span class="sourceLineNo">116</span>        break;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      case ARRAY_MAP:<a name="line.117"></a>
+<span class="sourceLineNo">118</span>        res = new CellArrayImmutableSegment(segment, memstoreSizing, action);<a name="line.118"></a>
+<span class="sourceLineNo">119</span>        break;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    }<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    return res;<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>  //****** private methods to instantiate concrete store segments **********//<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  private ImmutableSegment createImmutableSegment(final Configuration conf, final CellComparator comparator,<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      MemStoreSegmentsIterator iterator, MemStoreLAB memStoreLAB, int numOfCells,<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      MemStoreCompactionStrategy.Action action, CompactingMemStore.IndexType idxType) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span>    ImmutableSegment res = null;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    switch (idxType) {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    case CHUNK_MAP:<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      res = new CellChunkImmutableSegment(comparator, iterator, memStoreLAB, numOfCells, action);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      break;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    case CSLM_MAP:<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      assert false; // non-flat segment can not be created here<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      break;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    case ARRAY_MAP:<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      res = new CellArrayImmutableSegment(comparator, iterator, memStoreLAB, numOfCells, action);<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      break;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    }<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    return res;<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 MutableSegment generateMutableSegment(final Configuration conf, CellComparator comparator,<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      MemStoreLAB memStoreLAB, MemStoreSizing memstoreSizing) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    // TBD use configuration to set type of segment<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    CellSet set = new CellSet(comparator);<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    return new MutableSegment(set, comparator, memStoreLAB, memstoreSizing);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  private MemStoreLAB getMergedMemStoreLAB(Configuration conf, List&lt;ImmutableSegment&gt; segments) {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    List&lt;MemStoreLAB&gt; mslabs = new ArrayList&lt;&gt;();<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    if (!conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      return null;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    }<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    for (ImmutableSegment segment : segments) {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      mslabs.add(segment.getMemStoreLAB());<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    return new ImmutableMemStoreLAB(mslabs);<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>
 
 
 


[38/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreSize.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreSize.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreSize.html
index 4012248..e3d2db2 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreSize.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreSize.html
@@ -134,6 +134,12 @@
                                    long&nbsp;currentSeqId)</code>&nbsp;</td>
 </tr>
 <tr 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"><span class="typeNameLabel">HRegion.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#dropMemStoreContents--">dropMemStoreContents</a></span>()</code>
+<div class="block">Be careful, this method will drop all data in the memstore of this region.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a></code></td>
 <td class="colLast"><span class="typeNameLabel">HRegion.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#dropMemStoreContentsForSeqId-long-org.apache.hadoop.hbase.regionserver.HStore-">dropMemStoreContentsForSeqId</a></span>(long&nbsp;seqId,
                             <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store)</code>
@@ -141,105 +147,105 @@
  if the memstore edits have seqNums smaller than the given seq id</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr 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"><span class="typeNameLabel">HStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlushableSize--">getFlushableSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr 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"><span class="typeNameLabel">MemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html#getFlushableSize--">getFlushableSize</a></span>()</code>
 <div class="block">Flush will first clear out the data in snapshot if any (It will take a second flush
  invocation to clear the current Cell set).</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr 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"><span class="typeNameLabel">CompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#getFlushableSize--">getFlushableSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr 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"><span class="typeNameLabel">Store.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getFlushableSize--">getFlushableSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr 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"><span class="typeNameLabel">DefaultMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#getFlushableSize--">getFlushableSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr 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"><span class="typeNameLabel">HStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMemStoreSize--">getMemStoreSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr 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"><span class="typeNameLabel">NonThreadSafeMemStoreSizing.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html#getMemStoreSize--">getMemStoreSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr 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"><span class="typeNameLabel">Segment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreSize--">getMemStoreSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr 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"><span class="typeNameLabel">ThreadSafeMemStoreSizing.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html#getMemStoreSize--">getMemStoreSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr 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"><span class="typeNameLabel">MemStoreSizing.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#getMemStoreSize--">getMemStoreSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr 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"><span class="typeNameLabel">Store.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getMemStoreSize--">getMemStoreSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr 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"><span class="typeNameLabel">MemStoreSnapshot.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html#getMemStoreSize--">getMemStoreSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr 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"><span class="typeNameLabel">CompactionPipeline.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#getPipelineSize--">getPipelineSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr 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"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#getSnapshotSize--">getSnapshotSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr 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"><span class="typeNameLabel">HStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSnapshotSize--">getSnapshotSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr 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"><span class="typeNameLabel">MemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html#getSnapshotSize--">getSnapshotSize</a></span>()</code>
 <div class="block">Return the size of the snapshot(s) if any</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr 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"><span class="typeNameLabel">Store.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getSnapshotSize--">getSnapshotSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr 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"><span class="typeNameLabel">CompactionPipeline.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#getTailSize--">getTailSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr 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"><span class="typeNameLabel">StoreFlushContext.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#prepare--">prepare</a></span>()</code>
 <div class="block">Prepare for a store flush (create snapshot)
  Requires pausing writes.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr 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"><span class="typeNameLabel">HStore.StoreFlusherImpl.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#prepare--">prepare</a></span>()</code>
 <div class="block">This is not thread safe.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr 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"><span class="typeNameLabel">MemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html#size--">size</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr 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"><span class="typeNameLabel">CompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#size--">size</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr 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"><span class="typeNameLabel">DefaultMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#size--">size</a></span>()</code>&nbsp;</td>
 </tr>
@@ -253,36 +259,29 @@
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerAccounting.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#addRegionReplayEditsSize-byte:A-org.apache.hadoop.hbase.regionserver.MemStoreSize-">addRegionReplayEditsSize</a></span>(byte[]&nbsp;regionName,
-                        <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;memStoreSize)</code>
-<div class="block">Add memStoreSize to replayEditsPerRegion.</div>
-</td>
-</tr>
-<tr class="rowColor">
 <td class="colFirst"><code>default long</code></td>
 <td class="colLast"><span class="typeNameLabel">MemStoreSizing.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#decMemStoreSize-org.apache.hadoop.hbase.regionserver.MemStoreSize-">decMemStoreSize</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;delta)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><span class="typeNameLabel">HRegion.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#decrMemStoreSize-org.apache.hadoop.hbase.regionserver.MemStoreSize-">decrMemStoreSize</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;mss)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionServerAccounting.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#incGlobalMemStoreSize-org.apache.hadoop.hbase.regionserver.MemStoreSize-">incGlobalMemStoreSize</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;mss)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><span class="typeNameLabel">HRegion.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#incMemStoreSize-org.apache.hadoop.hbase.regionserver.MemStoreSize-">incMemStoreSize</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;mss)</code>
 <div class="block">Increase the size of mem store in this region and the size of global mem
  store</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default long</code></td>
 <td class="colLast"><span class="typeNameLabel">MemStoreSizing.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#incMemStoreSize-org.apache.hadoop.hbase.regionserver.MemStoreSize-">incMemStoreSize</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;delta)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">HRegion.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#isFlushSize-org.apache.hadoop.hbase.regionserver.MemStoreSize-">isFlushSize</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;size)</code>&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreSizing.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreSizing.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreSizing.html
index d6eaaf7..1029e86 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreSizing.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreSizing.html
@@ -189,19 +189,6 @@
 </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/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</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/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;byte[],<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&gt;</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerAccounting.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html#replayEditsPerRegion">replayEditsPerRegion</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/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
@@ -291,11 +278,22 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a></code></td>
+<td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createImmutableSegment-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">createImmutableSegment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;segment,
+                      <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a></code></td>
 <td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createImmutableSegmentByFlattening-org.apache.hadoop.hbase.regionserver.CSLMImmutableSegment-org.apache.hadoop.hbase.regionserver.CompactingMemStore.IndexType-org.apache.hadoop.hbase.regionserver.MemStoreSizing-org.apache.hadoop.hbase.regionserver.MemStoreCompactionStrategy.Action-">createImmutableSegmentByFlattening</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">CSLMImmutableSegment</a>&nbsp;segment,
                                   <a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a>&nbsp;idxType,
                                   <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
                                   <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)</code>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a></code></td>
+<td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">createMutableSegment</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                    <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
+                    <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+</tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#doAdd-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">doAdd</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
@@ -317,27 +315,34 @@
         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a></code></td>
+<td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#generateMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">generateMutableSegment</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                      <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
+                      <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB,
+                      <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">CompositeImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">internalAdd</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
            boolean&nbsp;mslabUsed,
            <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
            boolean&nbsp;sizeAddedPreOperation)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">Segment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">internalAdd</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
            boolean&nbsp;mslabUsed,
            <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
            boolean&nbsp;sizeAddedPreOperation)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#internalAdd-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
            <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;toAdd,
            boolean&nbsp;mslabUsed,
            <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected abstract boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#preUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">preUpdate</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
          <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
@@ -345,7 +350,7 @@
 <div class="block">Issue any synchronization and test needed before applying the update</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">CompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#preUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">preUpdate</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
          <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
@@ -355,13 +360,13 @@
  overflow</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">DefaultMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#preUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">preUpdate</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
          <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
          <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">CellChunkImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#reinitializeCellSet-int-org.apache.hadoop.hbase.regionserver.KeyValueScanner-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.MemStoreSizing-org.apache.hadoop.hbase.regionserver.MemStoreCompactionStrategy.Action-">reinitializeCellSet</a></span>(int&nbsp;numOfCells,
                    <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&nbsp;segmentScanner,
@@ -369,7 +374,7 @@
                    <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
                    <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">HRegion.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#restoreEdit-org.apache.hadoop.hbase.regionserver.HStore-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">restoreEdit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;s,
            <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
@@ -377,13 +382,13 @@
 <div class="block">Used by tests</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">CompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#shouldFlushInMemory-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">shouldFlushInMemory</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive,
                    <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
                    <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">CompositeImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">updateMetaInfo</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
               boolean&nbsp;succ,
@@ -391,7 +396,7 @@
               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
               boolean&nbsp;sizeAddedPreOperation)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">Segment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">updateMetaInfo</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
               boolean&nbsp;succ,
@@ -399,32 +404,32 @@
               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
               boolean&nbsp;sizeAddedPreOperation)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">Segment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
               boolean&nbsp;succ,
               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#upsert-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">upsert</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
       long&nbsp;readpoint,
       <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#upsert-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">upsert</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
       long&nbsp;readpoint,
       <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memStoreSizing,
       boolean&nbsp;sizeAddedPreOperation)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.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,
       <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">HStore.</span><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,
@@ -432,7 +437,7 @@
 <div class="block">Adds or replaces the specified KeyValues.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStore.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,
@@ -469,6 +474,19 @@
 </td>
 </tr>
 <tr class="altColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html#CSLMImmutableSegment-org.apache.hadoop.hbase.regionserver.Segment-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">CSLMImmutableSegment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&nbsp;segment,
+                    <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>
+<div class="block">------------------------------------------------------------------------
+ Copy C-tor to be used when new CSLMImmutableSegment is being built from a Mutable one.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#MutableSegment-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">MutableSegment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;cellSet,
+              <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
+              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB,
+              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html#PrepareFlushResult-org.apache.hadoop.hbase.regionserver.HRegion.FlushResultImpl-java.util.TreeMap-java.util.TreeMap-java.util.TreeMap-long-long-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">PrepareFlushResult</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.FlushResultImpl</a>&nbsp;result,
                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html?is-external=true" title="class or interface in java.util">TreeMap</a>&lt;byte[],<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFlushContext</a>&gt;&nbsp;storeFlushCtxs,
                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html?is-external=true" title="class or interface in java.util">TreeMap</a>&lt;byte[],<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;&gt;&nbsp;committedFiles,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MutableSegment.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MutableSegment.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MutableSegment.html
index 63c5807..943041d 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MutableSegment.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MutableSegment.html
@@ -117,14 +117,16 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a></code></td>
-<td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-">createMutableSegment</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
-                    <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">createMutableSegment</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                    <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
+                    <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a></code></td>
-<td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#generateMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-">generateMutableSegment</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#generateMutableSegment-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.MemStoreLAB-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">generateMutableSegment</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                       <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
-                      <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB)</code>&nbsp;</td>
+                      <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB,
+                      <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a></code></td>
@@ -149,7 +151,8 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a></code></td>
-<td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createImmutableSegment-org.apache.hadoop.hbase.regionserver.MutableSegment-">createImmutableSegment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;segment)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createImmutableSegment-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">createImmutableSegment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;segment,
+                      <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private void</code></td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/RegionServicesForStores.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/RegionServicesForStores.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/RegionServicesForStores.html
index 3835271..6f21bdf 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/RegionServicesForStores.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/RegionServicesForStores.html
@@ -107,8 +107,8 @@
 <td class="colLast"><span class="typeNameLabel">CompactionPipeline.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#region">region</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a></code></td>
-<td class="colLast"><span class="typeNameLabel">CompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#regionServices">regionServices</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a></code></td>
+<td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#regionServices">regionServices</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a></code></td>
@@ -140,15 +140,27 @@
 </tr>
 <tbody>
 <tr class="altColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#AbstractMemStore-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.RegionServicesForStores-">AbstractMemStore</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;c,
+                <a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a>&nbsp;regionServices)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#CompactingMemStore-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.HStore-org.apache.hadoop.hbase.regionserver.RegionServicesForStores-org.apache.hadoop.hbase.MemoryCompactionPolicy-">CompactingMemStore</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                   <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;c,
                   <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
                   <a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a>&nbsp;regionServices,
                   <a href="../../../../../../org/apache/hadoop/hbase/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase">MemoryCompactionPolicy</a>&nbsp;compactionPolicy)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#CompactionPipeline-org.apache.hadoop.hbase.regionserver.RegionServicesForStores-">CompactionPipeline</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a>&nbsp;region)</code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#DefaultMemStore-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.RegionServicesForStores-">DefaultMemStore</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+               <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;c,
+               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a>&nbsp;regionServices)</code>
+<div class="block">Constructor.</div>
+</td>
+</tr>
 </tbody>
 </table>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/Segment.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/Segment.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/Segment.html
index d043c75..5693d8b 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/Segment.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/Segment.html
@@ -289,7 +289,8 @@
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html#CSLMImmutableSegment-org.apache.hadoop.hbase.regionserver.Segment-">CSLMImmutableSegment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&nbsp;segment)</code>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html#CSLMImmutableSegment-org.apache.hadoop.hbase.regionserver.Segment-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">CSLMImmutableSegment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&nbsp;segment,
+                    <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>
 <div class="block">------------------------------------------------------------------------
  Copy C-tor to be used when new CSLMImmutableSegment is being built from a Mutable one.</div>
 </td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html b/devapidocs/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html
index 7dfeab0..8d51bd3 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.227">OpenRegionHandler.PostOpenDeployTasksThread</a>
+<pre>static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.226">OpenRegionHandler.PostOpenDeployTasksThread</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 to run region post open tasks. Call <a href="../../../../../../org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html#getException--"><code>getException()</code></a> after the thread finishes
  to check for exceptions running <code>RegionServerServices#postOpenDeployTasks(Region)</code>.</div>
@@ -269,7 +269,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>exception</h4>
-<pre>private&nbsp;<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/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html#line.228">exception</a></pre>
+<pre>private&nbsp;<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/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html#line.227">exception</a></pre>
 </li>
 </ul>
 <a name="server">
@@ -278,7 +278,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>server</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html#line.229">server</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html#line.228">server</a></pre>
 </li>
 </ul>
 <a name="services">
@@ -287,7 +287,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>services</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionServerServices</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html#line.230">services</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionServerServices</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html#line.229">services</a></pre>
 </li>
 </ul>
 <a name="region">
@@ -296,7 +296,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>region</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html#line.231">region</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html#line.230">region</a></pre>
 </li>
 </ul>
 <a name="signaller">
@@ -305,7 +305,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>signaller</h4>
-<pre>private final&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/handler/OpenRegionHandler.PostOpenDeployTasksThread.html#line.232">signaller</a></pre>
+<pre>private final&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/handler/OpenRegionHandler.PostOpenDeployTasksThread.html#line.231">signaller</a></pre>
 </li>
 </ul>
 <a name="masterSystemTime">
@@ -314,7 +314,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>masterSystemTime</h4>
-<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html#line.233">masterSystemTime</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html#line.232">masterSystemTime</a></pre>
 </li>
 </ul>
 </li>
@@ -331,7 +331,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>PostOpenDeployTasksThread</h4>
-<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html#line.235">PostOpenDeployTasksThread</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
+<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html#line.234">PostOpenDeployTasksThread</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
                           <a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a>&nbsp;server,
                           <a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionServerServices</a>&nbsp;services,
                           <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>&nbsp;signaller,
@@ -352,7 +352,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/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html#line.247">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html#line.246">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>
@@ -367,7 +367,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getException</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>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html#line.271">getException</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>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html#line.270">getException</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Null or the run exception; call this method after thread is done.</dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html b/devapidocs/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html
index 38a701c..2985137 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html
@@ -123,7 +123,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.47">OpenRegionHandler</a>
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.46">OpenRegionHandler</a>
 extends <a href="../../../../../../org/apache/hadoop/hbase/executor/EventHandler.html" title="class in org.apache.hadoop.hbase.executor">EventHandler</a></pre>
 <div class="block">Handles opening of a region on a region server.
  <p>
@@ -315,7 +315,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/executor/EventHandler
 <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/handler/OpenRegionHandler.html#line.48">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.47">LOG</a></pre>
 </li>
 </ul>
 <a name="rsServices">
@@ -324,7 +324,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/executor/EventHandler
 <ul class="blockList">
 <li class="blockList">
 <h4>rsServices</h4>
-<pre>protected final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionServerServices</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.50">rsServices</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionServerServices</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.49">rsServices</a></pre>
 </li>
 </ul>
 <a name="regionInfo">
@@ -333,7 +333,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/executor/EventHandler
 <ul class="blockList">
 <li class="blockList">
 <h4>regionInfo</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.52">regionInfo</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.51">regionInfo</a></pre>
 </li>
 </ul>
 <a name="htd">
@@ -342,7 +342,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/executor/EventHandler
 <ul class="blockList">
 <li class="blockList">
 <h4>htd</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.53">htd</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.52">htd</a></pre>
 </li>
 </ul>
 <a name="masterSystemTime">
@@ -351,7 +351,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/executor/EventHandler
 <ul class="blockListLast">
 <li class="blockList">
 <h4>masterSystemTime</h4>
-<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.54">masterSystemTime</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.53">masterSystemTime</a></pre>
 </li>
 </ul>
 </li>
@@ -368,7 +368,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/executor/EventHandler
 <ul class="blockList">
 <li class="blockList">
 <h4>OpenRegionHandler</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.56">OpenRegionHandler</a>(<a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a>&nbsp;server,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.55">OpenRegionHandler</a>(<a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a>&nbsp;server,
                          <a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionServerServices</a>&nbsp;rsServices,
                          <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/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;htd,
@@ -381,7 +381,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/executor/EventHandler
 <ul class="blockListLast">
 <li class="blockList">
 <h4>OpenRegionHandler</h4>
-<pre>protected&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.62">OpenRegionHandler</a>(<a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a>&nbsp;server,
+<pre>protected&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.61">OpenRegionHandler</a>(<a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a>&nbsp;server,
                             <a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionServerServices</a>&nbsp;rsServices,
                             <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/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;htd,
@@ -403,7 +403,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/executor/EventHandler
 <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/regionserver/handler/OpenRegionHandler.html#line.72">getRegionInfo</a>()</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/regionserver/handler/OpenRegionHandler.html#line.71">getRegionInfo</a>()</pre>
 </li>
 </ul>
 <a name="process--">
@@ -412,7 +412,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/executor/EventHandler
 <ul class="blockList">
 <li class="blockList">
 <h4>process</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.77">process</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.76">process</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 class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/executor/EventHandler.html#process--">EventHandler</a></code></span></div>
 <div class="block">This method is the main processing loop to be implemented by the various
@@ -431,7 +431,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/executor/EventHandler
 <ul class="blockList">
 <li class="blockList">
 <h4>doCleanUpOnFailedOpen</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.157">doCleanUpOnFailedOpen</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.156">doCleanUpOnFailedOpen</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&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></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -445,7 +445,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/executor/EventHandler
 <ul class="blockList">
 <li class="blockList">
 <h4>updateMeta</h4>
-<pre>boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.176">updateMeta</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;r,
+<pre>boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.175">updateMeta</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;r,
                    long&nbsp;masterSystemTime)</pre>
 <div class="block">Update ZK or META.  This can take a while if for example the
  hbase:meta is not available -- if server hosting hbase:meta crashed and we are
@@ -460,7 +460,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/executor/EventHandler
 <ul class="blockList">
 <li class="blockList">
 <h4>openRegion</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.279">openRegion</a>()</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.278">openRegion</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Instance of HRegion if successful open else null.</dd>
@@ -473,7 +473,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/executor/EventHandler
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanupFailedOpen</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.317">cleanupFailedOpen</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region)
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.307">cleanupFailedOpen</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&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></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -487,7 +487,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/executor/EventHandler
 <ul class="blockList">
 <li class="blockList">
 <h4>isRegionStillOpening</h4>
-<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.324">isRegionStillOpening</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
+<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.314">isRegionStillOpening</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/regionserver/RegionServerServices.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionServerServices</a>&nbsp;rsServices)</pre>
 </li>
 </ul>
@@ -497,7 +497,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/executor/EventHandler
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isRegionStillOpening</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.331">isRegionStillOpening</a>()</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.html#line.321">isRegionStillOpening</a>()</pre>
 </li>
 </ul>
 </li>


[07/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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 522d316..2dd2c14 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
@@ -2380,54 +2380,58 @@
 <td class="colLast"><span class="typeNameLabel">TestServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.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">TestCreateTableProcedureMuitipleRegions.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html#UTIL">UTIL</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <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">TestTableDDLProcedureBase.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestTableDDLProcedureBase.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<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">MasterProcedureSchedulerPerformanceEvaluation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureSchedulerPerformanceEvaluation.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <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">TestCreateNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateNamespaceProcedure.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<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">TestModifyNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestModifyNamespaceProcedure.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">TestProcedurePriority.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestProcedurePriority.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<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">TestMasterProcedureEvents.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterProcedureEvents.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <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">TestDeleteNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestDeleteNamespaceProcedure.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<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">TestMasterObserverPostCalls.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterObserverPostCalls.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <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">TestWALProcedureStoreOnHDFS.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestWALProcedureStoreOnHDFS.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<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">TestSafemodeBringsDownMaster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestSafemodeBringsDownMaster.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <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">TestMasterFailoverWithProcedures.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterFailoverWithProcedures.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<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">TestMasterProcedureWalLease.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestMasterProcedureWalLease.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <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">TestProcedureAdmin.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TestProcedureAdmin.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
@@ -2836,274 +2840,278 @@
 <td class="colLast"><span class="typeNameLabel">TestNewVersionBehaviorFromClientSide.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestNewVersionBehaviorFromClientSide.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<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">TestRecoveredEditsReplayAndAbort.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#TEST_UTIL">TEST_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">TestCompactSplitThread.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactSplitThread.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package 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">TestRegionMergeTransactionOnCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<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">TestCompactionPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionPolicy.html#TEST_UTIL">TEST_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">TestWalAndCompactingMemStoreFlush.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWalAndCompactingMemStoreFlush.html#TEST_UTIL">TEST_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">TestWALMonotonicallyIncreasingSeqId.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALMonotonicallyIncreasingSeqId.html#TEST_UTIL">TEST_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">TestDeleteMobTable.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDeleteMobTable.html#TEST_UTIL">TEST_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">TestBlocksScanned.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestBlocksScanned.html#TEST_UTIL">TEST_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">TestCompoundBloomFilter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompoundBloomFilter.html#TEST_UTIL">TEST_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">TestMultiColumnScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <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">TestHRegion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#TEST_UTIL">TEST_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">TestScannerWithBulkload.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithBulkload.html#TEST_UTIL">TEST_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">TestHMobStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHMobStore.html#TEST_UTIL">TEST_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">TestStoreFileScannerWithTagCompression.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileScannerWithTagCompression.html#TEST_UTIL">TEST_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">TestScannerWithCorruptHFile.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithCorruptHFile.html#TEST_UTIL">TEST_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">TestEndToEndSplitTransaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.html#TEST_UTIL">TEST_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">TestScannerHeartbeatMessages.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.html#TEST_UTIL">TEST_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">TestIsDeleteFailure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestIsDeleteFailure.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <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">TestStoreFileRefresherChore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.html#TEST_UTIL">TEST_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">TestRegionMove.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMove.html#TEST_UTIL">TEST_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">TestRegionServerMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html#TEST_UTIL">TEST_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">TestCacheOnWriteInSchema.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.html#TEST_UTIL">TEST_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">TestSettingTimeoutOnBlockingPoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSettingTimeoutOnBlockingPoint.html#TEST_UTIL">TEST_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">TestHRegionReplayEvents.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#TEST_UTIL">TEST_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">TestRemoveRegionMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html#TEST_UTIL">TEST_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">TestRecoveredEdits.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html#TEST_UTIL">TEST_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">TestHRegionOnCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionOnCluster.html#TEST_UTIL">TEST_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">TestHStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHStore.html#TEST_UTIL">TEST_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">TestSplitLogWorker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitLogWorker.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <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">TestRegionServerHostname.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerHostname.html#TEST_UTIL">TEST_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">TestEncryptionRandomKeying.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEncryptionRandomKeying.html#TEST_UTIL">TEST_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">TestPerColumnFamilyFlush.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.html#TEST_UTIL">TEST_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">TestSeekOptimizations.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) <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">TestReversibleScanners.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html#TEST_UTIL">TEST_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">TestMasterAddressTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMasterAddressTracker.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <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">TestAtomicOperation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#TEST_UTIL">TEST_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">TestHdfsSnapshotHRegion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHdfsSnapshotHRegion.html#TEST_UTIL">TEST_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">TestRegionServerReadRequestMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.html#TEST_UTIL">TEST_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">TestTimestampFilterSeekHint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTimestampFilterSeekHint.html#TEST_UTIL">TEST_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">TestScanWithBloomError.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <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">TestClusterId.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClusterId.html#TEST_UTIL">TEST_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">TestStripeStoreFileManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreFileManager.html#TEST_UTIL">TEST_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">TestEncryptionKeyRotation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEncryptionKeyRotation.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package 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">TestMutateRowsRecovery.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMutateRowsRecovery.html#TESTING_UTIL">TESTING_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package 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">TestSplitTransactionOnCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.html#TESTING_UTIL">TESTING_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <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">EncodedSeekPerformanceTest.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/EncodedSeekPerformanceTest.html#testingUtility">testingUtility</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><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">TestCompactionArchiveConcurrentClose.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionArchiveConcurrentClose.html#testUtil">testUtil</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <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">TestRegionServerAbort.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.html#testUtil">testUtil</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <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">TestSplitWalDataLoss.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitWalDataLoss.html#testUtil">testUtil</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <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">TestRegionServerReportForDuty.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.html#testUtil">testUtil</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><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">TestCompactionArchiveIOException.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionArchiveIOException.html#testUtil">testUtil</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">TestCompactionFileNotFound.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionFileNotFound.html#util">util</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) <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">TestFSErrorsExposed.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestFSErrorsExposed.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">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">
+<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>
 </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">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">
+<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>
 </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">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">
+<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>
 </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">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">
+<tr class="altColor">
 <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="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">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="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">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="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">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="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">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="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">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="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">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="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">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="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">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/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyHRegion.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyHRegion.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyHRegion.html
index 679c02c..b6d5d53 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyHRegion.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyHRegion.html
@@ -212,7 +212,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegion</h3>
-<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkReadOnly, checkReadsEnabled, checkSplit, checkTimestamps, close, close, closeRegionOperation, closeRegionOperation, compact, compact, compact, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, delete, deregisterChildren, doRegionCompactionPrep, equals, execService, flush, flushcache, get, get, get, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliestFlushTimeForAllStores, getEffectiveDurability, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLockedRows, getMaxFlushedSeq
 Id, getMaxStoreSeqId, getMemStoreDataSize, getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNextSequenceId, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenSeqNum, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLoadingCfsOnDemandDefaul
 t, isMergeable, isReadOnly, isSplittable, mutateRow, mutateRowsWithLocks, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, refreshStoreFiles, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, reportCompactionRequestEnd, reportCompactionRequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rowIsInRange, rowIsInRange, setClosing, setCoprocessorHost, setReadsEnabled, setTimeoutForWriteLock, startRegionOperation, startRegionOperation, toString, unblockUpdates, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion, writeRegionOpenMarker</code></li>
+<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkReadOnly, checkReadsEnabled, checkSplit, checkTimestamps, close, close, closeRegionOperation, closeRegionOperation, compact, compact, compact, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, delete, deregisterChildren, doRegionCompactionPrep, dropMemStoreContents, equals, execService, flush, flushcache, get, get, get, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliestFlushTimeForAllStores, getEffectiveDurability, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLocked
 Rows, getMaxFlushedSeqId, getMaxStoreSeqId, getMemStoreDataSize, getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNextSequenceId, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenSeqNum, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLo
 adingCfsOnDemandDefault, isMergeable, isReadOnly, isSplittable, mutateRow, mutateRowsWithLocks, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, refreshStoreFiles, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, reportCompactionRequestEnd, reportCompactionRequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rowIsInRange, rowIsInRange, setClosing, setCoprocessorHost, setReadsEnabled, setTimeoutForWriteLock, startRegionOperation, startRegionOperation, toString, unblockUpdates, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion, writeRegionOpenMarker</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/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestRegionObserverScannerOpenHook.CompactionCompletionNotifyingRegion.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestRegionObserverScannerOpenHook.CompactionCompletionNotifyingRegion.html b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestRegionObserverScannerOpenHook.CompactionCompletionNotifyingRegion.html
index 038c3b6..a6cc17a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestRegionObserverScannerOpenHook.CompactionCompletionNotifyingRegion.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestRegionObserverScannerOpenHook.CompactionCompletionNotifyingRegion.html
@@ -236,7 +236,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegion</h3>
-<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkReadOnly, checkReadsEnabled, checkSplit, checkTimestamps, close, close, closeRegionOperation, closeRegionOperation, compact, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, delete, deregisterChildren, doRegionCompactionPrep, equals, execService, flush, flushcache, get, get, get, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliestFlushTimeForAllStores, getEffectiveDurability, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLockedRows, getMaxFlushedSeqId, getMaxStoreSeq
 Id, getMemStoreDataSize, getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNextSequenceId, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenSeqNum, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateHStore, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLoadingCfsOnDemandDefau
 lt, isMergeable, isReadOnly, isSplittable, mutateRow, mutateRowsWithLocks, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, refreshStoreFiles, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, reportCompactionRequestEnd, reportCompactionRequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rowIsInRange, rowIsInRange, setClosing, setCoprocessorHost, setReadsEnabled, setTimeoutForWriteLock, startRegionOperation, startRegionOperation, toString, unblockUpdates, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion, writeRegionOpenMarker</code></li>
+<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkReadOnly, checkReadsEnabled, checkSplit, checkTimestamps, close, close, closeRegionOperation, closeRegionOperation, compact, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, delete, deregisterChildren, doRegionCompactionPrep, dropMemStoreContents, equals, execService, flush, flushcache, get, get, get, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliestFlushTimeForAllStores, getEffectiveDurability, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLockedRows, getMaxFlushe
 dSeqId, getMaxStoreSeqId, getMemStoreDataSize, getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNextSequenceId, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenSeqNum, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateHStore, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isL
 oadingCfsOnDemandDefault, isMergeable, isReadOnly, isSplittable, mutateRow, mutateRowsWithLocks, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, refreshStoreFiles, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, reportCompactionRequestEnd, reportCompactionRequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rowIsInRange, rowIsInRange, setClosing, setCoprocessorHost, setReadsEnabled, setTimeoutForWriteLock, startRegionOperation, startRegionOperation, toString, unblockUpdates, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion, writeRegionOpenMarker</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/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/coprocessor/example/TestRefreshHFilesEndpoint.HRegionForRefreshHFilesEP.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/example/TestRefreshHFilesEndpoint.HRegionForRefreshHFilesEP.html b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/example/TestRefreshHFilesEndpoint.HRegionForRefreshHFilesEP.html
index caa2641..7679618 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/example/TestRefreshHFilesEndpoint.HRegionForRefreshHFilesEP.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/example/TestRefreshHFilesEndpoint.HRegionForRefreshHFilesEP.html
@@ -223,7 +223,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegion</h3>
-<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkReadOnly, checkReadsEnabled, checkSplit, checkTimestamps, close, close, closeRegionOperation, closeRegionOperation, compact, compact, compact, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, delete, deregisterChildren, doRegionCompactionPrep, equals, execService, flush, flushcache, get, get, get, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliestFlushTimeForAllStores, getEffectiveDurability, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLockedRows, getMaxFlushedSeq
 Id, getMaxStoreSeqId, getMemStoreDataSize, getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNextSequenceId, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenSeqNum, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateHStore, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLoadingCfsOnDema
 ndDefault, isMergeable, isReadOnly, isSplittable, mutateRow, mutateRowsWithLocks, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, refreshStoreFiles, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, reportCompactionRequestEnd, reportCompactionRequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rowIsInRange, rowIsInRange, setClosing, setCoprocessorHost, setReadsEnabled, setTimeoutForWriteLock, startRegionOperation, startRegionOperation, toString, unblockUpdates, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion, writeRegionOpenMarker</code></li>
+<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkReadOnly, checkReadsEnabled, checkSplit, checkTimestamps, close, close, closeRegionOperation, closeRegionOperation, compact, compact, compact, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, delete, deregisterChildren, doRegionCompactionPrep, dropMemStoreContents, equals, execService, flush, flushcache, get, get, get, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliestFlushTimeForAllStores, getEffectiveDurability, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLocked
 Rows, getMaxFlushedSeqId, getMaxStoreSeqId, getMemStoreDataSize, getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNextSequenceId, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenSeqNum, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateHStore, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosi
 ng, isLoadingCfsOnDemandDefault, isMergeable, isReadOnly, isSplittable, mutateRow, mutateRowsWithLocks, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, refreshStoreFiles, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, reportCompactionRequestEnd, reportCompactionRequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rowIsInRange, rowIsInRange, setClosing, setCoprocessorHost, setReadsEnabled, setTimeoutForWriteLock, startRegionOperation, startRegionOperation, toString, unblockUpdates, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion, writeRegionOpenMarker</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/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
index 4837d80..ec56445 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -158,8 +158,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TagUsage.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TagUsage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TestCacheOnWrite.CacheOnWriteType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TagUsage.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TagUsage</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html b/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html
index 68cf685..c6e8c3b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":9,"i2":10,"i3":10};
+var methods = {"i0":9,"i1":9,"i2":10,"i3":10,"i4":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/master/TestMasterMetricsWrapper.html#line.40">TestMasterMetricsWrapper</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html#line.49">TestMasterMetricsWrapper</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>
@@ -191,6 +191,12 @@ 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>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html#testOfflineRegion--">testOfflineRegion</a></span>()</code>
+<div class="block">tests online and offline region number</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html#testQuotaSnapshotConversion--">testQuotaSnapshotConversion</a></span>()</code>&nbsp;</td>
 </tr>
 </table>
@@ -221,7 +227,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/master/TestMasterMetricsWrapper.html#line.43">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/master/TestMasterMetricsWrapper.html#line.52">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -230,7 +236,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/master/TestMasterMetricsWrapper.html#line.46">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html#line.55">LOG</a></pre>
 </li>
 </ul>
 <a name="TEST_UTIL">
@@ -239,7 +245,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TEST_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/master/TestMasterMetricsWrapper.html#line.48">TEST_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/master/TestMasterMetricsWrapper.html#line.57">TEST_UTIL</a></pre>
 </li>
 </ul>
 <a name="NUM_RS">
@@ -248,7 +254,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>NUM_RS</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html#line.49">NUM_RS</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html#line.58">NUM_RS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.TestMasterMetricsWrapper.NUM_RS">Constant Field Values</a></dd>
@@ -269,7 +275,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestMasterMetricsWrapper</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html#line.40">TestMasterMetricsWrapper</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html#line.49">TestMasterMetricsWrapper</a>()</pre>
 </li>
 </ul>
 </li>
@@ -286,7 +292,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setup</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html#line.52">setup</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html#line.61">setup</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>
@@ -300,7 +306,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>teardown</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html#line.57">teardown</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html#line.66">teardown</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>
@@ -314,16 +320,31 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testInfo</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html#line.62">testInfo</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html#line.71">testInfo</a>()</pre>
 </li>
 </ul>
 <a name="testQuotaSnapshotConversion--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>testQuotaSnapshotConversion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html#line.96">testQuotaSnapshotConversion</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html#line.105">testQuotaSnapshotConversion</a>()</pre>
+</li>
+</ul>
+<a name="testOfflineRegion--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testOfflineRegion</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html#line.120">testOfflineRegion</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>
+<div class="block">tests online and offline region number</div>
+<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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure.html b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure.html
index 7bccc58..7344fff 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedureFromClient.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure.html" target="_top">Frames</a></li>
@@ -137,7 +137,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.219">TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure</a>
+<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#line.200">TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure</a>
 extends org.apache.hadoop.hbase.master.procedure.CreateTableProcedure</pre>
 </li>
 </ul>
@@ -309,7 +309,7 @@ extends org.apache.hadoop.hbase.master.procedure.CreateTableProcedure</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>failOnce</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure.html#line.220">failOnce</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure.html#line.201">failOnce</a></pre>
 </li>
 </ul>
 </li>
@@ -326,7 +326,7 @@ extends org.apache.hadoop.hbase.master.procedure.CreateTableProcedure</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>CreateTableProcedureOnHDFSFailure</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure.html#line.222">CreateTableProcedureOnHDFSFailure</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure.html#line.203">CreateTableProcedureOnHDFSFailure</a>()</pre>
 </li>
 </ul>
 <a name="CreateTableProcedureOnHDFSFailure-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.RegionInfo:A-">
@@ -335,7 +335,7 @@ extends org.apache.hadoop.hbase.master.procedure.CreateTableProcedure</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CreateTableProcedureOnHDFSFailure</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure.html#line.227">CreateTableProcedureOnHDFSFailure</a>(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&nbsp;env,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure.html#line.208">CreateTableProcedureOnHDFSFailure</a>(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&nbsp;env,
                                          org.apache.hadoop.hbase.client.TableDescriptor&nbsp;tableDescriptor,
                                          org.apache.hadoop.hbase.client.RegionInfo[]&nbsp;newRegions)
                                   throws org.apache.hadoop.hbase.HBaseIOException</pre>
@@ -359,7 +359,7 @@ extends org.apache.hadoop.hbase.master.procedure.CreateTableProcedure</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>executeFromState</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.procedure2.StateMachineProcedure.Flow&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure.html#line.234">executeFromState</a>(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&nbsp;env,
+<pre>protected&nbsp;org.apache.hadoop.hbase.procedure2.StateMachineProcedure.Flow&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure.html#line.215">executeFromState</a>(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&nbsp;env,
                                                                                          org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.CreateTableState&nbsp;state)
                                                                                   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>
@@ -399,7 +399,7 @@ extends org.apache.hadoop.hbase.master.procedure.CreateTableProcedure</pre>
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedureFromClient.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure.html" target="_top">Frames</a></li>


[10/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index 4e3807b..3c955ea 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index 08614e5..0662a3b 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index b827866..dbd21b0 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index 3d1136e..06bb751 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index 16121d6..bd1c48c 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index bdb9cf8..03aa14b 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index f434aca..f1edaaa 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index 7b35bf2..0485843 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index d9201f5..14c8663 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index 29ffa1c..e59cec6 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index cc15027..007e522 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index fb0d6f4..4ae80ee 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index ff94f1c..b1df1ec 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index 62a5d1c..6ea85bb 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index 0ca5c22..091cb58 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index 5b4d340..ab94a82 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index c5cbf8d..179e235 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="20180822" />
+    <meta name="Date-Revision-yyyymmdd" content="20180823" />
     <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" />
@@ -748,7 +748,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-08-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-frame.html b/testdevapidocs/allclasses-frame.html
index d35a50a..45d1926 100644
--- a/testdevapidocs/allclasses-frame.html
+++ b/testdevapidocs/allclasses-frame.html
@@ -976,6 +976,7 @@
 <li><a href="org/apache/hadoop/hbase/master/procedure/TestCreateNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">TestCreateNamespaceProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">TestCreateTableProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure</a></li>
+<li><a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">TestCreateTableProcedureMuitipleRegions</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/wal/TestCustomWALCellCodec.html" title="class in org.apache.hadoop.hbase.regionserver.wal" target="classFrame">TestCustomWALCellCodec</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/wal/TestCustomWALCellCodec.CustomWALCellCodec.html" title="class in org.apache.hadoop.hbase.regionserver.wal" target="classFrame">TestCustomWALCellCodec.CustomWALCellCodec</a></li>
 <li><a href="org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.html" title="class in org.apache.hadoop.hbase.io.encoding" target="classFrame">TestDataBlockEncoders</a></li>
@@ -1709,6 +1710,7 @@
 <li><a href="org/apache/hadoop/hbase/wal/TestReadWriteSeqIdFiles.html" title="class in org.apache.hadoop.hbase.wal" target="classFrame">TestReadWriteSeqIdFiles</a></li>
 <li><a href="org/apache/hadoop/hbase/zookeeper/TestRecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">TestRecoverableZooKeeper</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRecoveredEdits</a></li>
+<li><a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRecoveredEditsReplayAndAbort</a></li>
 <li><a href="org/apache/hadoop/hbase/replication/master/TestRecoverStandbyProcedure.html" title="class in org.apache.hadoop.hbase.replication.master" target="classFrame">TestRecoverStandbyProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/metrics/impl/TestRefCountingMap.html" title="class in org.apache.hadoop.hbase.metrics.impl" target="classFrame">TestRefCountingMap</a></li>
 <li><a href="org/apache/hadoop/hbase/coprocessor/example/TestRefreshHFilesEndpoint.html" title="class in org.apache.hadoop.hbase.coprocessor.example" target="classFrame">TestRefreshHFilesEndpoint</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-noframe.html b/testdevapidocs/allclasses-noframe.html
index 4a638e0..4de6735 100644
--- a/testdevapidocs/allclasses-noframe.html
+++ b/testdevapidocs/allclasses-noframe.html
@@ -976,6 +976,7 @@
 <li><a href="org/apache/hadoop/hbase/master/procedure/TestCreateNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestCreateNamespaceProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestCreateTableProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure</a></li>
+<li><a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html" title="class in org.apache.hadoop.hbase.master.procedure">TestCreateTableProcedureMuitipleRegions</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/wal/TestCustomWALCellCodec.html" title="class in org.apache.hadoop.hbase.regionserver.wal">TestCustomWALCellCodec</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/wal/TestCustomWALCellCodec.CustomWALCellCodec.html" title="class in org.apache.hadoop.hbase.regionserver.wal">TestCustomWALCellCodec.CustomWALCellCodec</a></li>
 <li><a href="org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.html" title="class in org.apache.hadoop.hbase.io.encoding">TestDataBlockEncoders</a></li>
@@ -1709,6 +1710,7 @@
 <li><a href="org/apache/hadoop/hbase/wal/TestReadWriteSeqIdFiles.html" title="class in org.apache.hadoop.hbase.wal">TestReadWriteSeqIdFiles</a></li>
 <li><a href="org/apache/hadoop/hbase/zookeeper/TestRecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">TestRecoverableZooKeeper</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEdits</a></li>
+<li><a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEditsReplayAndAbort</a></li>
 <li><a href="org/apache/hadoop/hbase/replication/master/TestRecoverStandbyProcedure.html" title="class in org.apache.hadoop.hbase.replication.master">TestRecoverStandbyProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/metrics/impl/TestRefCountingMap.html" title="class in org.apache.hadoop.hbase.metrics.impl">TestRefCountingMap</a></li>
 <li><a href="org/apache/hadoop/hbase/coprocessor/example/TestRefreshHFilesEndpoint.html" title="class in org.apache.hadoop.hbase.coprocessor.example">TestRefreshHFilesEndpoint</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/constant-values.html b/testdevapidocs/constant-values.html
index 176a556..92e4cf6 100644
--- a/testdevapidocs/constant-values.html
+++ b/testdevapidocs/constant-values.html
@@ -7752,6 +7752,32 @@
 </li>
 <li class="blockList">
 <table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html" title="class in org.apache.hadoop.hbase.master.procedure">TestCreateTableProcedureMuitipleRegions</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.master.procedure.TestCreateTableProcedureMuitipleRegions.F1">
+<!--   -->
+</a><code>private&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/master/procedure/TestCreateTableProcedureMuitipleRegions.html#F1">F1</a></code></td>
+<td class="colLast"><code>"f1"</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.master.procedure.TestCreateTableProcedureMuitipleRegions.F2">
+<!--   -->
+</a><code>private&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/master/procedure/TestCreateTableProcedureMuitipleRegions.html#F2">F2</a></code></td>
+<td class="colLast"><code>"f2"</code></td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
 <caption><span>org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestRestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestRestoreSnapshotProcedure</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index c56f444..36e6f44 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -5075,6 +5075,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestCreateTableProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html" title="class in org.apache.hadoop.hbase.master.procedure">TestCreateTableProcedureMuitipleRegions</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedureFromClient.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedureFromClient.html" title="class in org.apache.hadoop.hbase.master.procedure">TestDeleteColumnFamilyProcedureFromClient</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestDeleteNamespaceProcedure.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestDeleteNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestDeleteNamespaceProcedure</a></dt>
@@ -5621,6 +5623,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEdits</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEditsReplayAndAbort</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionFavoredNodes</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dt>
@@ -8150,6 +8154,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestQosFunction.html#conf">conf</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestQosFunction.html" title="class in org.apache.hadoop.hbase.regionserver">TestQosFunction</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#CONF">CONF</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEditsReplayAndAbort</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionMove.html#CONF">CONF</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionMove.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMove</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.html#conf">conf</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerAbort</a></dt>
@@ -13511,6 +13517,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#F1">F1</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestCreateTableProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html#F1">F1</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html" title="class in org.apache.hadoop.hbase.master.procedure">TestCreateTableProcedureMuitipleRegions</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.html#F1">F1</a></span> - Static variable in class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.html" title="class in org.apache.hadoop.hbase.quotas">SpaceQuotaHelperForTests</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/TestRegionSizeUse.html#F1">F1</a></span> - Static variable in class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/TestRegionSizeUse.html" title="class in org.apache.hadoop.hbase.quotas">TestRegionSizeUse</a></dt>
@@ -13525,6 +13533,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#F2">F2</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestCreateTableProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html#F2">F2</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html" title="class in org.apache.hadoop.hbase.master.procedure">TestCreateTableProcedureMuitipleRegions</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/TestReplicationSourceManager.html#f2">f2</a></span> - Static variable 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/replication/TestNamespaceReplication.html#f2Name">f2Name</a></span> - Static variable in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestNamespaceReplication.html" title="class in org.apache.hadoop.hbase.replication">TestNamespaceReplication</a></dt>
@@ -13685,6 +13695,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.html#fam1">fam1</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">TestKeyValueHeap</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#fam1">fam1</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEditsReplayAndAbort</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestByteBufferKeyValue.html#FAM1">FAM1</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestByteBufferKeyValue.html" title="class in org.apache.hadoop.hbase">TestByteBufferKeyValue</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestByteBufferKeyValue.html#fam1">fam1</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestByteBufferKeyValue.html" title="class in org.apache.hadoop.hbase">TestByteBufferKeyValue</a></dt>
@@ -14379,6 +14391,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/snapshot/TestSnapshotHFileCleaner.SnapshotFiles.html#filesUnderSnapshot-org.apache.hadoop.fs.Path-">filesUnderSnapshot(Path)</a></span> - Method in class org.apache.hadoop.hbase.master.snapshot.<a href="org/apache/hadoop/hbase/master/snapshot/TestSnapshotHFileCleaner.SnapshotFiles.html" title="class in org.apache.hadoop.hbase.master.snapshot">TestSnapshotHFileCleaner.SnapshotFiles</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#FILESYSTEM">FILESYSTEM</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEditsReplayAndAbort</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestWALMonotonicallyIncreasingSeqId.html#fileSystem">fileSystem</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestWALMonotonicallyIncreasingSeqId.html" title="class in org.apache.hadoop.hbase.regionserver">TestWALMonotonicallyIncreasingSeqId</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#fileSystemManager">fileSystemManager</a></span> - Variable in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/MockMasterServices.html" title="class in org.apache.hadoop.hbase.master.assignment">MockMasterServices</a></dt>
@@ -23561,8 +23575,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestCreateNamespaceProcedure.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestCreateNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestCreateNamespaceProcedure</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestCreateTableProcedure</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestDeleteNamespaceProcedure.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestDeleteNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestDeleteNamespaceProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestDeleteTableProcedure.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestDeleteTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestDeleteTableProcedure</a></dt>
@@ -23851,6 +23863,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEdits</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEditsReplayAndAbort</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMergeTransactionOnCluster</a></dt>
@@ -25291,6 +25305,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#method">method</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionReplayEvents</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#method">method</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEditsReplayAndAbort</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionMove.html#method">method</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionMove.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMove</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tool/coprocessor/CoprocessorValidatorTest.MissingClassObserver.html#method-org.apache.hadoop.hbase.tool.coprocessor.CoprocessorValidatorTest.MissingClass-">method(CoprocessorValidatorTest.MissingClass)</a></span> - Method in class org.apache.hadoop.hbase.tool.coprocessor.<a href="org/apache/hadoop/hbase/tool/coprocessor/CoprocessorValidatorTest.MissingClassObserver.html" title="class in org.apache.hadoop.hbase.tool.coprocessor">CoprocessorValidatorTest.MissingClassObserver</a></dt>
@@ -26751,6 +26767,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestParallelPut.html#name">name</a></span> - Variable 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/TestRecoveredEditsReplayAndAbort.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEditsReplayAndAbort</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionInfoBuilder.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionInfoBuilder.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionInfoBuilder</a></dt>
@@ -31952,6 +31970,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMobStoreScanner.html#random">random</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMobStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestMobStoreScanner</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#random">random</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEditsReplayAndAbort</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCompatibilitySingletonFactory.html#RANDOM">RANDOM</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCompatibilitySingletonFactory.html" title="class in org.apache.hadoop.hbase">TestCompatibilitySingletonFactory</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestMetaTableAccessor.html#random">random</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestMetaTableAccessor.html" title="class in org.apache.hadoop.hbase">TestMetaTableAccessor</a></dt>
@@ -32454,6 +32474,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestParallelPut.html#region">region</a></span> - Variable 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/TestRecoveredEditsReplayAndAbort.html#region">region</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEditsReplayAndAbort</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html#region">region</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement.CrossRowCellIncrementer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html#region">region</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement.SingleCellIncrementer</a></dt>
@@ -33821,6 +33843,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestParallelPut.html#row">row</a></span> - Static variable 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/TestRecoveredEditsReplayAndAbort.html#row">row</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEditsReplayAndAbort</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#ROW">ROW</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMergeTransactionOnCluster</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#row">row</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionReplicaFailover</a></dt>
@@ -36691,6 +36715,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestCreateNamespaceProcedure.html#setup--">setup()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestCreateNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestCreateNamespaceProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html#setUp--">setUp()</a></span> - Static method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html" title="class in org.apache.hadoop.hbase.master.procedure">TestCreateTableProcedureMuitipleRegions</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedureFromClient.html#setup--">setup()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedureFromClient.html" title="class in org.apache.hadoop.hbase.master.procedure">TestDeleteColumnFamilyProcedureFromClient</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestDeleteNamespaceProcedure.html#setup--">setup()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestDeleteNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestDeleteNamespaceProcedure</a></dt>
@@ -36965,6 +36991,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestQosFunction.html#setUp--">setUp()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestQosFunction.html" title="class in org.apache.hadoop.hbase.regionserver">TestQosFunction</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#setup--">setup()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEditsReplayAndAbort</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#setUp--">setUp()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionMove.html#setup--">setup()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionMove.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMove</a></dt>
@@ -41424,6 +41452,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.html#TABLENAME">TABLENAME</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.html" title="class in org.apache.hadoop.hbase.regionserver">TestPerColumnFamilyFlush</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#tableName">tableName</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEditsReplayAndAbort</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionMove.html#tableName">tableName</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionMove.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMove</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html#tableName">tableName</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerMetrics</a></dt>
@@ -41900,6 +41930,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestCreateNamespaceProcedure.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestCreateNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestCreateNamespaceProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html#tearDown--">tearDown()</a></span> - Static method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html" title="class in org.apache.hadoop.hbase.master.procedure">TestCreateTableProcedureMuitipleRegions</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestDeleteNamespaceProcedure.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestDeleteNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestDeleteNamespaceProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestMasterFailoverWithProcedures.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestMasterFailoverWithProcedures.html" title="class in org.apache.hadoop.hbase.master.procedure">TestMasterFailoverWithProcedures</a></dt>
@@ -42084,6 +42116,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestParallelPut.html#tearDown--">tearDown()</a></span> - 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/TestRecoveredEditsReplayAndAbort.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEditsReplayAndAbort</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerAbort</a></dt>
@@ -42800,6 +42834,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestBoundedPriorityBlockingQueue.html#tesAppendSamePriority--">tesAppendSamePriority()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestBoundedPriorityBlockingQueue.html" title="class in org.apache.hadoop.hbase.util">TestBoundedPriorityBlockingQueue</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/model/TestScannerModel.html#tesIncorrecttFilterThrowsJPE--">tesIncorrecttFilterThrowsJPE()</a></span> - Method in class org.apache.hadoop.hbase.rest.model.<a href="org/apache/hadoop/hbase/rest/model/TestScannerModel.html" title="class in org.apache.hadoop.hbase.rest.model">TestScannerModel</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/example/TestAsyncClientExample.html#test--">test()</a></span> - Method in class org.apache.hadoop.hbase.client.example.<a href="org/apache/hadoop/hbase/client/example/TestAsyncClientExample.html" title="class in org.apache.hadoop.hbase.client.example">TestAsyncClientExample</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/example/TestHttpProxyExample.html#test--">test()</a></span> - Method in class org.apache.hadoop.hbase.client.example.<a href="org/apache/hadoop/hbase/client/example/TestHttpProxyExample.html" title="class in org.apache.hadoop.hbase.client.example">TestHttpProxyExample</a></dt>
@@ -42918,6 +42954,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.html#test--">test()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.html" title="class in org.apache.hadoop.hbase.regionserver">TestOpenSeqNumUnexpectedIncrease</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#test--">test()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEditsReplayAndAbort</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionServerCrashDisableWAL.html#test--">test()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionServerCrashDisableWAL.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerCrashDisableWAL</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestShutdownWhileWALBroken.html#test--">test()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestShutdownWhileWALBroken.html" title="class in org.apache.hadoop.hbase.regionserver">TestShutdownWhileWALBroken</a></dt>
@@ -43742,6 +43780,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEdits</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEditsReplayAndAbort</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionFavoredNodes</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dt>
@@ -48250,6 +48290,10 @@
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TestCreateTableProcedure.CreateTableProcedureOnHDFSFailure</span></a> - Class in <a href="org/apache/hadoop/hbase/master/procedure/package-summary.html">org.apache.hadoop.hbase.master.procedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TestCreateTableProcedureMuitipleRegions</span></a> - Class in <a href="org/apache/hadoop/hbase/master/procedure/package-summary.html">org.apache.hadoop.hbase.master.procedure</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html#TestCreateTableProcedureMuitipleRegions--">TestCreateTableProcedureMuitipleRegions()</a></span> - Constructor for class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html" title="class in org.apache.hadoop.hbase.master.procedure">TestCreateTableProcedureMuitipleRegions</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestAdmin2.html#testCreateTableRPCTimeOut--">testCreateTableRPCTimeOut()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestAdmin2.html" title="class in org.apache.hadoop.hbase.client">TestAdmin2</a></dt>
 <dd>
 <div class="block">HMaster.createTable used to be kind of synchronous call
@@ -49604,6 +49648,8 @@
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html" title="class in org.apache.hadoop.hbase.executor"><span class="typeNameLink">TestExecutorService.TestEventHandler</span></a> - Class in <a href="org/apache/hadoop/hbase/executor/package-summary.html">org.apache.hadoop.hbase.executor</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/model/TestScannerModel.html#testExistingFilter--">testExistingFilter()</a></span> - Method in class org.apache.hadoop.hbase.rest.model.<a href="org/apache/hadoop/hbase/rest/model/TestScannerModel.html" title="class in org.apache.hadoop.hbase.rest.model">TestScannerModel</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestJarFinder.html#testExistingManifest--">testExistingManifest()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestJarFinder.html" title="class in org.apache.hadoop.hbase.mapreduce">TestJarFinder</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/compactions/TestStripeCompactionPolicy.html#testExistingStripesFromL0--">testExistingStripesFromL0()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.compactions.<a href="org/apache/hadoop/hbase/regionserver/compactions/TestStripeCompactionPolicy.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">TestStripeCompactionPolicy</a></dt>
@@ -50207,6 +50253,14 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestTags.html#testFlushAndCompactionWithoutTags--">testFlushAndCompactionWithoutTags()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestTags.html" title="class in org.apache.hadoop.hbase.regionserver">TestTags</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHRegion.html#testFlushAndMemstoreSizeCounting--">testFlushAndMemstoreSizeCounting()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHRegion.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegion</a></dt>
+<dd>
+<div class="block">A test case of HBASE-21041</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHRegionWithInMemoryFlush.html#testFlushAndMemstoreSizeCounting--">testFlushAndMemstoreSizeCounting()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHRegionWithInMemoryFlush.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionWithInMemoryFlush</a></dt>
+<dd>
+<div class="block">A test case of HBASE-21041</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHStore.html#testFlushBeforeCompletingScan-org.apache.hadoop.hbase.regionserver.TestHStore.MyListHook-org.apache.hadoop.hbase.filter.Filter-int-">testFlushBeforeCompletingScan(TestHStore.MyListHook, Filter, int)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStore</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHStore.html#testFlushBeforeCompletingScanWithFilter--">testFlushBeforeCompletingScanWithFilter()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStore</a></dt>
@@ -52392,6 +52446,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/filter/TestParseFilter.html#testIncorrectFilterString--">testIncorrectFilterString()</a></span> - Method in class org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/TestParseFilter.html" title="class in org.apache.hadoop.hbase.filter">TestParseFilter</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/model/TestScannerModel.html#testIncorrectFilterThrowsJME--">testIncorrectFilterThrowsJME()</a></span> - Method in class org.apache.hadoop.hbase.rest.model.<a href="org/apache/hadoop/hbase/rest/model/TestScannerModel.html" title="class in org.apache.hadoop.hbase.rest.model">TestScannerModel</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionSplitPolicy.html#testIncreasingToUpperBoundRegionSplitPolicy--">testIncreasingToUpperBoundRegionSplitPolicy()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionSplitPolicy</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestAsyncTable.html#testIncrement--">testIncrement()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestAsyncTable.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTable</a></dt>
@@ -54940,7 +54996,7 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/filter/TestFilterList.html#testMPONEWithSeekNextUsingHint--">testMPONEWithSeekNextUsingHint()</a></span> - Method in class org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/TestFilterList.html" title="class in org.apache.hadoop.hbase.filter">TestFilterList</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html#testMRegions--">testMRegions()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestCreateTableProcedure</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html#testMRegions--">testMRegions()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html" title="class in org.apache.hadoop.hbase.master.procedure">TestCreateTableProcedureMuitipleRegions</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#testMRIncrementalLoad--">testMRIncrementalLoad()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html" title="class in org.apache.hadoop.hbase.mapreduce">TestHFileOutputFormat2</a></dt>
 <dd>&nbsp;</dd>
@@ -55747,6 +55803,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rsgroup/TestRSGroupsBase.html#testNonExistentTableMove--">testNonExistentTableMove()</a></span> - Method in class org.apache.hadoop.hbase.rsgroup.<a href="org/apache/hadoop/hbase/rsgroup/TestRSGroupsBase.html" title="class in org.apache.hadoop.hbase.rsgroup">TestRSGroupsBase</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/model/TestScannerModel.html#testNonExistingFilter--">testNonExistingFilter()</a></span> - Method in class org.apache.hadoop.hbase.rest.model.<a href="org/apache/hadoop/hbase/rest/model/TestScannerModel.html" title="class in org.apache.hadoop.hbase.rest.model">TestScannerModel</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tool/TestLoadIncrementalHFiles.html#testNonHfileFolder--">testNonHfileFolder()</a></span> - Method in class org.apache.hadoop.hbase.tool.<a href="org/apache/hadoop/hbase/tool/TestLoadIncrementalHFiles.html" title="class in org.apache.hadoop.hbase.tool">TestLoadIncrementalHFiles</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tool/TestLoadIncrementalHFiles.html#testNonHfileFolder-java.lang.String-boolean-">testNonHfileFolder(String, boolean)</a></span> - Method in class org.apache.hadoop.hbase.tool.<a href="org/apache/hadoop/hbase/tool/TestLoadIncrementalHFiles.html" title="class in org.apache.hadoop.hbase.tool">TestLoadIncrementalHFiles</a></dt>
@@ -56009,6 +56067,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rsgroup/TestRSGroupsOfflineMode.html#testOffline--">testOffline()</a></span> - Method in class org.apache.hadoop.hbase.rsgroup.<a href="org/apache/hadoop/hbase/rsgroup/TestRSGroupsOfflineMode.html" title="class in org.apache.hadoop.hbase.rsgroup">TestRSGroupsOfflineMode</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html#testOfflineRegion--">testOfflineRegion()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html" title="class in org.apache.hadoop.hbase.master">TestMasterMetricsWrapper</a></dt>
+<dd>
+<div class="block">tests online and offline region number</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSnapshotCloneIndependence.html#testOfflineSnapshotAppendIndependent--">testOfflineSnapshotAppendIndependent()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSnapshotCloneIndependence.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotCloneIndependence</a></dt>
 <dd>
 <div class="block">Verify that adding data to the cloned table will not affect the original, and vice-versa when
@@ -57566,6 +57628,14 @@
 <dd>
 <div class="block"><code>https://issues.apache.org/jira/browse/HBASE-3020</code></div>
 </dd>
+<dt><a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRecoveredEditsReplayAndAbort</span></a> - Class in <a href="org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
+<dd>
+<div class="block">HBASE-21031
+ If replay edits fails, we need to make sure memstore is rollbacked
+ And if MSLAB is used, all chunk is released too.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#TestRecoveredEditsReplayAndAbort--">TestRecoveredEditsReplayAndAbort()</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEditsReplayAndAbort</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHRegion.html#testRecoveredEditsReplayCompaction--">testRecoveredEditsReplayCompaction()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHRegion.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegion</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHRegion.html#testRecoveredEditsReplayCompaction-boolean-">testRecoveredEditsReplayCompaction(boolean)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHRegion.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegion</a></dt>
@@ -66415,6 +66485,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestCreateNamespaceProcedure.html#UTIL">UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestCreateNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestCreateNamespaceProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html#UTIL">UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.html" title="class in org.apache.hadoop.hbase.master.procedure">TestCreateTableProcedureMuitipleRegions</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestDeleteNamespaceProcedure.html#UTIL">UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestDeleteNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestDeleteNamespaceProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestMasterFailoverWithProcedures.html#UTIL">UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestMasterFailoverWithProcedures.html" title="class in org.apache.hadoop.hbase.master.procedure">TestMasterFailoverWithProcedures</a></dt>
@@ -67674,6 +67746,8 @@ the order they are declared.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mob/compactions/TestMobCompactor.html#verifyEncryption-org.apache.hadoop.hbase.TableName-java.lang.String-">verifyEncryption(TableName, String)</a></span> - Method in class org.apache.hadoop.hbase.mob.compactions.<a href="org/apache/hadoop/hbase/mob/compactions/TestMobCompactor.html" title="class in org.apache.hadoop.hbase.mob.compactions">TestMobCompactor</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/model/TestScannerModel.html#verifyException-java.lang.String-">verifyException(String)</a></span> - Method in class org.apache.hadoop.hbase.rest.model.<a href="org/apache/hadoop/hbase/rest/model/TestScannerModel.html" title="class in org.apache.hadoop.hbase.rest.model">TestScannerModel</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#verifyExpectedCounts-org.apache.hadoop.hbase.client.Table-org.apache.hadoop.hbase.client.Scan-int-int-">verifyExpectedCounts(Table, Scan, int, int)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestScannersFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestScannersFromClientSide</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Verify.html#verifyExpectedValues-long-org.apache.hadoop.mapreduce.Counters-">verifyExpectedValues(long, Counters)</a></span> - Method in class org.apache.hadoop.hbase.test.<a href="org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Verify.html" title="class in org.apache.hadoop.hbase.test">IntegrationTestBigLinkedList.Verify</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.BlockCompactionsInCompletionRegion.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.BlockCompactionsInCompletionRegion.html b/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.BlockCompactionsInCompletionRegion.html
index b4b0736..f151586 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.BlockCompactionsInCompletionRegion.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.BlockCompactionsInCompletionRegion.html
@@ -234,7 +234,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/TestIOFencing.CompactionBlo
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegion</h3>
-<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkReadOnly, checkReadsEnabled, checkSplit, checkTimestamps, close, close, closeRegionOperation, closeRegionOperation, compact, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, delete, deregisterChildren, doRegionCompactionPrep, equals, execService, flush, flushcache, get, get, get, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliestFlushTimeForAllStores, getEffectiveDurability, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLockedRows, getMaxFlushedSeqId, getMaxStoreSeq
 Id, getMemStoreDataSize, getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNextSequenceId, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenSeqNum, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLoadingCfsOnDemandDefault, isMergeable, is
 ReadOnly, isSplittable, mutateRow, mutateRowsWithLocks, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, refreshStoreFiles, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, reportCompactionRequestEnd, reportCompactionRequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rowIsInRange, rowIsInRange, setClosing, setCoprocessorHost, setReadsEnabled, setTimeoutForWriteLock, startRegionOperation, startRegionOperation, toString, unblockUpdates, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion, writeRegionOpenMarker</code></li>
+<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkReadOnly, checkReadsEnabled, checkSplit, checkTimestamps, close, close, closeRegionOperation, closeRegionOperation, compact, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, delete, deregisterChildren, doRegionCompactionPrep, dropMemStoreContents, equals, execService, flush, flushcache, get, get, get, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliestFlushTimeForAllStores, getEffectiveDurability, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLockedRows, getMaxFlushe
 dSeqId, getMaxStoreSeqId, getMemStoreDataSize, getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNextSequenceId, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenSeqNum, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLoadingCfsOnDemandDe
 fault, isMergeable, isReadOnly, isSplittable, mutateRow, mutateRowsWithLocks, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, refreshStoreFiles, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, reportCompactionRequestEnd, reportCompactionRequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rowIsInRange, rowIsInRange, setClosing, setCoprocessorHost, setReadsEnabled, setTimeoutForWriteLock, startRegionOperation, startRegionOperation, toString, unblockUpdates, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion, writeRegionOpenMarker</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">


[17/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.WriteState.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.WriteState.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.WriteState.html
index db8431b..a8cb7c4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.WriteState.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.WriteState.html
@@ -885,7766 +885,7797 @@
 <span class="sourceLineNo">877</span>   * @return What the next sequence (edit) id should be.<a name="line.877"></a>
 <span class="sourceLineNo">878</span>   * @throws IOException e<a name="line.878"></a>
 <span class="sourceLineNo">879</span>   */<a name="line.879"></a>
-<span class="sourceLineNo">880</span>  private long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.880"></a>
-<span class="sourceLineNo">881</span><a name="line.881"></a>
-<span class="sourceLineNo">882</span>    //Refuse to open the region if there is no column family in the table<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.884"></a>
-<span class="sourceLineNo">885</span>          " should have at least one column family.");<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    long nextSeqId = -1;<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    try {<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.891"></a>
-<span class="sourceLineNo">892</span>      return nextSeqId;<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    } finally {<a name="line.893"></a>
-<span class="sourceLineNo">894</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      // At least it will be 0 otherwise.<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      if (nextSeqId == -1) {<a name="line.896"></a>
-<span class="sourceLineNo">897</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.897"></a>
-<span class="sourceLineNo">898</span>          " initialization.");<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      }<a name="line.899"></a>
-<span class="sourceLineNo">900</span>    }<a name="line.900"></a>
-<span class="sourceLineNo">901</span>  }<a name="line.901"></a>
-<span class="sourceLineNo">902</span><a name="line.902"></a>
-<span class="sourceLineNo">903</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.903"></a>
-<span class="sourceLineNo">904</span>      final MonitoredTask status) throws IOException {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    if (coprocessorHost != null) {<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      coprocessorHost.preOpen();<a name="line.907"></a>
-<span class="sourceLineNo">908</span>    }<a name="line.908"></a>
-<span class="sourceLineNo">909</span><a name="line.909"></a>
-<span class="sourceLineNo">910</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.910"></a>
-<span class="sourceLineNo">911</span>    // Only the primary replica should write .regioninfo<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      status.setStatus("Writing region info on filesystem");<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      fs.checkRegionInfoOnFilesystem();<a name="line.914"></a>
-<span class="sourceLineNo">915</span>    }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>    // Initialize all the HStores<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    status.setStatus("Initializing all the Stores");<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.920"></a>
-<span class="sourceLineNo">921</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.922"></a>
-<span class="sourceLineNo">923</span>      try {<a name="line.923"></a>
-<span class="sourceLineNo">924</span>        // update the stores that we are replaying<a name="line.924"></a>
-<span class="sourceLineNo">925</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        // Recover any edits if available.<a name="line.927"></a>
-<span class="sourceLineNo">928</span>        maxSeqId = Math.max(maxSeqId,<a name="line.928"></a>
-<span class="sourceLineNo">929</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        // Make sure mvcc is up to max.<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      } finally {<a name="line.932"></a>
-<span class="sourceLineNo">933</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        // update the stores that we are done replaying<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        stores.forEach(HStore::stopReplayingFromWAL);<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>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    this.writestate.flushRequested = false;<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    this.writestate.compacting.set(0);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>    if (this.writestate.writesEnabled) {<a name="line.944"></a>
-<span class="sourceLineNo">945</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      // Remove temporary data left over from old regions<a name="line.946"></a>
-<span class="sourceLineNo">947</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.947"></a>
-<span class="sourceLineNo">948</span>      fs.cleanupTempDir();<a name="line.948"></a>
-<span class="sourceLineNo">949</span>    }<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>    if (this.writestate.writesEnabled) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      // these directories here on open.  We may be opening a region that was<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      // being split but we crashed in the middle of it all.<a name="line.955"></a>
-<span class="sourceLineNo">956</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      fs.cleanupAnySplitDetritus();<a name="line.957"></a>
-<span class="sourceLineNo">958</span>      fs.cleanupMergesDir();<a name="line.958"></a>
-<span class="sourceLineNo">959</span>    }<a name="line.959"></a>
+<span class="sourceLineNo">880</span>  @VisibleForTesting<a name="line.880"></a>
+<span class="sourceLineNo">881</span>  long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>    //Refuse to open the region if there is no column family in the table<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.885"></a>
+<span class="sourceLineNo">886</span>          " should have at least one column family.");<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    }<a name="line.887"></a>
+<span class="sourceLineNo">888</span><a name="line.888"></a>
+<span class="sourceLineNo">889</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>    long nextSeqId = -1;<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    try {<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      return nextSeqId;<a name="line.893"></a>
+<span class="sourceLineNo">894</span>    } catch (IOException e) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      LOG.warn("Failed initialize of region= {}, starting to roll back memstore",<a name="line.895"></a>
+<span class="sourceLineNo">896</span>          getRegionInfo().getRegionNameAsString(), e);<a name="line.896"></a>
+<span class="sourceLineNo">897</span>      // global memstore size will be decreased when dropping memstore<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      try {<a name="line.898"></a>
+<span class="sourceLineNo">899</span>        //drop the memory used by memstore if open region fails<a name="line.899"></a>
+<span class="sourceLineNo">900</span>        dropMemStoreContents();<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      } catch (IOException ioE) {<a name="line.901"></a>
+<span class="sourceLineNo">902</span>        if (conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {<a name="line.902"></a>
+<span class="sourceLineNo">903</span>          LOG.warn("Failed drop memstore of region= {}, "<a name="line.903"></a>
+<span class="sourceLineNo">904</span>                  + "some chunks may not released forever since MSLAB is enabled",<a name="line.904"></a>
+<span class="sourceLineNo">905</span>              getRegionInfo().getRegionNameAsString());<a name="line.905"></a>
+<span class="sourceLineNo">906</span>        }<a name="line.906"></a>
+<span class="sourceLineNo">907</span><a name="line.907"></a>
+<span class="sourceLineNo">908</span>      }<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      throw e;<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    } finally {<a name="line.910"></a>
+<span class="sourceLineNo">911</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      // At least it will be 0 otherwise.<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      if (nextSeqId == -1) {<a name="line.913"></a>
+<span class="sourceLineNo">914</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.914"></a>
+<span class="sourceLineNo">915</span>          " initialization.");<a name="line.915"></a>
+<span class="sourceLineNo">916</span>      }<a name="line.916"></a>
+<span class="sourceLineNo">917</span>    }<a name="line.917"></a>
+<span class="sourceLineNo">918</span>  }<a name="line.918"></a>
+<span class="sourceLineNo">919</span><a name="line.919"></a>
+<span class="sourceLineNo">920</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.920"></a>
+<span class="sourceLineNo">921</span>      final MonitoredTask status) throws IOException {<a name="line.921"></a>
+<span class="sourceLineNo">922</span>    if (coprocessorHost != null) {<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.923"></a>
+<span class="sourceLineNo">924</span>      coprocessorHost.preOpen();<a name="line.924"></a>
+<span class="sourceLineNo">925</span>    }<a name="line.925"></a>
+<span class="sourceLineNo">926</span><a name="line.926"></a>
+<span class="sourceLineNo">927</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.927"></a>
+<span class="sourceLineNo">928</span>    // Only the primary replica should write .regioninfo<a name="line.928"></a>
+<span class="sourceLineNo">929</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>      status.setStatus("Writing region info on filesystem");<a name="line.930"></a>
+<span class="sourceLineNo">931</span>      fs.checkRegionInfoOnFilesystem();<a name="line.931"></a>
+<span class="sourceLineNo">932</span>    }<a name="line.932"></a>
+<span class="sourceLineNo">933</span><a name="line.933"></a>
+<span class="sourceLineNo">934</span>    // Initialize all the HStores<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    status.setStatus("Initializing all the Stores");<a name="line.935"></a>
+<span class="sourceLineNo">936</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.937"></a>
+<span class="sourceLineNo">938</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.938"></a>
+<span class="sourceLineNo">939</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.939"></a>
+<span class="sourceLineNo">940</span>      try {<a name="line.940"></a>
+<span class="sourceLineNo">941</span>        // update the stores that we are replaying<a name="line.941"></a>
+<span class="sourceLineNo">942</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.942"></a>
+<span class="sourceLineNo">943</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.943"></a>
+<span class="sourceLineNo">944</span>        // Recover any edits if available.<a name="line.944"></a>
+<span class="sourceLineNo">945</span>        maxSeqId = Math.max(maxSeqId,<a name="line.945"></a>
+<span class="sourceLineNo">946</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.946"></a>
+<span class="sourceLineNo">947</span>        // Make sure mvcc is up to max.<a name="line.947"></a>
+<span class="sourceLineNo">948</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      } finally {<a name="line.949"></a>
+<span class="sourceLineNo">950</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        // update the stores that we are done replaying<a name="line.951"></a>
+<span class="sourceLineNo">952</span>        stores.forEach(HStore::stopReplayingFromWAL);<a name="line.952"></a>
+<span class="sourceLineNo">953</span>      }<a name="line.953"></a>
+<span class="sourceLineNo">954</span>    }<a name="line.954"></a>
+<span class="sourceLineNo">955</span>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.955"></a>
+<span class="sourceLineNo">956</span><a name="line.956"></a>
+<span class="sourceLineNo">957</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.957"></a>
+<span class="sourceLineNo">958</span>    this.writestate.flushRequested = false;<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    this.writestate.compacting.set(0);<a name="line.959"></a>
 <span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>    // Initialize split policy<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.962"></a>
-<span class="sourceLineNo">963</span><a name="line.963"></a>
-<span class="sourceLineNo">964</span>    // Initialize flush policy<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.965"></a>
-<span class="sourceLineNo">966</span><a name="line.966"></a>
-<span class="sourceLineNo">967</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    for (HStore store: stores.values()) {<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<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>    // Use maximum of log sequenceid or that which was found in stores<a name="line.972"></a>
-<span class="sourceLineNo">973</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.973"></a>
-<span class="sourceLineNo">974</span>    long maxSeqIdFromFile =<a name="line.974"></a>
-<span class="sourceLineNo">975</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.975"></a>
-<span class="sourceLineNo">976</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.976"></a>
-<span class="sourceLineNo">977</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    // the max sequence id file.<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.985"></a>
-<span class="sourceLineNo">986</span><a name="line.986"></a>
-<span class="sourceLineNo">987</span>    // A region can be reopened if failed a split; reset flags<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    this.closing.set(false);<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    this.closed.set(false);<a name="line.989"></a>
-<span class="sourceLineNo">990</span><a name="line.990"></a>
-<span class="sourceLineNo">991</span>    if (coprocessorHost != null) {<a name="line.991"></a>
-<span class="sourceLineNo">992</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.992"></a>
-<span class="sourceLineNo">993</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.993"></a>
-<span class="sourceLineNo">994</span>      coprocessorHost.postOpen();<a name="line.994"></a>
-<span class="sourceLineNo">995</span>    }<a name="line.995"></a>
-<span class="sourceLineNo">996</span><a name="line.996"></a>
-<span class="sourceLineNo">997</span>    status.markComplete("Region opened successfully");<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    return nextSeqId;<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>   * Open all Stores.<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>   * @param reporter<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   * @param status<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>   * @return Highest sequenceId found out in a Store.<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * @throws IOException<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   */<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      throws IOException {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>    // Load in all the HStores.<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    long maxSeqId = -1;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    long maxMemstoreTS = -1;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span><a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span><a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      // initialize each store in parallel<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>          @Override<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>          public HStore call() throws IOException {<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>            return instantiateHStore(family);<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          }<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>        });<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      }<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>      boolean allStoresOpened = false;<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>      boolean hasSloppyStores = false;<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>      try {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>          HStore store = future.get();<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>          if (store.isSloppyMemStore()) {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            hasSloppyStores = true;<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>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>              storeMaxSequenceId);<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            maxSeqId = storeMaxSequenceId;<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>          }<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>          }<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>        }<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>        allStoresOpened = true;<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>        if(hasSloppyStores) {<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>                  .build();<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        }<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>      } catch (InterruptedException e) {<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>      } catch (ExecutionException e) {<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        throw new IOException(e.getCause());<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>      } finally {<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        if (!allStoresOpened) {<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>          // something went wrong, close all opened stores<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>          for (HStore store : this.stores.values()) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>            try {<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>              store.close();<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>            } catch (IOException e) {<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>              LOG.warn("close store failed", e);<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>            }<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          }<a name="line.1075"></a>
+<span class="sourceLineNo">961</span>    if (this.writestate.writesEnabled) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      // Remove temporary data left over from old regions<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      fs.cleanupTempDir();<a name="line.965"></a>
+<span class="sourceLineNo">966</span>    }<a name="line.966"></a>
+<span class="sourceLineNo">967</span><a name="line.967"></a>
+<span class="sourceLineNo">968</span>    if (this.writestate.writesEnabled) {<a name="line.968"></a>
+<span class="sourceLineNo">969</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.969"></a>
+<span class="sourceLineNo">970</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.970"></a>
+<span class="sourceLineNo">971</span>      // these directories here on open.  We may be opening a region that was<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      // being split but we crashed in the middle of it all.<a name="line.972"></a>
+<span class="sourceLineNo">973</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.973"></a>
+<span class="sourceLineNo">974</span>      fs.cleanupAnySplitDetritus();<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      fs.cleanupMergesDir();<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    }<a name="line.976"></a>
+<span class="sourceLineNo">977</span><a name="line.977"></a>
+<span class="sourceLineNo">978</span>    // Initialize split policy<a name="line.978"></a>
+<span class="sourceLineNo">979</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.979"></a>
+<span class="sourceLineNo">980</span><a name="line.980"></a>
+<span class="sourceLineNo">981</span>    // Initialize flush policy<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.982"></a>
+<span class="sourceLineNo">983</span><a name="line.983"></a>
+<span class="sourceLineNo">984</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.984"></a>
+<span class="sourceLineNo">985</span>    for (HStore store: stores.values()) {<a name="line.985"></a>
+<span class="sourceLineNo">986</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<a name="line.986"></a>
+<span class="sourceLineNo">987</span>    }<a name="line.987"></a>
+<span class="sourceLineNo">988</span><a name="line.988"></a>
+<span class="sourceLineNo">989</span>    // Use maximum of log sequenceid or that which was found in stores<a name="line.989"></a>
+<span class="sourceLineNo">990</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.990"></a>
+<span class="sourceLineNo">991</span>    long maxSeqIdFromFile =<a name="line.991"></a>
+<span class="sourceLineNo">992</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.994"></a>
+<span class="sourceLineNo">995</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.995"></a>
+<span class="sourceLineNo">996</span>    // the max sequence id file.<a name="line.996"></a>
+<span class="sourceLineNo">997</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.997"></a>
+<span class="sourceLineNo">998</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.998"></a>
+<span class="sourceLineNo">999</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<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>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span><a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>    // A region can be reopened if failed a split; reset flags<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>    this.closing.set(false);<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    this.closed.set(false);<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span><a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>    if (coprocessorHost != null) {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>      coprocessorHost.postOpen();<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>    }<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span><a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>    status.markComplete("Region opened successfully");<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>    return nextSeqId;<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>  }<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span><a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>  /**<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>   * Open all Stores.<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>   * @param reporter<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>   * @param status<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>   * @return Highest sequenceId found out in a Store.<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>   * @throws IOException<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>   */<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>      throws IOException {<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    // Load in all the HStores.<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>    long maxSeqId = -1;<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>    long maxMemstoreTS = -1;<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span><a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>      // initialize each store in parallel<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>          @Override<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>          public HStore call() throws IOException {<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>            return instantiateHStore(family);<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>          }<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>        });<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>      }<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>      boolean allStoresOpened = false;<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>      boolean hasSloppyStores = false;<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>      try {<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>          HStore store = future.get();<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>          if (store.isSloppyMemStore()) {<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>            hasSloppyStores = true;<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>          }<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span><a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>              storeMaxSequenceId);<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>            maxSeqId = storeMaxSequenceId;<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>          }<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>          }<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span>        }<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>        allStoresOpened = true;<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>        if(hasSloppyStores) {<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>                  .build();<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1075"></a>
 <span class="sourceLineNo">1076</span>        }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      }<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    }<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>  }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span><a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>    // Initialize all the HStores<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>    status.setStatus("Warming up all the Stores");<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    try {<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>      initializeStores(reporter, status);<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>    } finally {<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>      status.markComplete("Done warming up.");<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>    }<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>  }<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>   * @return Map of StoreFiles by column family<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>   */<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    for (HStore store : stores.values()) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      if (storeFiles == null) {<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>        continue;<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>        storeFileNames.add(storeFile.getPath());<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      }<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>    }<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>    return allStoreFiles;<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>  }<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span><a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>  @VisibleForTesting<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>        mvcc);<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  }<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span><a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>        mvcc);<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span><a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>    // Store SeqId in HDFS when a region closes<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    // table is still online<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>        mvcc.getReadPoint());<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>    }<a name="line.1136"></a>
+<span class="sourceLineNo">1077</span>      } catch (InterruptedException e) {<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>      } catch (ExecutionException e) {<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>        throw new IOException(e.getCause());<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      } finally {<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>        if (!allStoresOpened) {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>          // something went wrong, close all opened stores<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>          for (HStore store : this.stores.values()) {<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>            try {<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>              store.close();<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>            } catch (IOException e) {<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>              LOG.warn("close store failed", e);<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>            }<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>      }<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>    }<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>  }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span><a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>    // Initialize all the HStores<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>    status.setStatus("Warming up all the Stores");<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>    try {<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>      initializeStores(reporter, status);<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>    } finally {<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>      status.markComplete("Done warming up.");<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>    }<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>  }<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span><a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>  /**<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>   * @return Map of StoreFiles by column family<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>   */<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>    for (HStore store : stores.values()) {<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>      if (storeFiles == null) {<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>        continue;<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span>      }<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>        storeFileNames.add(storeFile.getPath());<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>      }<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>    }<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>    return allStoreFiles;<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>  }<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span><a name="line.1128"></a>
+<span class="sourceLineNo">1129</span>  @VisibleForTesting<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>        mvcc);<a name="line.1136"></a>
 <span class="sourceLineNo">1137</span>  }<a name="line.1137"></a>
 <span class="sourceLineNo">1138</span><a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>  /**<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>   * @return True if this region has references.<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>   */<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>  public boolean hasReferences() {<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<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>  public void blockUpdates() {<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>    this.updatesLock.writeLock().lock();<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>  }<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span><a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>  public void unblockUpdates() {<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>    this.updatesLock.writeLock().unlock();<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>  }<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span><a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>    return hdfsBlocksDistribution;<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>  }<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span><a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>  /**<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>   * @param conf configuration<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>   * @param regionInfo encoded name of the region<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>   * @throws IOException<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>   */<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>  }<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span><a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>  /**<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>   * @param conf configuration<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>   * @param regionInfo encoded name of the region<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>   * @param tablePath the table directory<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>   * @throws IOException<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>   */<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1186"></a>
-<span class="sourceLineNo">1187</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1188"></a>
-<span class="sourceLineNo">1189</span><a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span>      if (locatedFileStatusList == null) {<a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>        continue;<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>      }<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span><a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>        Path p = status.getPath();<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>          // creation<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>              status.getBlockLocations());<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span>        } else {<a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>          throw new IOException("path=" + p<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>              + " doesn't look like a valid StoreFile");<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>        }<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>      }<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>    }<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>    return hdfsBlocksDistribution;<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>   * Increase the size of mem store in this region and the size of global mem<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>   * store<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>   */<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>  }<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span><a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>    if (this.rsAccounting != null) {<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>    }<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>    long dataSize =<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1234"></a>
+<span class="sourceLineNo">1139</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span>        mvcc);<a name="line.1145"></a>
+<span class="sourceLineNo">1146</span><a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>    // Store SeqId in HDFS when a region closes<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>    // table is still online<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span>        mvcc.getReadPoint());<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>    }<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>  }<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span><a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>  /**<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>   * @return True if this region has references.<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>   */<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>  public boolean hasReferences() {<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>  }<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span><a name="line.1162"></a>
+<span class="sourceLineNo">1163</span>  public void blockUpdates() {<a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>    this.updatesLock.writeLock().lock();<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>  }<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span><a name="line.1166"></a>
+<span class="sourceLineNo">1167</span>  public void unblockUpdates() {<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>    this.updatesLock.writeLock().unlock();<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>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1172"></a>
+<span class="sourceLineNo">1173</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1174"></a>
+<span class="sourceLineNo">1175</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>    return hdfsBlocksDistribution;<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span>  }<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span><a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>  /**<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>   * @param conf configuration<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1182"></a>
+<span class="sourceLineNo">1183</span>   * @param regionInfo encoded name of the region<a name="line.1183"></a>
+<span class="sourceLineNo">1184</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1184"></a>
+<span class="sourceLineNo">1185</span>   * @throws IOException<a name="line.1185"></a>
+<span class="sourceLineNo">1186</span>   */<a name="line.1186"></a>
+<span class="sourceLineNo">1187</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1187"></a>
+<span class="sourceLineNo">1188</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1188"></a>
+<span class="sourceLineNo">1189</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1189"></a>
+<span class="sourceLineNo">1190</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1190"></a>
+<span class="sourceLineNo">1191</span>  }<a name="line.1191"></a>
+<span class="sourceLineNo">1192</span><a name="line.1192"></a>
+<span class="sourceLineNo">1193</span>  /**<a name="line.1193"></a>
+<span class="sourceLineNo">1194</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1194"></a>
+<span class="sourceLineNo">1195</span>   * @param conf configuration<a name="line.1195"></a>
+<span class="sourceLineNo">1196</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1196"></a>
+<span class="sourceLineNo">1197</span>   * @param regionInfo encoded name of the region<a name="line.1197"></a>
+<span class="sourceLineNo">1198</span>   * @param tablePath the table directory<a name="line.1198"></a>
+<span class="sourceLineNo">1199</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1199"></a>
+<span class="sourceLineNo">1200</span>   * @throws IOException<a name="line.1200"></a>
+<span class="sourceLineNo">1201</span>   */<a name="line.1201"></a>
+<span class="sourceLineNo">1202</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1202"></a>
+<span class="sourceLineNo">1203</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1203"></a>
+<span class="sourceLineNo">1204</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1204"></a>
+<span class="sourceLineNo">1205</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1205"></a>
+<span class="sourceLineNo">1206</span><a name="line.1206"></a>
+<span class="sourceLineNo">1207</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1207"></a>
+<span class="sourceLineNo">1208</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1208"></a>
+<span class="sourceLineNo">1209</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1209"></a>
+<span class="sourceLineNo">1210</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1210"></a>
+<span class="sourceLineNo">1211</span>      if (locatedFileStatusList == null) {<a name="line.1211"></a>
+<span class="sourceLineNo">1212</span>        continue;<a name="line.1212"></a>
+<span class="sourceLineNo">1213</span>      }<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span><a name="line.1214"></a>
+<span class="sourceLineNo">1215</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1215"></a>
+<span class="sourceLineNo">1216</span>        Path p = status.getPath();<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1217"></a>
+<span class="sourceLineNo">1218</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span>          // creation<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1224"></a>
+<span class="sourceLineNo">1225</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1225"></a>
+<span class="sourceLineNo">1226</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1226"></a>
+<span class="sourceLineNo">1227</span>              status.getBlockLocations());<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span>        } else {<a name="line.1228"></a>
+<span class="sourceLineNo">1229</span>          throw new IOException("path=" + p<a name="line.1229"></a>
+<span class="sourceLineNo">1230</span>              + " doesn't look like a valid StoreFile");<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>    }<a name="line.1233"></a>
+<span class="sourceLineNo">1234</span>    return hdfsBlocksDistribution;<a name="line.1234"></a>
 <span class="sourceLineNo">1235</span>  }<a name="line.1235"></a>
 <span class="sourceLineNo">1236</span><a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>  }<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span><a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>    if (this.rsAccounting != null) {<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>    }<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>    long dataSize =<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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 checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    if (memStoreDataSize &lt; 0) {<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>    }<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>  }<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span><a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>  @Override<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>  public RegionInfo getRegionInfo() {<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>    return this.fs.getRegionInfo();<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>  }<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span><a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>  /**<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>   * @return Instance of {@link RegionServerServices} used by this HRegion.<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>   * Can be null.<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>   */<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>  RegionServerServices getRegionServerServices() {<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>    return this.rsServices;<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>  }<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span><a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>  @Override<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>  public long getReadRequestsCount() {<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>    return readRequestsCount.sum();<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>  }<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span><a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>  @Override<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>  public long getCpRequestsCount() {<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>    return cpRequestsCount.sum();<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>  @Override<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>  public long getFilteredReadRequestsCount() {<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>    return filteredReadRequestsCount.sum();<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>  @Override<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>  public long getWriteRequestsCount() {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    return writeRequestsCount.sum();<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>  }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>  @Override<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>  public long getMemStoreDataSize() {<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>    return memStoreSizing.getDataSize();<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>  @Override<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>  public long getMemStoreHeapSize() {<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>    return memStoreSizing.getHeapSize();<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>  }<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span><a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>  @Override<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>  public long getMemStoreOffHeapSize() {<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>    return memStoreSizing.getOffHeapSize();<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>  }<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span><a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>  /** @return store services for this region, to access services required by store level needs */<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>  public RegionServicesForStores getRegionServicesForStores() {<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>    return regionServicesForStores;<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>  @Override<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>  public long getNumMutationsWithoutWAL() {<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>    return numMutationsWithoutWAL.sum();<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>  @Override<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>  public long getDataInMemoryWithoutWAL() {<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>    return dataInMemoryWithoutWAL.sum();<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>  }<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span><a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>  @Override<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>  public long getBlockedRequestsCount() {<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>    return blockedRequestsCount.sum();<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>  }<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span><a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>  @Override<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>  public long getCheckAndMutateChecksPassed() {<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>    return checkAndMutateChecksPassed.sum();<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 long getCheckAndMutateChecksFailed() {<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    return checkAndMutateChecksFailed.sum();<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>  // TODO Needs to check whether we should expose our metrics system to CPs. If CPs themselves doing<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>  // the op and bypassing the core, this might be needed? Should be stop supporting the bypass<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>  // feature?<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>  public MetricsRegion getMetrics() {<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>    return metricsRegion;<a name="line.1342"></a>
+<span class="sourceLineNo">1237</span>  /**<a name="line.1237"></a>
+<span class="sourceLineNo">1238</span>   * Increase the size of mem store in this region and the size of global mem<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span>   * store<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span>   */<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>  }<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span><a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>    if (this.rsAccounting != null) {<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>    }<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>    long dataSize =<a name="line.1249"></a>
+<span class="sourceLineNo">1250</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1250"></a>
+<span class="sourceLineNo">1251</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>  }<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span><a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span>  }<a name="line.1256"></a>
+<span class="sourceLineNo">1257</span><a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>    if (this.rsAccounting != null) {<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>    }<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>    long dataSize =<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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>  private void checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>    if (memStoreDataSize &lt; 0) {<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>    }<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>  }<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span><a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>  @Override<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>  public RegionInfo getRegionInfo() {<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>    return this.fs.getRegionInfo();<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>  }<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>   * @

<TRUNCATED>

[14/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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 3559952..bd7445a 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
@@ -359,2396 +359,2401 @@
 <span class="sourceLineNo">351</span>    switch (inMemoryCompaction) {<a name="line.351"></a>
 <span class="sourceLineNo">352</span>      case NONE:<a name="line.352"></a>
 <span class="sourceLineNo">353</span>        ms = ReflectionUtils.newInstance(DefaultMemStore.class,<a name="line.353"></a>
-<span class="sourceLineNo">354</span>            new Object[]{conf, this.comparator});<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        break;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      default:<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        Class&lt;? extends CompactingMemStore&gt; clz = conf.getClass(MEMSTORE_CLASS_NAME,<a name="line.357"></a>
-<span class="sourceLineNo">358</span>            CompactingMemStore.class, CompactingMemStore.class);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        ms = ReflectionUtils.newInstance(clz, new Object[]{conf, this.comparator, this,<a name="line.359"></a>
-<span class="sourceLineNo">360</span>            this.getHRegion().getRegionServicesForStores(), inMemoryCompaction});<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    }<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    return ms;<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  }<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>  /**<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * Creates the cache config.<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * @param family The current column family.<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   */<a name="line.368"></a>
-<span class="sourceLineNo">369</span>  protected void createCacheConf(final ColumnFamilyDescriptor family) {<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    this.cacheConf = new CacheConfig(conf, family);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  }<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>  /**<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * Creates the store engine configured for the given Store.<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   * @param store The store. An unfortunate dependency needed due to it<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   *              being passed to coprocessors via the compactor.<a name="line.376"></a>
-<span class="sourceLineNo">377</span>   * @param conf Store configuration.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>   * @param kvComparator KVComparator for storeFileManager.<a name="line.378"></a>
-<span class="sourceLineNo">379</span>   * @return StoreEngine to use.<a name="line.379"></a>
-<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  protected StoreEngine&lt;?, ?, ?, ?&gt; createStoreEngine(HStore store, Configuration conf,<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      CellComparator kvComparator) throws IOException {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    return StoreEngine.create(store, conf, comparator);<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>   * @param family<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * @return TTL in seconds of the specified family<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   */<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  public static long determineTTLFromFamily(final ColumnFamilyDescriptor family) {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    // HCD.getTimeToLive returns ttl in seconds.  Convert to milliseconds.<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    long ttl = family.getTimeToLive();<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    if (ttl == HConstants.FOREVER) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      // Default is unlimited ttl.<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      ttl = Long.MAX_VALUE;<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    } else if (ttl == -1) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      ttl = Long.MAX_VALUE;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    } else {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      // Second -&gt; ms adjust for user data<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      ttl *= 1000;<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    return ttl;<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  }<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>  @Override<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  public String getColumnFamilyName() {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    return this.family.getNameAsString();<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>  @Override<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  public TableName getTableName() {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    return this.getRegionInfo().getTable();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  }<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>  @Override<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  public FileSystem getFileSystem() {<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    return this.fs.getFileSystem();<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>  public HRegionFileSystem getRegionFileSystem() {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    return this.fs;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  }<a name="line.422"></a>
-<span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>  /* Implementation of StoreConfigInformation */<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  @Override<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  public long getStoreFileTtl() {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    // TTL only applies if there's no MIN_VERSIONs setting on the column.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    return (this.scanInfo.getMinVersions() == 0) ? this.scanInfo.getTtl() : Long.MAX_VALUE;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  }<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>  @Override<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  public long getMemStoreFlushSize() {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    // TODO: Why is this in here?  The flushsize of the region rather than the store?  St.Ack<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    return this.region.memstoreFlushSize;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  @Override<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  public MemStoreSize getFlushableSize() {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    return this.memstore.getFlushableSize();<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>  @Override<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  public MemStoreSize getSnapshotSize() {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    return this.memstore.getSnapshotSize();<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>  @Override<a name="line.447"></a>
-<span class="sourceLineNo">448</span>  public long getCompactionCheckMultiplier() {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    return this.compactionCheckMultiplier;<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  @Override<a name="line.452"></a>
-<span class="sourceLineNo">453</span>  public long getBlockingFileCount() {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    return blockingFileCount;<a name="line.454"></a>
-<span class="sourceLineNo">455</span>  }<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  /* End implementation of StoreConfigInformation */<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>   * Returns the configured bytesPerChecksum value.<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   * @param conf The configuration<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * @return The bytesPerChecksum that is set in the configuration<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   */<a name="line.462"></a>
-<span class="sourceLineNo">463</span>  public static int getBytesPerChecksum(Configuration conf) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    return conf.getInt(HConstants.BYTES_PER_CHECKSUM,<a name="line.464"></a>
-<span class="sourceLineNo">465</span>                       HFile.DEFAULT_BYTES_PER_CHECKSUM);<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>  /**<a name="line.468"></a>
-<span class="sourceLineNo">469</span>   * Returns the configured checksum algorithm.<a name="line.469"></a>
-<span class="sourceLineNo">470</span>   * @param conf The configuration<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   * @return The checksum algorithm that is set in the configuration<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   */<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  public static ChecksumType getChecksumType(Configuration conf) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    String checksumName = conf.get(HConstants.CHECKSUM_TYPE_NAME);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    if (checksumName == null) {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      return ChecksumType.getDefaultChecksumType();<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    } else {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      return ChecksumType.nameToType(checksumName);<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>   * @return how many bytes to write between status checks<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   */<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  public static int getCloseCheckInterval() {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    return closeCheckInterval;<a name="line.486"></a>
-<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>  @Override<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  public ColumnFamilyDescriptor getColumnFamilyDescriptor() {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    return this.family;<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>  @Override<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  public OptionalLong getMaxSequenceId() {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    return StoreUtils.getMaxSequenceIdInList(this.getStorefiles());<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  }<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>  @Override<a name="line.499"></a>
-<span class="sourceLineNo">500</span>  public OptionalLong getMaxMemStoreTS() {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    return StoreUtils.getMaxMemStoreTSInList(this.getStorefiles());<a name="line.501"></a>
-<span class="sourceLineNo">502</span>  }<a name="line.502"></a>
-<span class="sourceLineNo">503</span><a name="line.503"></a>
-<span class="sourceLineNo">504</span>  /**<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @param tabledir {@link Path} to where the table is being stored<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @param hri {@link RegionInfo} for the region.<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * @param family {@link ColumnFamilyDescriptor} describing the column family<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   * @return Path to family/Store home directory.<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   */<a name="line.509"></a>
-<span class="sourceLineNo">510</span>  @Deprecated<a name="line.510"></a>
-<span class="sourceLineNo">511</span>  public static Path getStoreHomedir(final Path tabledir,<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      final RegionInfo hri, final byte[] family) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    return getStoreHomedir(tabledir, hri.getEncodedName(), family);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>  }<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>   * @param tabledir {@link Path} to where the table is being stored<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * @param encodedName Encoded region name.<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * @param family {@link ColumnFamilyDescriptor} describing the column family<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   * @return Path to family/Store home directory.<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   */<a name="line.521"></a>
-<span class="sourceLineNo">522</span>  @Deprecated<a name="line.522"></a>
-<span class="sourceLineNo">523</span>  public static Path getStoreHomedir(final Path tabledir,<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      final String encodedName, final byte[] family) {<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    return new Path(tabledir, new Path(encodedName, Bytes.toString(family)));<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>   * @return the data block encoder<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   */<a name="line.530"></a>
-<span class="sourceLineNo">531</span>  public HFileDataBlockEncoder getDataBlockEncoder() {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    return dataBlockEncoder;<a name="line.532"></a>
-<span class="sourceLineNo">533</span>  }<a name="line.533"></a>
-<span class="sourceLineNo">534</span><a name="line.534"></a>
-<span class="sourceLineNo">535</span>  /**<a name="line.535"></a>
-<span class="sourceLineNo">536</span>   * Should be used only in tests.<a name="line.536"></a>
-<span class="sourceLineNo">537</span>   * @param blockEncoder the block delta encoder to use<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   */<a name="line.538"></a>
-<span class="sourceLineNo">539</span>  void setDataBlockEncoderInTest(HFileDataBlockEncoder blockEncoder) {<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    this.dataBlockEncoder = blockEncoder;<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>  /**<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   * Creates an unsorted list of StoreFile loaded in parallel<a name="line.544"></a>
-<span class="sourceLineNo">545</span>   * from the given directory.<a name="line.545"></a>
-<span class="sourceLineNo">546</span>   * @throws IOException<a name="line.546"></a>
-<span class="sourceLineNo">547</span>   */<a name="line.547"></a>
-<span class="sourceLineNo">548</span>  private List&lt;HStoreFile&gt; loadStoreFiles() throws IOException {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    Collection&lt;StoreFileInfo&gt; files = fs.getStoreFiles(getColumnFamilyName());<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    return openStoreFiles(files);<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>  private List&lt;HStoreFile&gt; openStoreFiles(Collection&lt;StoreFileInfo&gt; files) throws IOException {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    if (CollectionUtils.isEmpty(files)) {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      return Collections.emptyList();<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    }<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    // initialize the thread pool for opening store files in parallel..<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    ThreadPoolExecutor storeFileOpenerThreadPool =<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      this.region.getStoreFileOpenAndCloseThreadPool("StoreFileOpenerThread-"<a name="line.559"></a>
-<span class="sourceLineNo">560</span>        + this.region.getRegionInfo().getEncodedName() + "-" + this.getColumnFamilyName());<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    CompletionService&lt;HStoreFile&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeFileOpenerThreadPool);<a name="line.561"></a>
-<span class="sourceLineNo">562</span><a name="line.562"></a>
-<span class="sourceLineNo">563</span>    int totalValidStoreFile = 0;<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    for (StoreFileInfo storeFileInfo : files) {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      // open each store file in parallel<a name="line.565"></a>
-<span class="sourceLineNo">566</span>      completionService.submit(() -&gt; this.createStoreFileAndReader(storeFileInfo));<a name="line.566"></a>
-<span class="sourceLineNo">567</span>      totalValidStoreFile++;<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>    ArrayList&lt;HStoreFile&gt; results = new ArrayList&lt;&gt;(files.size());<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    IOException ioe = null;<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    try {<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      for (int i = 0; i &lt; totalValidStoreFile; i++) {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>        try {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>          HStoreFile storeFile = completionService.take().get();<a name="line.575"></a>
-<span class="sourceLineNo">576</span>          if (storeFile != null) {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>            long length = storeFile.getReader().length();<a name="line.577"></a>
-<span class="sourceLineNo">578</span>            this.storeSize.addAndGet(length);<a name="line.578"></a>
-<span class="sourceLineNo">579</span>            this.totalUncompressedBytes<a name="line.579"></a>
-<span class="sourceLineNo">580</span>                .addAndGet(storeFile.getReader().getTotalUncompressedBytes());<a name="line.580"></a>
-<span class="sourceLineNo">581</span>            LOG.debug("loaded {}", storeFile);<a name="line.581"></a>
-<span class="sourceLineNo">582</span>            results.add(storeFile);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>          }<a name="line.583"></a>
-<span class="sourceLineNo">584</span>        } catch (InterruptedException e) {<a name="line.584"></a>
-<span class="sourceLineNo">585</span>          if (ioe == null) ioe = new InterruptedIOException(e.getMessage());<a name="line.585"></a>
-<span class="sourceLineNo">586</span>        } catch (ExecutionException e) {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>          if (ioe == null) ioe = new IOException(e.getCause());<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>    } finally {<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      storeFileOpenerThreadPool.shutdownNow();<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    }<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    if (ioe != null) {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      // close StoreFile readers<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      boolean evictOnClose =<a name="line.595"></a>
-<span class="sourceLineNo">596</span>          cacheConf != null? cacheConf.shouldEvictOnClose(): true;<a name="line.596"></a>
-<span class="sourceLineNo">597</span>      for (HStoreFile file : results) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>        try {<a name="line.598"></a>
-<span class="sourceLineNo">599</span>          if (file != null) {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>            file.closeStoreFile(evictOnClose);<a name="line.600"></a>
-<span class="sourceLineNo">601</span>          }<a name="line.601"></a>
-<span class="sourceLineNo">602</span>        } catch (IOException e) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>          LOG.warn("Could not close store file", e);<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>      throw ioe;<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>    return results;<a name="line.609"></a>
-<span class="sourceLineNo">610</span>  }<a name="line.610"></a>
-<span class="sourceLineNo">611</span><a name="line.611"></a>
-<span class="sourceLineNo">612</span>  @Override<a name="line.612"></a>
-<span class="sourceLineNo">613</span>  public void refreshStoreFiles() throws IOException {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    Collection&lt;StoreFileInfo&gt; newFiles = fs.getStoreFiles(getColumnFamilyName());<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    refreshStoreFilesInternal(newFiles);<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>  /**<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * Replaces the store files that the store has with the given files. Mainly used by secondary<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   * region replicas to keep up to date with the primary region files.<a name="line.620"></a>
-<span class="sourceLineNo">621</span>   * @throws IOException<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   */<a name="line.622"></a>
-<span class="sourceLineNo">623</span>  public void refreshStoreFiles(Collection&lt;String&gt; newFiles) throws IOException {<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    List&lt;StoreFileInfo&gt; storeFiles = new ArrayList&lt;&gt;(newFiles.size());<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    for (String file : newFiles) {<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      storeFiles.add(fs.getStoreFileInfo(getColumnFamilyName(), file));<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    }<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    refreshStoreFilesInternal(storeFiles);<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>  /**<a name="line.631"></a>
-<span class="sourceLineNo">632</span>   * Checks the underlying store files, and opens the files that  have not<a name="line.632"></a>
-<span class="sourceLineNo">633</span>   * been opened, and removes the store file readers for store files no longer<a name="line.633"></a>
-<span class="sourceLineNo">634</span>   * available. Mainly used by secondary region replicas to keep up to date with<a name="line.634"></a>
-<span class="sourceLineNo">635</span>   * the primary region files.<a name="line.635"></a>
-<span class="sourceLineNo">636</span>   * @throws IOException<a name="line.636"></a>
-<span class="sourceLineNo">637</span>   */<a name="line.637"></a>
-<span class="sourceLineNo">638</span>  private void refreshStoreFilesInternal(Collection&lt;StoreFileInfo&gt; newFiles) throws IOException {<a name="line.638"></a>
-<span class="sourceLineNo">639</span>    StoreFileManager sfm = storeEngine.getStoreFileManager();<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    Collection&lt;HStoreFile&gt; currentFiles = sfm.getStorefiles();<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    Collection&lt;HStoreFile&gt; compactedFiles = sfm.getCompactedfiles();<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    if (currentFiles == null) currentFiles = Collections.emptySet();<a name="line.642"></a>
-<span class="sourceLineNo">643</span>    if (newFiles == null) newFiles = Collections.emptySet();<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    if (compactedFiles == null) compactedFiles = Collections.emptySet();<a name="line.644"></a>
-<span class="sourceLineNo">645</span><a name="line.645"></a>
-<span class="sourceLineNo">646</span>    HashMap&lt;StoreFileInfo, HStoreFile&gt; currentFilesSet = new HashMap&lt;&gt;(currentFiles.size());<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    for (HStoreFile sf : currentFiles) {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>      currentFilesSet.put(sf.getFileInfo(), sf);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    }<a name="line.649"></a>
-<span class="sourceLineNo">650</span>    HashMap&lt;StoreFileInfo, HStoreFile&gt; compactedFilesSet = new HashMap&lt;&gt;(compactedFiles.size());<a name="line.650"></a>
-<span class="sourceLineNo">651</span>    for (HStoreFile sf : compactedFiles) {<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      compactedFilesSet.put(sf.getFileInfo(), sf);<a name="line.652"></a>
-<span class="sourceLineNo">653</span>    }<a name="line.653"></a>
-<span class="sourceLineNo">654</span><a name="line.654"></a>
-<span class="sourceLineNo">655</span>    Set&lt;StoreFileInfo&gt; newFilesSet = new HashSet&lt;StoreFileInfo&gt;(newFiles);<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    // Exclude the files that have already been compacted<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    newFilesSet = Sets.difference(newFilesSet, compactedFilesSet.keySet());<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    Set&lt;StoreFileInfo&gt; toBeAddedFiles = Sets.difference(newFilesSet, currentFilesSet.keySet());<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    Set&lt;StoreFileInfo&gt; toBeRemovedFiles = Sets.difference(currentFilesSet.keySet(), newFilesSet);<a name="line.659"></a>
-<span class="sourceLineNo">660</span><a name="line.660"></a>
-<span class="sourceLineNo">661</span>    if (toBeAddedFiles.isEmpty() &amp;&amp; toBeRemovedFiles.isEmpty()) {<a name="line.661"></a>
-<span class="sourceLineNo">662</span>      return;<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>    LOG.info("Refreshing store files for region " + this.getRegionInfo().getRegionNameAsString()<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      + " files to add: " + toBeAddedFiles + " files to remove: " + toBeRemovedFiles);<a name="line.666"></a>
-<span class="sourceLineNo">667</span><a name="line.667"></a>
-<span class="sourceLineNo">668</span>    Set&lt;HStoreFile&gt; toBeRemovedStoreFiles = new HashSet&lt;&gt;(toBeRemovedFiles.size());<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    for (StoreFileInfo sfi : toBeRemovedFiles) {<a name="line.669"></a>
-<span class="sourceLineNo">670</span>      toBeRemovedStoreFiles.add(currentFilesSet.get(sfi));<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    }<a name="line.671"></a>
-<span class="sourceLineNo">672</span><a name="line.672"></a>
-<span class="sourceLineNo">673</span>    // try to open the files<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    List&lt;HStoreFile&gt; openedFiles = openStoreFiles(toBeAddedFiles);<a name="line.674"></a>
-<span class="sourceLineNo">675</span><a name="line.675"></a>
-<span class="sourceLineNo">676</span>    // propogate the file changes to the underlying store file manager<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    replaceStoreFiles(toBeRemovedStoreFiles, openedFiles); //won't throw an exception<a name="line.677"></a>
-<span class="sourceLineNo">678</span><a name="line.678"></a>
-<span class="sourceLineNo">679</span>    // Advance the memstore read point to be at least the new store files seqIds so that<a name="line.679"></a>
-<span class="sourceLineNo">680</span>    // readers might pick it up. This assumes that the store is not getting any writes (otherwise<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    // in-flight transactions might be made visible)<a name="line.681"></a>
-<span class="sourceLineNo">682</span>    if (!toBeAddedFiles.isEmpty()) {<a name="line.682"></a>
-<span class="sourceLineNo">683</span>      // we must have the max sequence id here as we do have several store files<a name="line.683"></a>
-<span class="sourceLineNo">684</span>      region.getMVCC().advanceTo(this.getMaxSequenceId().getAsLong());<a name="line.684"></a>
-<span class="sourceLineNo">685</span>    }<a name="line.685"></a>
-<span class="sourceLineNo">686</span><a name="line.686"></a>
-<span class="sourceLineNo">687</span>    completeCompaction(toBeRemovedStoreFiles);<a name="line.687"></a>
-<span class="sourceLineNo">688</span>  }<a name="line.688"></a>
-<span class="sourceLineNo">689</span><a name="line.689"></a>
-<span class="sourceLineNo">690</span>  @VisibleForTesting<a name="line.690"></a>
-<span class="sourceLineNo">691</span>  protected HStoreFile createStoreFileAndReader(final Path p) throws IOException {<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    StoreFileInfo info = new StoreFileInfo(conf, this.getFileSystem(), p);<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    return createStoreFileAndReader(info);<a name="line.693"></a>
-<span class="sourceLineNo">694</span>  }<a name="line.694"></a>
-<span class="sourceLineNo">695</span><a name="line.695"></a>
-<span class="sourceLineNo">696</span>  private HStoreFile createStoreFileAndReader(StoreFileInfo info) throws IOException {<a name="line.696"></a>
-<span class="sourceLineNo">697</span>    info.setRegionCoprocessorHost(this.region.getCoprocessorHost());<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    HStoreFile storeFile = new HStoreFile(this.getFileSystem(), info, this.conf, this.cacheConf,<a name="line.698"></a>
-<span class="sourceLineNo">699</span>        this.family.getBloomFilterType(), isPrimaryReplicaStore());<a name="line.699"></a>
-<span class="sourceLineNo">700</span>    storeFile.initReader();<a name="line.700"></a>
-<span class="sourceLineNo">701</span>    return storeFile;<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>   * This message intends to inform the MemStore that next coming updates<a name="line.705"></a>
-<span class="sourceLineNo">706</span>   * are going to be part of the replaying edits from WAL<a name="line.706"></a>
-<span class="sourceLineNo">707</span>   */<a name="line.707"></a>
-<span class="sourceLineNo">708</span>  public void startReplayingFromWAL(){<a name="line.708"></a>
-<span class="sourceLineNo">709</span>    this.memstore.startReplayingFromWAL();<a name="line.709"></a>
-<span class="sourceLineNo">710</span>  }<a name="line.710"></a>
-<span class="sourceLineNo">711</span><a name="line.711"></a>
-<span class="sourceLineNo">712</span>  /**<a name="line.712"></a>
-<span class="sourceLineNo">713</span>   * This message intends to inform the MemStore that the replaying edits from WAL<a name="line.713"></a>
-<span class="sourceLineNo">714</span>   * are done<a name="line.714"></a>
-<span class="sourceLineNo">715</span>   */<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  public void stopReplayingFromWAL(){<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    this.memstore.stopReplayingFromWAL();<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>  /**<a name="line.720"></a>
-<span class="sourceLineNo">721</span>   * Adds a value to the memstore<a name="line.721"></a>
-<span class="sourceLineNo">722</span>   */<a name="line.722"></a>
-<span class="sourceLineNo">723</span>  public void add(final Cell cell, MemStoreSizing memstoreSizing) {<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    lock.readLock().lock();<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    try {<a name="line.725"></a>
-<span class="sourceLineNo">726</span>      if (this.currentParallelPutCount.getAndIncrement() &gt; this.parallelPutCountPrintThreshold) {<a name="line.726"></a>
-<span class="sourceLineNo">727</span>        LOG.trace(this.getTableName() + "tableName={}, encodedName={}, columnFamilyName={} is " +<a name="line.727"></a>
-<span class="sourceLineNo">728</span>          "too busy!", this.getRegionInfo().getEncodedName(), this .getColumnFamilyName());<a name="line.728"></a>
-<span class="sourceLineNo">729</span>      }<a name="line.729"></a>
-<span class="sourceLineNo">730</span>      this.memstore.add(cell, memstoreSizing);<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    } finally {<a name="line.731"></a>
-<span class="sourceLineNo">732</span>      lock.readLock().unlock();<a name="line.732"></a>
-<span class="sourceLineNo">733</span>      currentParallelPutCount.decrementAndGet();<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><a name="line.736"></a>
-<span class="sourceLineNo">737</span>  /**<a name="line.737"></a>
-<span class="sourceLineNo">738</span>   * Adds the specified value to the memstore<a name="line.738"></a>
-<span class="sourceLineNo">739</span>   */<a name="line.739"></a>
-<span class="sourceLineNo">740</span>  public void add(final Iterable&lt;Cell&gt; cells, MemStoreSizing memstoreSizing) {<a name="line.740"></a>
-<span class="sourceLineNo">741</span>    lock.readLock().lock();<a name="line.741"></a>
-<span class="sourceLineNo">742</span>    try {<a name="line.742"></a>
-<span class="sourceLineNo">743</span>      if (this.currentParallelPutCount.getAndIncrement() &gt; this.parallelPutCountPrintThreshold) {<a name="line.743"></a>
-<span class="sourceLineNo">744</span>        LOG.trace(this.getTableName() + "tableName={}, encodedName={}, columnFamilyName={} is " +<a name="line.744"></a>
-<span class="sourceLineNo">745</span>            "too busy!", this.getRegionInfo().getEncodedName(), this .getColumnFamilyName());<a name="line.745"></a>
-<span class="sourceLineNo">746</span>      }<a name="line.746"></a>
-<span class="sourceLineNo">747</span>      memstore.add(cells, memstoreSizing);<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    } finally {<a name="line.748"></a>
-<span class="sourceLineNo">749</span>      lock.readLock().unlock();<a name="line.749"></a>
-<span class="sourceLineNo">750</span>      currentParallelPutCount.decrementAndGet();<a name="line.750"></a>
-<span class="sourceLineNo">751</span>    }<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 long timeOfOldestEdit() {<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    return memstore.timeOfOldestEdit();<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>  /**<a name="line.759"></a>
-<span class="sourceLineNo">760</span>   * @return All store files.<a name="line.760"></a>
-<span class="sourceLineNo">761</span>   */<a name="line.761"></a>
-<span class="sourceLineNo">762</span>  @Override<a name="line.762"></a>
-<span class="sourceLineNo">763</span>  public Collection&lt;HStoreFile&gt; getStorefiles() {<a name="line.763"></a>
-<span class="sourceLineNo">764</span>    return this.storeEngine.getStoreFileManager().getStorefiles();<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>  @Override<a name="line.767"></a>
-<span class="sourceLineNo">768</span>  public Collection&lt;HStoreFile&gt; getCompactedFiles() {<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    return this.storeEngine.getStoreFileManager().getCompactedfiles();<a name="line.769"></a>
-<span class="sourceLineNo">770</span>  }<a name="line.770"></a>
-<span class="sourceLineNo">771</span><a name="line.771"></a>
-<span class="sourceLineNo">772</span>  /**<a name="line.772"></a>
-<span class="sourceLineNo">773</span>   * This throws a WrongRegionException if the HFile does not fit in this region, or an<a name="line.773"></a>
-<span class="sourceLineNo">774</span>   * InvalidHFileException if the HFile is not valid.<a name="line.774"></a>
-<span class="sourceLineNo">775</span>   */<a name="line.775"></a>
-<span class="sourceLineNo">776</span>  public void assertBulkLoadHFileOk(Path srcPath) throws IOException {<a name="line.776"></a>
-<span class="sourceLineNo">777</span>    HFile.Reader reader  = null;<a name="line.777"></a>
-<span class="sourceLineNo">778</span>    try {<a name="line.778"></a>
-<span class="sourceLineNo">779</span>      LOG.info("Validating hfile at " + srcPath + " for inclusion in "<a name="line.779"></a>
-<span class="sourceLineNo">780</span>          + "store " + this + " region " + this.getRegionInfo().getRegionNameAsString());<a name="line.780"></a>
-<span class="sourceLineNo">781</span>      reader = HFile.createReader(srcPath.getFileSystem(conf), srcPath, cacheConf,<a name="line.781"></a>
-<span class="sourceLineNo">782</span>        isPrimaryReplicaStore(), conf);<a name="line.782"></a>
-<span class="sourceLineNo">783</span>      reader.loadFileInfo();<a name="line.783"></a>
-<span class="sourceLineNo">784</span><a name="line.784"></a>
-<span class="sourceLineNo">785</span>      Optional&lt;byte[]&gt; firstKey = reader.getFirstRowKey();<a name="line.785"></a>
-<span class="sourceLineNo">786</span>      Preconditions.checkState(firstKey.isPresent(), "First key can not be null");<a name="line.786"></a>
-<span class="sourceLineNo">787</span>      Optional&lt;Cell&gt; lk = reader.getLastKey();<a name="line.787"></a>
-<span class="sourceLineNo">788</span>      Preconditions.checkState(lk.isPresent(), "Last key can not be null");<a name="line.788"></a>
-<span class="sourceLineNo">789</span>      byte[] lastKey =  CellUtil.cloneRow(lk.get());<a name="line.789"></a>
-<span class="sourceLineNo">790</span><a name="line.790"></a>
-<span class="sourceLineNo">791</span>      if (LOG.isDebugEnabled()) {<a name="line.791"></a>
-<span class="sourceLineNo">792</span>        LOG.debug("HFile bounds: first=" + Bytes.toStringBinary(firstKey.get()) +<a name="line.792"></a>
-<span class="sourceLineNo">793</span>            " last=" + Bytes.toStringBinary(lastKey));<a name="line.793"></a>
-<span class="sourceLineNo">794</span>        LOG.debug("Region bounds: first=" +<a name="line.794"></a>
-<span class="sourceLineNo">795</span>            Bytes.toStringBinary(getRegionInfo().getStartKey()) +<a name="line.795"></a>
-<span class="sourceLineNo">796</span>            " last=" + Bytes.toStringBinary(getRegionInfo().getEndKey()));<a name="line.796"></a>
-<span class="sourceLineNo">797</span>      }<a name="line.797"></a>
-<span class="sourceLineNo">798</span><a name="line.798"></a>
-<span class="sourceLineNo">799</span>      if (!this.getRegionInfo().containsRange(firstKey.get(), lastKey)) {<a name="line.799"></a>
-<span class="sourceLineNo">800</span>        throw new WrongRegionException(<a name="line.800"></a>
-<span class="sourceLineNo">801</span>            "Bulk load file " + srcPath.toString() + " does not fit inside region "<a name="line.801"></a>
-<span class="sourceLineNo">802</span>            + this.getRegionInfo().getRegionNameAsString());<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>      if(reader.length() &gt; conf.getLong(HConstants.HREGION_MAX_FILESIZE,<a name="line.805"></a>
-<span class="sourceLineNo">806</span>          HConstants.DEFAULT_MAX_FILE_SIZE)) {<a name="line.806"></a>
-<span class="sourceLineNo">807</span>        LOG.warn("Trying to bulk load hfile " + srcPath + " with size: " +<a name="line.807"></a>
-<span class="sourceLineNo">808</span>            reader.length() + " bytes can be problematic as it may lead to oversplitting.");<a name="line.808"></a>
-<span class="sourceLineNo">809</span>      }<a name="line.809"></a>
-<span class="sourceLineNo">810</span><a name="line.810"></a>
-<span class="sourceLineNo">811</span>      if (verifyBulkLoads) {<a name="line.811"></a>
-<span class="sourceLineNo">812</span>        long verificationStartTime = EnvironmentEdgeManager.currentTime();<a name="line.812"></a>
-<span class="sourceLineNo">813</span>        LOG.info("Full verification started for bulk load hfile: {}", srcPath);<a name="line.813"></a>
-<span class="sourceLineNo">814</span>        Cell prevCell = null;<a name="line.814"></a>
-<span class="sourceLineNo">815</span>        HFileScanner scanner = reader.getScanner(false, false, false);<a name="line.815"></a>
-<span class="sourceLineNo">816</span>        scanner.seekTo();<a name="line.816"></a>
-<span class="sourceLineNo">817</span>        do {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>          Cell cell = scanner.getCell();<a name="line.818"></a>
-<span class="sourceLineNo">819</span>          if (prevCell != null) {<a name="line.819"></a>
-<span class="sourceLineNo">820</span>            if (comparator.compareRows(prevCell, cell) &gt; 0) {<a name="line.820"></a>
-<span class="sourceLineNo">821</span>              throw new InvalidHFileException("Previous row is greater than"<a name="line.821"></a>
-<span class="sourceLineNo">822</span>                  + " current row: path=" + srcPath + " previous="<a name="line.822"></a>
-<span class="sourceLineNo">823</span>                  + CellUtil.getCellKeyAsString(prevCell) + " current="<a name="line.823"></a>
-<span class="sourceLineNo">824</span>                  + CellUtil.getCellKeyAsString(cell));<a name="line.824"></a>
-<span class="sourceLineNo">825</span>            }<a name="line.825"></a>
-<span class="sourceLineNo">826</span>            if (CellComparator.getInstance().compareFamilies(prevCell, cell) != 0) {<a name="line.826"></a>
-<span class="sourceLineNo">827</span>              throw new InvalidHFileException("Previous key had different"<a name="line.827"></a>
-<span class="sourceLineNo">828</span>                  + " family compared to current key: path=" + srcPath<a name="line.828"></a>
-<span class="sourceLineNo">829</span>                  + " previous="<a name="line.829"></a>
-<span class="sourceLineNo">830</span>                  + Bytes.toStringBinary(prevCell.getFamilyArray(), prevCell.getFamilyOffset(),<a name="line.830"></a>
-<span class="sourceLineNo">831</span>                      prevCell.getFamilyLength())<a name="line.831"></a>
-<span class="sourceLineNo">832</span>                  + " current="<a name="line.832"></a>
-<span class="sourceLineNo">833</span>                  + Bytes.toStringBinary(cell.getFamilyArray(), cell.getFamilyOffset(),<a name="line.833"></a>
-<span class="sourceLineNo">834</span>                      cell.getFamilyLength()));<a name="line.834"></a>
-<span class="sourceLineNo">835</span>            }<a name="line.835"></a>
-<span class="sourceLineNo">836</span>          }<a name="line.836"></a>
-<span class="sourceLineNo">837</span>          prevCell = cell;<a name="line.837"></a>
-<span class="sourceLineNo">838</span>        } while (scanner.next());<a name="line.838"></a>
-<span class="sourceLineNo">839</span>      LOG.info("Full verification complete for bulk load hfile: " + srcPath.toString()<a name="line.839"></a>
-<span class="sourceLineNo">840</span>         + " took " + (EnvironmentEdgeManager.currentTime() - verificationStartTime)<a name="line.840"></a>
-<span class="sourceLineNo">841</span>         + " ms");<a name="line.841"></a>
-<span class="sourceLineNo">842</span>      }<a name="line.842"></a>
-<span class="sourceLineNo">843</span>    } finally {<a name="line.843"></a>
-<span class="sourceLineNo">844</span>      if (reader != null) reader.close();<a name="line.844"></a>
-<span class="sourceLineNo">845</span>    }<a name="line.845"></a>
-<span class="sourceLineNo">846</span>  }<a name="line.846"></a>
-<span class="sourceLineNo">847</span><a name="line.847"></a>
-<span class="sourceLineNo">848</span>  /**<a name="line.848"></a>
-<span class="sourceLineNo">849</span>   * This method should only be called from Region. It is assumed that the ranges of values in the<a name="line.849"></a>
-<span class="sourceLineNo">850</span>   * HFile fit within the stores assigned region. (assertBulkLoadHFileOk checks this)<a name="line.850"></a>
-<span class="sourceLineNo">851</span>   *<a name="line.851"></a>
-<span class="sourceLineNo">852</span>   * @param srcPathStr<a name="line.852"></a>
-<span class="sourceLineNo">853</span>   * @param seqNum sequence Id associated with the HFile<a name="line.853"></a>
-<span class="sourceLineNo">854</span>   */<a name="line.854"></a>
-<span class="sourceLineNo">855</span>  public Pair&lt;Path, Path&gt; preBulkLoadHFile(String srcPathStr, long seqNum) throws IOException {<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    Path srcPath = new Path(srcPathStr);<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    return fs.bulkLoadStoreFile(getColumnFamilyName(), srcPath, seqNum);<a name="line.857"></a>
-<span class="sourceLineNo">858</span>  }<a name="line.858"></a>
-<span class="sourceLineNo">859</span><a name="line.859"></a>
-<span class="sourceLineNo">860</span>  public Path bulkLoadHFile(byte[] family, String srcPathStr, Path dstPath) throws IOException {<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    Path srcPath = new Path(srcPathStr);<a name="line.861"></a>
-<span class="sourceLineNo">862</span>    try {<a name="line.862"></a>
-<span class="sourceLineNo">863</span>      fs.commitStoreFile(srcPath, dstPath);<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    } finally {<a name="line.864"></a>
-<span class="sourceLineNo">865</span>      if (this.getCoprocessorHost() != null) {<a name="line.865"></a>
-<span class="sourceLineNo">866</span>        this.getCoprocessorHost().postCommitStoreFile(family, srcPath, dstPath);<a name="line.866"></a>
-<span class="sourceLineNo">867</span>      }<a name="line.867"></a>
-<span class="sourceLineNo">868</span>    }<a name="line.868"></a>
-<span class="sourceLineNo">869</span><a name="line.869"></a>
-<span class="sourceLineNo">870</span>    LOG.info("Loaded HFile " + srcPath + " into store '" + getColumnFamilyName() + "' as "<a name="line.870"></a>
-<span class="sourceLineNo">871</span>        + dstPath + " - updating store file list.");<a name="line.871"></a>
-<span class="sourceLineNo">872</span><a name="line.872"></a>
-<span class="sourceLineNo">873</span>    HStoreFile sf = createStoreFileAndReader(dstPath);<a name="line.873"></a>
-<span class="sourceLineNo">874</span>    bulkLoadHFile(sf);<a name="line.874"></a>
-<span class="sourceLineNo">875</span><a name="line.875"></a>
-<span class="sourceLineNo">876</span>    LOG.info("Successfully loaded store file {} into store {} (new location: {})",<a name="line.876"></a>
-<span class="sourceLineNo">877</span>        srcPath, this, dstPath);<a name="line.877"></a>
-<span class="sourceLineNo">878</span><a name="line.878"></a>
-<span class="sourceLineNo">879</span>    return dstPath;<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>  public void bulkLoadHFile(StoreFileInfo fileInfo) throws IOException {<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    HStoreFile sf = createStoreFileAndReader(fileInfo);<a name="line.883"></a>
-<span class="sourceLineNo">884</span>    bulkLoadHFile(sf);<a name="line.884"></a>
-<span class="sourceLineNo">885</span>  }<a name="line.885"></a>
-<span class="sourceLineNo">886</span><a name="line.886"></a>
-<span class="sourceLineNo">887</span>  private void bulkLoadHFile(HStoreFile sf) throws IOException {<a name="line.887"></a>
-<span class="sourceLineNo">888</span>    StoreFileReader r = sf.getReader();<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    this.storeSize.addAndGet(r.length());<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    this.totalUncompressedBytes.addAndGet(r.getTotalUncompressedBytes());<a name="line.890"></a>
-<span class="sourceLineNo">891</span><a name="line.891"></a>
-<span class="sourceLineNo">892</span>    // Append the new storefile into the list<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    this.lock.writeLock().lock();<a name="line.893"></a>
-<span class="sourceLineNo">894</span>    try {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      this.storeEngine.getStoreFileManager().insertNewFiles(Lists.newArrayList(sf));<a name="line.895"></a>
-<span class="sourceLineNo">896</span>    } finally {<a name="line.896"></a>
-<span class="sourceLineNo">897</span>      // We need the lock, as long as we are updating the storeFiles<a name="line.897"></a>
-<span class="sourceLineNo">898</span>      // or changing the memstore. Let us release it before calling<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      // notifyChangeReadersObservers. See HBASE-4485 for a possible<a name="line.899"></a>
-<span class="sourceLineNo">900</span>      // deadlock scenario that could have happened if continue to hold<a name="line.900"></a>
-<span class="sourceLineNo">901</span>      // the lock.<a name="line.901"></a>
-<span class="sourceLineNo">902</span>      this.lock.writeLock().unlock();<a name="line.902"></a>
-<span class="sourceLineNo">903</span>    }<a name="line.903"></a>
-<span class="sourceLineNo">904</span>    LOG.info("Loaded HFile " + sf.getFileInfo() + " into store '" + getColumnFamilyName());<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    if (LOG.isTraceEnabled()) {<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      String traceMessage = "BULK LOAD time,size,store size,store files ["<a name="line.906"></a>
-<span class="sourceLineNo">907</span>          + EnvironmentEdgeManager.currentTime() + "," + r.length() + "," + storeSize<a name="line.907"></a>
-<span class="sourceLineNo">908</span>          + "," + storeEngine.getStoreFileManager().getStorefileCount() + "]";<a name="line.908"></a>
-<span class="sourceLineNo">909</span>      LOG.trace(traceMessage);<a name="line.909"></a>
-<span class="sourceLineNo">910</span>    }<a name="line.910"></a>
-<span class="sourceLineNo">911</span>  }<a name="line.911"></a>
-<span class="sourceLineNo">912</span><a name="line.912"></a>
-<span class="sourceLineNo">913</span>  /**<a name="line.913"></a>
-<span class="sourceLineNo">914</span>   * Close all the readers We don't need to worry about subsequent requests because the Region holds<a name="line.914"></a>
-<span class="sourceLineNo">915</span>   * a write lock that will prevent any more reads or writes.<a name="line.915"></a>
-<span class="sourceLineNo">916</span>   * @return the {@link StoreFile StoreFiles} that were previously being used.<a name="line.916"></a>
-<span class="sourceLineNo">917</span>   * @throws IOException on failure<a name="line.917"></a>
-<span class="sourceLineNo">918</span>   */<a name="line.918"></a>
-<span class="sourceLineNo">919</span>  public ImmutableCollection&lt;HStoreFile&gt; close() throws IOException {<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    this.archiveLock.lock();<a name="line.920"></a>
-<span class="sourceLineNo">921</span>    this.lock.writeLock().lock();<a name="line.921"></a>
-<span class="sourceLineNo">922</span>    try {<a name="line.922"></a>
-<span class="sourceLineNo">923</span>      // Clear so metrics doesn't find them.<a name="line.923"></a>
-<span class="sourceLineNo">924</span>      ImmutableCollection&lt;HStoreFile&gt; result = storeEngine.getStoreFileManager().clearFiles();<a name="line.924"></a>
-<span class="sourceLineNo">925</span>      Collection&lt;HStoreFile&gt; compactedfiles =<a name="line.925"></a>
-<span class="sourceLineNo">926</span>          storeEngine.getStoreFileManager().clearCompactedFiles();<a name="line.926"></a>
-<span class="sourceLineNo">927</span>      // clear the compacted files<a name="line.927"></a>
-<span class="sourceLineNo">928</span>      if (CollectionUtils.isNotEmpty(compactedfiles)) {<a name="line.928"></a>
-<span class="sourceLineNo">929</span>        removeCompactedfiles(compactedfiles);<a name="line.929"></a>
-<span class="sourceLineNo">930</span>      }<a name="line.930"></a>
-<span class="sourceLineNo">931</span>      if (!result.isEmpty()) {<a name="line.931"></a>
-<span class="sourceLineNo">932</span>        // initialize the thread pool for closing store files in parallel.<a name="line.932"></a>
-<span class="sourceLineNo">933</span>        ThreadPoolExecutor storeFileCloserThreadPool = this.region<a name="line.933"></a>
-<span class="sourceLineNo">934</span>            .getStoreFileOpenAndCloseThreadPool("StoreFileCloserThread-"<a name="line.934"></a>
-<span class="sourceLineNo">935</span>              + this.region.getRegionInfo().getEncodedName() + "-" + this.getColumnFamilyName());<a name="line.935"></a>
-<span class="sourceLineNo">936</span><a name="line.936"></a>
-<span class="sourceLineNo">937</span>        // close each store file in parallel<a name="line.937"></a>
-<span class="sourceLineNo">938</span>        CompletionService&lt;Void&gt; completionService =<a name="line.938"></a>
-<span class="sourceLineNo">939</span>          new ExecutorCompletionService&lt;&gt;(storeFileCloserThreadPool);<a name="line.939"></a>
-<span class="sourceLineNo">940</span>        for (HStoreFile f : result) {<a name="line.940"></a>
-<span class="sourceLineNo">941</span>          completionService.submit(new Callable&lt;Void&gt;() {<a name="line.941"></a>
-<span class="sourceLineNo">942</span>            @Override<a name="line.942"></a>
-<span class="sourceLineNo">943</span>            public Void call() throws IOException {<a name="line.943"></a>
-<span class="sourceLineNo">944</span>              boolean evictOnClose =<a name="line.944"></a>
-<span class="sourceLineNo">945</span>                  cacheConf != null? cacheConf.shouldEvictOnClose(): true;<a name="line.945"></a>
-<span class="sourceLineNo">946</span>              f.closeStoreFile(evictOnClose);<a name="line.946"></a>
-<span class="sourceLineNo">947</span>              return null;<a name="line.947"></a>
-<span class="sourceLineNo">948</span>            }<a name="line.948"></a>
-<span class="sourceLineNo">949</span>          });<a name="line.949"></a>
-<span class="sourceLineNo">950</span>        }<a name="line.950"></a>
-<span class="sourceLineNo">951</span><a name="line.951"></a>
-<span class="sourceLineNo">952</span>        IOException ioe = null;<a name="line.952"></a>
-<span class="sourceLineNo">953</span>        try {<a name="line.953"></a>
-<span class="sourceLineNo">954</span>          for (int i = 0; i &lt; result.size(); i++) {<a name="line.954"></a>
-<span class="sourceLineNo">955</span>            try {<a name="line.955"></a>
-<span class="sourceLineNo">956</span>              Future&lt;Void&gt; future = completionService.take();<a name="line.956"></a>
-<span class="sourceLineNo">957</span>              future.get();<a name="line.957"></a>
-<span class="sourceLineNo">958</span>            } catch (InterruptedException e) {<a name="line.958"></a>
-<span class="sourceLineNo">959</span>              if (ioe == null) {<a name="line.959"></a>
-<span class="sourceLineNo">960</span>                ioe = new InterruptedIOException();<a name="line.960"></a>
-<span class="sourceLineNo">961</span>                ioe.initCause(e);<a name="line.961"></a>
-<span class="sourceLineNo">962</span>              }<a name="line.962"></a>
-<span class="sourceLineNo">963</span>            } catch (ExecutionException e) {<a name="line.963"></a>
-<span class="sourceLineNo">964</span>              if (ioe == null) ioe = new IOException(e.getCause());<a name="line.964"></a>
-<span class="sourceLineNo">965</span>            }<a name="line.965"></a>
-<span class="sourceLineNo">966</span>          }<a name="line.966"></a>
-<span class="sourceLineNo">967</span>        } finally {<a name="line.967"></a>
-<span class="sourceLineNo">968</span>          storeFileCloserThreadPool.shutdownNow();<a name="line.968"></a>
-<span class="sourceLineNo">969</span>        }<a name="line.969"></a>
-<span class="sourceLineNo">970</span>        if (ioe != null) throw ioe;<a name="line.970"></a>
-<span class="sourceLineNo">971</span>      }<a name="line.971"></a>
-<span class="sourceLineNo">972</span>      LOG.trace("Closed {}", this);<a name="line.972"></a>
-<span class="sourceLineNo">973</span>      return result;<a name="line.973"></a>
-<span class="sourceLineNo">974</span>    } finally {<a name="line.974"></a>
-<span class="sourceLineNo">975</span>      this.lock.writeLock().unlock();<a name="line.975"></a>
-<span class="sourceLineNo">976</span>      this.archiveLock.unlock();<a name="line.976"></a>
-<span class="sourceLineNo">977</span>    }<a name="line.977"></a>
-<span class="sourceLineNo">978</span>  }<a name="line.978"></a>
-<span class="sourceLineNo">979</span><a name="line.979"></a>
-<span class="sourceLineNo">980</span>  /**<a name="line.980"></a>
-<span class="sourceLineNo">981</span>   * Snapshot this stores memstore. Call before running<a name="line.981"></a>
-<span class="sourceLineNo">982</span>   * {@link #flushCache(long, MemStoreSnapshot, MonitoredTask, ThroughputController,<a name="line.982"></a>
-<span class="sourceLineNo">983</span>   * FlushLifeCycleTracker)}<a name="line.983"></a>
-<span class="sourceLineNo">984</span>   *  so it has some work to do.<a name="line.984"></a>
-<span class="sourceLineNo">985</span>   */<a name="line.985"></a>
-<span class="sourceLineNo">986</span>  void snapshot() {<a name="line.986"></a>
-<span class="sourceLineNo">987</span>    this.lock.writeLock().lock();<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    try {<a name="line.988"></a>
-<span class="sourceLineNo">989</span>      this.memstore.snapshot();<a name="line.989"></a>
-<span class="sourceLineNo">990</span>    } finally {<a name="line.990"></a>
-<span class="sourceLineNo">991</span>      this.lock.writeLock().unlock();<a name="line.991"></a>
-<span class="sourceLineNo">992</span>    }<a name="line.992"></a>
-<span class="sourceLineNo">993</span>  }<a name="line.993"></a>
-<span class="sourceLineNo">994</span><a name="line.994"></a>
-<span class="sourceLineNo">995</span>  /**<a name="line.995"></a>
-<span class="sourceLineNo">996</span>   * Write out current snapshot. Presumes {@link #snapshot()} has been called previously.<a name="line.996"></a>
-<span class="sourceLineNo">997</span>   * @param logCacheFlushId flush sequence number<a name="line.997"></a>
-<span class="sourceLineNo">998</span>   * @param snapshot<a name="line.998"></a>
-<span class="sourceLineNo">999</span>   * @param status<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>   * @param throughputController<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>   * @return The path name of the tmp file to which the store was flushed<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>   * @throws IOException if exception occurs during process<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>   */<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>  protected List&lt;Path&gt; flushCache(final long logCacheFlushId, MemStoreSnapshot snapshot,<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>      MonitoredTask status, ThroughputController throughputController,<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>      FlushLifeCycleTracker tracker) throws IOException {<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>    // If an exception happens flushing, we let it out without clearing<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>    // the memstore snapshot.  The old snapshot will be returned when we say<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>    // 'snapshot', the next time flush comes around.<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>    // Retry after catching exception when flushing, otherwise server will abort<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    // itself<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    StoreFlusher flusher = storeEngine.getStoreFlusher();<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    IOException lastException = null;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>    for (int i = 0; i &lt; flushRetriesNumber; i++) {<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>      try {<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>        List&lt;Path&gt; pathNames =<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>            flusher.flushSnapshot(snapshot, logCacheFlushId, status, throughputController, tracker);<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>        Path lastPathName = null;<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>        try {<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>          for (Path pathName : pathNames) {<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>            lastPathName = pathName;<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>            validateStoreFile(pathName);<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>          }<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>          return pathNames;<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>        } catch (Exception e) {<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>          LOG.warn("Failed validating store file {}, retrying num={}", lastPathName, i, e);<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>          if (e instanceof IOException) {<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>            lastException = (IOException) e;<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>          } else {<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>            lastException = new IOException(e);<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>          }<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>        }<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>      } catch (IOException e) {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>        LOG.warn("Failed flushing store file, retrying num={}", i, e);<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>        lastException = e;<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>      }<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>      if (lastException != null &amp;&amp; i &lt; (flushRetriesNumber - 1)) {<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>        try {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>          Thread.sleep(pauseTime);<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>        } catch (InterruptedException e) {<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>          IOException iie = new InterruptedIOException();<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>          iie.initCause(e);<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>          throw iie;<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>        }<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>      }<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>    }<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>    throw lastException;<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>  }<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span><a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>  /**<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>   * @param path The pathname of the tmp file into which the store was flushed<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>   * @param logCacheFlushId<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>   * @param status<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>   * @return store file created.<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>   * @throws IOException<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>   */<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>  private HStoreFile commitFile(Path path, long logCacheFlushId, MonitoredTask status)<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      throws IOException {<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>    // Write-out finished successfully, move into the right spot<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>    Path dstPath = fs.commitStoreFile(getColumnFamilyName(), path);<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span><a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>    status.setStatus("Flushing " + this + ": reopening flushed file");<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>    HStoreFile sf = createStoreFileAndReader(dstPath);<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span><a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>    StoreFileReader r = sf.getReader();<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>    this.storeSize.addAndGet(r.length());<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>    this.totalUncompressedBytes.addAndGet(r.getTotalUncompressedBytes());<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span><a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>    if (LOG.isInfoEnabled()) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>      LOG.info("Added " + sf + ", entries=" + r.getEntries() +<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>        ", sequenceid=" + logCacheFlushId +<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>        ", filesize=" + TraditionalBinaryPrefix.long2String(r.length(), "", 1));<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>    }<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>    return sf;<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>  }<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span><a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>  /**<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>   * @param maxKeyCount<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>   * @param compression Compression algorithm to use<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>   * @param isCompaction whether we are creating a new file in a compaction<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>   * @param includeMVCCReadpoint - whether to include MVCC or not<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>   * @param includesTag - includesTag or not<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>   * @return Writer for a new StoreFile in the tmp dir.<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>   */<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>  // TODO : allow the Writer factory to create Writers of ShipperListener type only in case of<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>  // compaction<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>  public StoreFileWriter createWriterInTmp(long maxKeyCount, Compression.Algorithm compression,<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>      boolean isCompaction, boolean includeMVCCReadpoint, boolean includesTag,<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>      boolean shouldDropBehind) throws IOException {<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>    final CacheConfig writerCacheConf;<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>    if (isCompaction) {<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>      // Don't cache data on write on compactions.<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>      writerCacheConf = new CacheConfig(cacheConf);<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>      writerCacheConf.setCacheDataOnWrite(false);<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>    } else {<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>      writerCacheConf = cacheConf;<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    }<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    InetSocketAddress[] favoredNodes = null;<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>    if (region.getRegionServerServices() != null) {<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      favoredNodes = region.getRegionServerServices().getFavoredNodesForRegion(<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>          region.getRegionInfo().getEncodedName());<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>    }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>    HFileContext hFileContext = createFileContext(compression, includeMVCCReadpoint, includesTag,<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>      cryptoContext);<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>    Path familyTempDir = new Path(fs.getTempDir(), family.getNameAsString());<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>    StoreFileWriter.Builder builder = new StoreFileWriter.Builder(conf, writerCacheConf,<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>        this.getFileSystem())<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>            .withOutputDir(familyTempDir)<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>            .withComparator(comparator)<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>            .withBloomType(family.getBloomFilterType())<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>            .withMaxKeyCount(maxKeyCount)<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>            .withFavoredNodes(favoredNodes)<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>            .withFileContext(hFileContext)<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>            .withShouldDropCacheBehind(shouldDropBehind);<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>    return builder.build();<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>  }<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span><a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>  private HFileContext createFileContext(Compression.Algorithm compression,<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>      boolean includeMVCCReadpoint, boolean includesTag, Encryption.Context cryptoContext) {<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>    if (compression == null) {<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span>      compression = HFile.DEFAULT_COMPRESSION_ALGORITHM;<a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>    }<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    HFileContext hFileContext = new HFileContextBuilder()<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>                                .withIncludesMvcc(includeMVCCReadpoint)<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>                                .withIncludesTags(includesTag)<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>                                .withCompression(compression)<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>                                .withCompressTags(family.isCompressTags())<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>                                .withChecksumType(checksumType)<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>                                .withBytesPerCheckSum(bytesPerChecksum)<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>                                .withBlockSize(blocksize)<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>                                .withHBaseCheckSum(true)<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>                                .withDataBlockEncoding(family.getDataBlockEncoding())<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>                                .withEncryptionContext(cryptoContext)<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>                                .withCreateTime(EnvironmentEdgeManager.currentTime())<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>                                .build();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>    return hFileContext;<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>  }<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span><a name="line.1138"></a>
+<span class="sourceLineNo">354</span>            new Object[] { conf, this.comparator,<a name="line.354"></a>
+<span class="sourceLineNo">355</span>                this.getHRegion().getRegionServicesForStores()});<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        break;<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      default:<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        Class&lt;? extends CompactingMemStore&gt; clz = conf.getClass(MEMSTORE_CLASS_NAME,<a name="line.358"></a>
+<span class="sourceLineNo">359</span>            CompactingMemStore.class, CompactingMemStore.class);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>        ms = ReflectionUtils.newInstance(clz, new Object[]{conf, this.comparator, this,<a name="line.360"></a>
+<span class="sourceLineNo">361</span>            this.getHRegion().getRegionServicesForStores(), inMemoryCompaction});<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    return ms;<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>  /**<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   * Creates the cache config.<a name="line.367"></a>
+<span class="sourceLineNo">368</span>   * @param family The current column family.<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  protected void createCacheConf(final ColumnFamilyDescriptor family) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    this.cacheConf = new CacheConfig(conf, family);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  /**<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * Creates the store engine configured for the given Store.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @param store The store. An unfortunate dependency needed due to it<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   *              being passed to coprocessors via the compactor.<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * @param conf Store configuration.<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * @param kvComparator KVComparator for storeFileManager.<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   * @return StoreEngine to use.<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   */<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  protected StoreEngine&lt;?, ?, ?, ?&gt; createStoreEngine(HStore store, Configuration conf,<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      CellComparator kvComparator) throws IOException {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    return StoreEngine.create(store, conf, comparator);<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>  /**<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * @param family<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * @return TTL in seconds of the specified family<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  public static long determineTTLFromFamily(final ColumnFamilyDescriptor family) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    // HCD.getTimeToLive returns ttl in seconds.  Convert to milliseconds.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    long ttl = family.getTimeToLive();<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    if (ttl == HConstants.FOREVER) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      // Default is unlimited ttl.<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      ttl = Long.MAX_VALUE;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    } else if (ttl == -1) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      ttl = Long.MAX_VALUE;<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    } else {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      // Second -&gt; ms adjust for user data<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      ttl *= 1000;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    }<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    return ttl;<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  }<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  @Override<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  public String getColumnFamilyName() {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    return this.family.getNameAsString();<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>  @Override<a name="line.411"></a>
+<span class="sourceLineNo">412</span>  public TableName getTableName() {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    return this.getRegionInfo().getTable();<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  }<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>  @Override<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  public FileSystem getFileSystem() {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    return this.fs.getFileSystem();<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>  public HRegionFileSystem getRegionFileSystem() {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    return this.fs;<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>  /* Implementation of StoreConfigInformation */<a name="line.425"></a>
+<span class="sourceLineNo">426</span>  @Override<a name="line.426"></a>
+<span class="sourceLineNo">427</span>  public long getStoreFileTtl() {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    // TTL only applies if there's no MIN_VERSIONs setting on the column.<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    return (this.scanInfo.getMinVersions() == 0) ? this.scanInfo.getTtl() : Long.MAX_VALUE;<a name="line.429"></a>
+<span class="sourceLineNo">430</span>  }<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>  @Override<a name="line.432"></a>
+<span class="sourceLineNo">433</span>  public long getMemStoreFlushSize() {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    // TODO: Why is this in here?  The flushsize of the region rather than the store?  St.Ack<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    return this.region.memstoreFlushSize;<a name="line.435"></a>
+<span class="sourceLineNo">436</span>  }<a name="line.436"></a>
+<span class="sourceLineNo">437</span><a name="line.437"></a>
+<span class="sourceLineNo">438</span>  @Override<a name="line.438"></a>
+<span class="sourceLineNo">439</span>  public MemStoreSize getFlushableSize() {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    return this.memstore.getFlushableSize();<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  @Override<a name="line.443"></a>
+<span class="sourceLineNo">444</span>  public MemStoreSize getSnapshotSize() {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    return this.memstore.getSnapshotSize();<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  }<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>  @Override<a name="line.448"></a>
+<span class="sourceLineNo">449</span>  public long getCompactionCheckMultiplier() {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    return this.compactionCheckMultiplier;<a name="line.450"></a>
+<span class="sourceLineNo">451</span>  }<a name="line.451"></a>
+<span class="sourceLineNo">452</span><a name="line.452"></a>
+<span class="sourceLineNo">453</span>  @Override<a name="line.453"></a>
+<span class="sourceLineNo">454</span>  public long getBlockingFileCount() {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    return blockingFileCount;<a name="line.455"></a>
+<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
+<span class="sourceLineNo">457</span>  /* End implementation of StoreConfigInformation */<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>   * Returns the configured bytesPerChecksum value.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>   * @param conf The configuration<a name="line.461"></a>
+<span class="sourceLineNo">462</span>   * @return The bytesPerChecksum that is set in the configuration<a name="line.462"></a>
+<span class="sourceLineNo">463</span>   */<a name="line.463"></a>
+<span class="sourceLineNo">464</span>  public static int getBytesPerChecksum(Configuration conf) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    return conf.getInt(HConstants.BYTES_PER_CHECKSUM,<a name="line.465"></a>
+<span class="sourceLineNo">466</span>                       HFile.DEFAULT_BYTES_PER_CHECKSUM);<a name="line.466"></a>
+<span class="sourceLineNo">467</span>  }<a name="line.467"></a>
+<span class="sourceLineNo">468</span><a name="line.468"></a>
+<span class="sourceLineNo">469</span>  /**<a name="line.469"></a>
+<span class="sourceLineNo">470</span>   * Returns the configured checksum algorithm.<a name="line.470"></a>
+<span class="sourceLineNo">471</span>   * @param conf The configuration<a name="line.471"></a>
+<span class="sourceLineNo">472</span>   * @return The checksum algorithm that is set

<TRUNCATED>

[03/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegionWithInMemoryFlush.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegionWithInMemoryFlush.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegionWithInMemoryFlush.html
index cfc19fe..db6ff4d 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegionWithInMemoryFlush.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegionWithInMemoryFlush.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10};
+var methods = {"i0":10,"i1":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionWithInMemoryFlush.html#line.36">TestHRegionWithInMemoryFlush</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionWithInMemoryFlush.html#line.42">TestHRegionWithInMemoryFlush</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegion</a></pre>
 <div class="block">A test similar to TestHRegion, but with in-memory flush families.
  Also checks wal truncation after in-memory compaction.</div>
@@ -204,6 +204,12 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion
            org.apache.hadoop.hbase.wal.WAL&nbsp;wal,
            byte[]...&nbsp;families)</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/TestHRegionWithInMemoryFlush.html#testFlushAndMemstoreSizeCounting--">testFlushAndMemstoreSizeCounting</a></span>()</code>
+<div class="block">A test case of HBASE-21041</div>
+</td>
+</tr>
 </table>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.TestHRegion">
@@ -239,7 +245,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionWithInMemoryFlush.html#line.39">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/regionserver/TestHRegionWithInMemoryFlush.html#line.45">CLASS_RULE</a></pre>
 </li>
 </ul>
 </li>
@@ -256,7 +262,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestHRegionWithInMemoryFlush</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionWithInMemoryFlush.html#line.36">TestHRegionWithInMemoryFlush</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionWithInMemoryFlush.html#line.42">TestHRegionWithInMemoryFlush</a>()</pre>
 </li>
 </ul>
 </li>
@@ -270,10 +276,10 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion
 <a name="initHRegion-org.apache.hadoop.hbase.TableName-byte:A-byte:A-boolean-org.apache.hadoop.hbase.client.Durability-org.apache.hadoop.hbase.wal.WAL-byte:A...-">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>initHRegion</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionWithInMemoryFlush.html#line.47">initHRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionWithInMemoryFlush.html#line.53">initHRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                                 byte[]&nbsp;startKey,
                                                                 byte[]&nbsp;stopKey,
                                                                 boolean&nbsp;isReadOnly,
@@ -292,6 +298,23 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion
 </dl>
 </li>
 </ul>
+<a name="testFlushAndMemstoreSizeCounting--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testFlushAndMemstoreSizeCounting</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionWithInMemoryFlush.html#line.70">testFlushAndMemstoreSizeCounting</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>
+<div class="block">A test case of HBASE-21041</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#testFlushAndMemstoreSizeCounting--">testFlushAndMemstoreSizeCounting</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegion</a></code></dd>
+<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> - Exception</dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHStore.MyCompactingMemStore.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHStore.MyCompactingMemStore.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHStore.MyCompactingMemStore.html
index 4ae96ed..ee5fdef 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHStore.MyCompactingMemStore.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHStore.MyCompactingMemStore.html
@@ -187,7 +187,7 @@ extends org.apache.hadoop.hbase.regionserver.CompactingMemStore</pre>
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.AbstractMemStore</h3>
-<code>FIXED_OVERHEAD, snapshot, snapshotId</code></li>
+<code>FIXED_OVERHEAD, regionServices, snapshot, snapshotId</code></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHStore.MyCompactingMemStoreWithCustomCompactor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHStore.MyCompactingMemStoreWithCustomCompactor.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHStore.MyCompactingMemStoreWithCustomCompactor.html
index a19a39b..80b8746 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHStore.MyCompactingMemStoreWithCustomCompactor.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHStore.MyCompactingMemStoreWithCustomCompactor.html
@@ -179,7 +179,7 @@ extends org.apache.hadoop.hbase.regionserver.CompactingMemStore</pre>
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.AbstractMemStore</h3>
-<code>FIXED_OVERHEAD, snapshot, snapshotId</code></li>
+<code>FIXED_OVERHEAD, regionServices, snapshot, snapshotId</code></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.RegionServerAccountingStub.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.RegionServerAccountingStub.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.RegionServerAccountingStub.html
index 9e725c1..44e1c37 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.RegionServerAccountingStub.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.RegionServerAccountingStub.html
@@ -204,7 +204,7 @@ extends org.apache.hadoop.hbase.regionserver.RegionServerAccounting</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.RegionServerAccounting</h3>
-<code>addRegionReplayEditsSize, clearRegionReplayEditsSize, decGlobalMemStoreSize, getFlushPressure, getGlobalMemStoreLimit, getGlobalMemStoreLimitLowMark, getGlobalMemStoreLimitLowMarkPercent, getGlobalMemStoreOffHeapSize, getGlobalOnHeapMemStoreLimit, incGlobalMemStoreSize, incGlobalMemStoreSize, isAboveHighWaterMark, isAboveLowWaterMark, rollbackRegionReplayEditsSize, setGlobalMemStoreLimits</code></li>
+<code>decGlobalMemStoreSize, getFlushPressure, getGlobalMemStoreLimit, getGlobalMemStoreLimitLowMark, getGlobalMemStoreLimitLowMarkPercent, getGlobalMemStoreOffHeapSize, getGlobalOnHeapMemStoreLimit, incGlobalMemStoreSize, incGlobalMemStoreSize, isAboveHighWaterMark, isAboveLowWaterMark, setGlobalMemStoreLimits</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/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.MockHRegion.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.MockHRegion.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.MockHRegion.html
index 2ccf7fb..9740e78 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.MockHRegion.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.MockHRegion.html
@@ -213,7 +213,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegion</h3>
-<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkFamily, checkReadOnly, checkReadsEnabled, checkResources, checkRow, checkSplit, checkTimestamps, clearSplit, close, close, closeRegionOperation, closeRegionOperation, compact, compact, compact, compactStore, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, decrMemStoreSize, decrMemStoreSize, delete, delete, deregisterChildren, doRegionCompactionPrep, equals, execService, flush, flushcache, forceSplit, get, get, get, getBaseConf, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliestFlushTimeForAllStores,
  getEffectiveDurability, getExplicitSplitPoint, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLockedRows, getMaxFlushedSeqId, getMaxStoreSeqId, getMemStoreDataSize, getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNextSequenceId, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenAndCloseThreadPool, getOpenSeqNum, getPrepareFlushResult, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServerServices, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, incMemStoreSize, incMemStoreSize, incre
 ment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateHStore, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLoadingCfsOnDemandDefault, isMergeable, isReadOnly, isSplittable, metricsUpdateForGet, mutateRow, mutateRowsWithLocks, newHRegion, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, prepareGet, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, put, refreshStoreFiles, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, replayWALBulkLoadEventMarker, replayWALCompactionMarker, replayWALFlushCommitMarker, replayWALFlushMarker, replayWALFlushStartMarker, replayWALRegionEventMarker, reportCompactionRe
 questEnd, reportCompactionRequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rewriteCellTags, rowIsInRange, rowIsInRange, setClosing, setCompleteSequenceId, setCoprocessorHost, setHTableSpecificConf, setReadsEnabled, setTableDescriptor, setTimeoutForWriteLock, shouldFlush, shouldFlushStore, shouldForceSplit, startRegionOperation, startRegionOperation, throwException, toString, unblockUpdates, updateDeleteLatestVersionTimestamp, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion</code></li>
+<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkFamily, checkReadOnly, checkReadsEnabled, checkResources, checkRow, checkSplit, checkTimestamps, clearSplit, close, close, closeRegionOperation, closeRegionOperation, compact, compact, compact, compactStore, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, decrMemStoreSize, decrMemStoreSize, delete, delete, deregisterChildren, doRegionCompactionPrep, dropMemStoreContents, equals, execService, flush, flushcache, forceSplit, get, get, get, getBaseConf, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliest
 FlushTimeForAllStores, getEffectiveDurability, getExplicitSplitPoint, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLockedRows, getMaxFlushedSeqId, getMaxStoreSeqId, getMemStoreDataSize, getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNextSequenceId, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenAndCloseThreadPool, getOpenSeqNum, getPrepareFlushResult, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServerServices, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, incMemStoreSize, 
 incMemStoreSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, initialize, instantiateHStore, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLoadingCfsOnDemandDefault, isMergeable, isReadOnly, isSplittable, metricsUpdateForGet, mutateRow, mutateRowsWithLocks, newHRegion, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, prepareGet, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, put, refreshStoreFiles, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, replayWALBulkLoadEventMarker, replayWALCompactionMarker, replayWALFlushCommitMarker, replayWALFlushMarker, replayWALFlushStartMarker, replayWALReg
 ionEventMarker, reportCompactionRequestEnd, reportCompactionRequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rewriteCellTags, rowIsInRange, rowIsInRange, setClosing, setCompleteSequenceId, setCoprocessorHost, setHTableSpecificConf, setReadsEnabled, setTableDescriptor, setTimeoutForWriteLock, shouldFlush, shouldFlushStore, shouldForceSplit, startRegionOperation, startRegionOperation, throwException, toString, unblockUpdates, updateDeleteLatestVersionTimestamp, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion</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/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html
index e2e367b..fc10eac 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestQosFunction.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/TestRegionFavoredNodes.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/TestRecoveredEditsReplayAndAbort.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/TestRecoveredEdits.html" target="_top">Frames</a></li>
@@ -363,7 +363,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestQosFunction.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/TestRegionFavoredNodes.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/TestRecoveredEditsReplayAndAbort.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/TestRecoveredEdits.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html
new file mode 100644
index 0000000..21f4e10
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html
@@ -0,0 +1,495 @@
+<!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>TestRecoveredEditsReplayAndAbort (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="TestRecoveredEditsReplayAndAbort (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestRecoveredEditsReplayAndAbort.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/TestRecoveredEdits.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/TestRegionFavoredNodes.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/TestRecoveredEditsReplayAndAbort.html" target="_top">Frames</a></li>
+<li><a href="TestRecoveredEditsReplayAndAbort.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 TestRecoveredEditsReplayAndAbort" class="title">Class TestRecoveredEditsReplayAndAbort</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.TestRecoveredEditsReplayAndAbort</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/TestRecoveredEditsReplayAndAbort.html#line.68">TestRecoveredEditsReplayAndAbort</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">HBASE-21031
+ If replay edits fails, we need to make sure memstore is rollbacked
+ And if MSLAB is used, all chunk is released too.</div>
+</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/TestRecoveredEditsReplayAndAbort.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static org.apache.hadoop.conf.Configuration</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#CONF">CONF</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected static byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#fam1">fam1</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static org.apache.hadoop.fs.FileSystem</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#FILESYSTEM">FILESYSTEM</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<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/TestRecoveredEditsReplayAndAbort.html#LOG">LOG</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected <a href="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/TestRecoveredEditsReplayAndAbort.html#method">method</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>org.junit.rules.TestName</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#name">name</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/Random.html?is-external=true" title="class or interface in java.util">Random</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#random">random</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private org.apache.hadoop.hbase.regionserver.HRegion</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#region">region</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#row">row</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected org.apache.hadoop.hbase.TableName</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#tableName">tableName</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"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#TEST_UTIL">TEST_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/TestRecoveredEditsReplayAndAbort.html#TestRecoveredEditsReplayAndAbort--">TestRecoveredEditsReplayAndAbort</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#setup--">setup</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#tearDown--">tearDown</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/TestRecoveredEditsReplayAndAbort.html#test--">test</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/TestRecoveredEditsReplayAndAbort.html#line.70">CLASS_RULE</a></pre>
+</li>
+</ul>
+<a name="LOG">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>LOG</h4>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#line.73">LOG</a></pre>
+</li>
+</ul>
+<a name="row">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>row</h4>
+<pre>protected final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#line.76">row</a></pre>
+</li>
+</ul>
+<a name="fam1">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>fam1</h4>
+<pre>protected static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#line.78">fam1</a></pre>
+</li>
+</ul>
+<a name="name">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>name</h4>
+<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#line.81">name</a></pre>
+</li>
+</ul>
+<a name="tableName">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>tableName</h4>
+<pre>protected&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#line.84">tableName</a></pre>
+</li>
+</ul>
+<a name="method">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>method</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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#line.85">method</a></pre>
+</li>
+</ul>
+<a name="TEST_UTIL">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>TEST_UTIL</h4>
+<pre>protected 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/TestRecoveredEditsReplayAndAbort.html#line.87">TEST_UTIL</a></pre>
+</li>
+</ul>
+<a name="CONF">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CONF</h4>
+<pre>public static&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#line.88">CONF</a></pre>
+</li>
+</ul>
+<a name="FILESYSTEM">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>FILESYSTEM</h4>
+<pre>private static&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#line.89">FILESYSTEM</a></pre>
+</li>
+</ul>
+<a name="region">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>region</h4>
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#line.90">region</a></pre>
+</li>
+</ul>
+<a name="random">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>random</h4>
+<pre>private final&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/regionserver/TestRecoveredEditsReplayAndAbort.html#line.92">random</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="TestRecoveredEditsReplayAndAbort--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestRecoveredEditsReplayAndAbort</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#line.68">TestRecoveredEditsReplayAndAbort</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="setup--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setup</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#line.95">setup</a>()
+           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></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="tearDown--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>tearDown</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#line.104">tearDown</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="test--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>test</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#line.110">test</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/TestRecoveredEditsReplayAndAbort.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/TestRecoveredEdits.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/TestRegionFavoredNodes.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/TestRecoveredEditsReplayAndAbort.html" target="_top">Frames</a></li>
+<li><a href="TestRecoveredEditsReplayAndAbort.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/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html
index 77711cd..a0151ed 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.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/TestRecoveredEditsReplayAndAbort.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/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -420,7 +420,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/TestRecoveredEdits.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/TestRecoveredEditsReplayAndAbort.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/TestRegionIncrement.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/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.ErrorThrowingHRegion.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.ErrorThrowingHRegion.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.ErrorThrowingHRegion.html
index 6e8bc96..0b34ecb 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.ErrorThrowingHRegion.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.ErrorThrowingHRegion.html
@@ -220,7 +220,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegion</h3>
-<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkFamily, checkReadOnly, checkReadsEnabled, checkResources, checkRow, checkSplit, checkTimestamps, clearSplit, close, close, closeRegionOperation, closeRegionOperation, compact, compact, compact, compactStore, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, decrMemStoreSize, decrMemStoreSize, delete, delete, deregisterChildren, doRegionCompactionPrep, equals, execService, flush, flushcache, forceSplit, get, get, get, getBaseConf, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliestFlushTimeForAllStores,
  getEffectiveDurability, getExplicitSplitPoint, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLockedRows, getMaxFlushedSeqId, getMaxStoreSeqId, getMemStoreDataSize, getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNextSequenceId, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenAndCloseThreadPool, getOpenSeqNum, getPrepareFlushResult, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServerServices, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, incMemStoreSize, incMemStoreSize, incre
 ment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateHStore, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLoadingCfsOnDemandDefault, isMergeable, isReadOnly, isSplittable, metricsUpdateForGet, mutateRow, mutateRowsWithLocks, newHRegion, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, prepareGet, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, put, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, replayWALBulkLoadEventMarker, replayWALCompactionMarker, replayWALFlushCommitMarker, replayWALFlushMarker, replayWALFlushStartMarker, replayWALRegionEventMarker, reportCompactionRequestEnd, reportCom
 pactionRequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rewriteCellTags, rowIsInRange, rowIsInRange, setClosing, setCompleteSequenceId, setCoprocessorHost, setHTableSpecificConf, setReadsEnabled, setTableDescriptor, setTimeoutForWriteLock, shouldFlush, shouldFlushStore, shouldForceSplit, startRegionOperation, startRegionOperation, throwException, toString, unblockUpdates, updateDeleteLatestVersionTimestamp, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion, writeRegionOpenMarker</code></li>
+<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkFamily, checkReadOnly, checkReadsEnabled, checkResources, checkRow, checkSplit, checkTimestamps, clearSplit, close, close, closeRegionOperation, closeRegionOperation, compact, compact, compact, compactStore, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, decrMemStoreSize, decrMemStoreSize, delete, delete, deregisterChildren, doRegionCompactionPrep, dropMemStoreContents, equals, execService, flush, flushcache, forceSplit, get, get, get, getBaseConf, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliest
 FlushTimeForAllStores, getEffectiveDurability, getExplicitSplitPoint, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLockedRows, getMaxFlushedSeqId, getMaxStoreSeqId, getMemStoreDataSize, getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNextSequenceId, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenAndCloseThreadPool, getOpenSeqNum, getPrepareFlushResult, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServerServices, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, incMemStoreSize, 
 incMemStoreSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, initialize, instantiateHStore, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLoadingCfsOnDemandDefault, isMergeable, isReadOnly, isSplittable, metricsUpdateForGet, mutateRow, mutateRowsWithLocks, newHRegion, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, prepareGet, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, put, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, replayWALBulkLoadEventMarker, replayWALCompactionMarker, replayWALFlushCommitMarker, replayWALFlushMarker, replayWALFlushStartMarker, replayWALRegionEventMarker, rep
 ortCompactionRequestEnd, reportCompactionRequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rewriteCellTags, rowIsInRange, rowIsInRange, setClosing, setCompleteSequenceId, setCoprocessorHost, setHTableSpecificConf, setReadsEnabled, setTableDescriptor, setTimeoutForWriteLock, shouldFlush, shouldFlushStore, shouldForceSplit, startRegionOperation, startRegionOperation, throwException, toString, unblockUpdates, updateDeleteLatestVersionTimestamp, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion, writeRegionOpenMarker</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/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatHRegion.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatHRegion.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatHRegion.html
index 8087e3f..99fc271 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatHRegion.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatHRegion.html
@@ -260,7 +260,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegion</h3>
-<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkFamily, checkReadOnly, checkReadsEnabled, checkResources, checkRow, checkSplit, checkTimestamps, clearSplit, close, close, closeRegionOperation, closeRegionOperation, compact, compact, compact, compactStore, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, decrMemStoreSize, decrMemStoreSize, delete, delete, deregisterChildren, doRegionCompactionPrep, equals, execService, flush, flushcache, forceSplit, get, get, get, getBaseConf, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliestFlushTimeForAllStores,
  getEffectiveDurability, getExplicitSplitPoint, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLockedRows, getMaxFlushedSeqId, getMaxStoreSeqId, getMemStoreDataSize, getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNextSequenceId, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenAndCloseThreadPool, getOpenSeqNum, getPrepareFlushResult, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServerServices, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, incMemStoreSize, incMemStoreSize, incre
 ment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateHStore, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLoadingCfsOnDemandDefault, isMergeable, isReadOnly, isSplittable, metricsUpdateForGet, mutateRow, mutateRowsWithLocks, newHRegion, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, prepareGet, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, put, refreshStoreFiles, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, replayWALBulkLoadEventMarker, replayWALCompactionMarker, replayWALFlushCommitMarker, replayWALFlushMarker, replayWALFlushStartMarker, replayWALRegionEventMarker, reportCompactionRequestEnd, reportCompaction
 RequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rewriteCellTags, rowIsInRange, rowIsInRange, setClosing, setCompleteSequenceId, setCoprocessorHost, setHTableSpecificConf, setReadsEnabled, setTableDescriptor, setTimeoutForWriteLock, shouldFlush, shouldFlushStore, shouldForceSplit, startRegionOperation, startRegionOperation, throwException, toString, unblockUpdates, updateDeleteLatestVersionTimestamp, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion, writeRegionOpenMarker</code></li>
+<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamilies, checkFamily, checkReadOnly, checkReadsEnabled, checkResources, checkRow, checkSplit, checkTimestamps, clearSplit, close, close, closeRegionOperation, closeRegionOperation, compact, compact, compact, compactStore, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decrementCompactionsQueuedCount, decrMemStoreSize, decrMemStoreSize, delete, delete, deregisterChildren, doRegionCompactionPrep, dropMemStoreContents, equals, execService, flush, flushcache, forceSplit, get, get, get, getBaseConf, getBlockedRequestsCount, getCellComparator, getCheckAndMutateChecksFailed, getCheckAndMutateChecksPassed, getCompactionState, getCompactPriority, getCoprocessorHost, getCpRequestsCount, getDataInMemoryWithoutWAL, getEarliest
 FlushTimeForAllStores, getEffectiveDurability, getExplicitSplitPoint, getFilesystem, getFilteredReadRequestsCount, getHDFSBlocksDistribution, getLoadStatistics, getLockedRows, getMaxFlushedSeqId, getMaxStoreSeqId, getMemStoreDataSize, getMemStoreFlushSize, getMemStoreHeapSize, getMemStoreOffHeapSize, getMetrics, getMVCC, getNextSequenceId, getNumMutationsWithoutWAL, getOldestHfileTs, getOldestSeqIdOfStore, getOpenAndCloseThreadPool, getOpenSeqNum, getPrepareFlushResult, getReadLockCount, getReadPoint, getReadPoint, getReadRequestsCount, getRegionDir, getRegionDir, getRegionFileSystem, getRegionInfo, getRegionServerServices, getRegionServicesForStores, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWriteRequestsCount, hashCode, hasReferences, heapSize, incMemStoreSize, 
 incMemStoreSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, initialize, instantiateHStore, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLoadingCfsOnDemandDefault, isMergeable, isReadOnly, isSplittable, metricsUpdateForGet, mutateRow, mutateRowsWithLocks, newHRegion, onConfigurationChange, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openHRegion, openReadOnlyFileSystemHRegion, prepareDelete, prepareDeleteTimestamps, prepareGet, processRowsWithLocks, processRowsWithLocks, processRowsWithLocks, put, put, refreshStoreFiles, refreshStoreFiles, registerChildren, registerService, replayRecoveredEditsIfAny, replayWALBulkLoadEventMarker, replayWALCompactionMarker, replayWALFlushCommitMarker, replayWALFlushMarker, replayWALFlushStartMarker, replayWALRegionEventMarker, reportComp
 actionRequestEnd, reportCompactionRequestFailure, reportCompactionRequestStart, requestCompaction, requestCompaction, requestFlush, restoreEdit, rewriteCellTags, rowIsInRange, rowIsInRange, setClosing, setCompleteSequenceId, setCoprocessorHost, setHTableSpecificConf, setReadsEnabled, setTableDescriptor, setTimeoutForWriteLock, shouldFlush, shouldFlushStore, shouldForceSplit, startRegionOperation, startRegionOperation, throwException, toString, unblockUpdates, updateDeleteLatestVersionTimestamp, waitForFlushes, waitForFlushes, waitForFlushesAndCompactions, warmupHRegion, writeRegionOpenMarker</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/1ff05a18/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestRecoveredEditsReplayAndAbort.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestRecoveredEditsReplayAndAbort.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestRecoveredEditsReplayAndAbort.html
new file mode 100644
index 0000000..3ac7831
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestRecoveredEditsReplayAndAbort.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.TestRecoveredEditsReplayAndAbort (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.TestRecoveredEditsReplayAndAbort (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/TestRecoveredEditsReplayAndAbort.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/TestRecoveredEditsReplayAndAbort.html" target="_top">Frames</a></li>
+<li><a href="TestRecoveredEditsReplayAndAbort.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.TestRecoveredEditsReplayAndAbort" class="title">Uses of Class<br>org.apache.hadoop.hbase.regionserver.TestRecoveredEditsReplayAndAbort</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.regionserver.TestRecoveredEditsReplayAndAbort</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/TestRecoveredEditsReplayAndAbort.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/TestRecoveredEditsReplayAndAbort.html" target="_top">Frames</a></li>
+<li><a href="TestRecoveredEditsReplayAndAbort.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/1ff05a18/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 6effcc0..5acb1da 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
@@ -183,6 +183,7 @@
 <li><a href="TestPriorityRpc.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestPriorityRpc</a></li>
 <li><a href="TestQosFunction.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestQosFunction</a></li>
 <li><a href="TestRecoveredEdits.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRecoveredEdits</a></li>
+<li><a href="TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRecoveredEditsReplayAndAbort</a></li>
 <li><a href="TestRegionFavoredNodes.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRegionFavoredNodes</a></li>
 <li><a href="TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRegionIncrement</a></li>
 <li><a href="TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRegionIncrement.CrossRowCellIncrementer</a></li>


[27/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html
index db8431b..a8cb7c4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html
@@ -885,7766 +885,7797 @@
 <span class="sourceLineNo">877</span>   * @return What the next sequence (edit) id should be.<a name="line.877"></a>
 <span class="sourceLineNo">878</span>   * @throws IOException e<a name="line.878"></a>
 <span class="sourceLineNo">879</span>   */<a name="line.879"></a>
-<span class="sourceLineNo">880</span>  private long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.880"></a>
-<span class="sourceLineNo">881</span><a name="line.881"></a>
-<span class="sourceLineNo">882</span>    //Refuse to open the region if there is no column family in the table<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.884"></a>
-<span class="sourceLineNo">885</span>          " should have at least one column family.");<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    long nextSeqId = -1;<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    try {<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.891"></a>
-<span class="sourceLineNo">892</span>      return nextSeqId;<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    } finally {<a name="line.893"></a>
-<span class="sourceLineNo">894</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      // At least it will be 0 otherwise.<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      if (nextSeqId == -1) {<a name="line.896"></a>
-<span class="sourceLineNo">897</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.897"></a>
-<span class="sourceLineNo">898</span>          " initialization.");<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      }<a name="line.899"></a>
-<span class="sourceLineNo">900</span>    }<a name="line.900"></a>
-<span class="sourceLineNo">901</span>  }<a name="line.901"></a>
-<span class="sourceLineNo">902</span><a name="line.902"></a>
-<span class="sourceLineNo">903</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.903"></a>
-<span class="sourceLineNo">904</span>      final MonitoredTask status) throws IOException {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    if (coprocessorHost != null) {<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      coprocessorHost.preOpen();<a name="line.907"></a>
-<span class="sourceLineNo">908</span>    }<a name="line.908"></a>
-<span class="sourceLineNo">909</span><a name="line.909"></a>
-<span class="sourceLineNo">910</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.910"></a>
-<span class="sourceLineNo">911</span>    // Only the primary replica should write .regioninfo<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      status.setStatus("Writing region info on filesystem");<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      fs.checkRegionInfoOnFilesystem();<a name="line.914"></a>
-<span class="sourceLineNo">915</span>    }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>    // Initialize all the HStores<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    status.setStatus("Initializing all the Stores");<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.920"></a>
-<span class="sourceLineNo">921</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.922"></a>
-<span class="sourceLineNo">923</span>      try {<a name="line.923"></a>
-<span class="sourceLineNo">924</span>        // update the stores that we are replaying<a name="line.924"></a>
-<span class="sourceLineNo">925</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        // Recover any edits if available.<a name="line.927"></a>
-<span class="sourceLineNo">928</span>        maxSeqId = Math.max(maxSeqId,<a name="line.928"></a>
-<span class="sourceLineNo">929</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        // Make sure mvcc is up to max.<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      } finally {<a name="line.932"></a>
-<span class="sourceLineNo">933</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        // update the stores that we are done replaying<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        stores.forEach(HStore::stopReplayingFromWAL);<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>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    this.writestate.flushRequested = false;<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    this.writestate.compacting.set(0);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>    if (this.writestate.writesEnabled) {<a name="line.944"></a>
-<span class="sourceLineNo">945</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      // Remove temporary data left over from old regions<a name="line.946"></a>
-<span class="sourceLineNo">947</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.947"></a>
-<span class="sourceLineNo">948</span>      fs.cleanupTempDir();<a name="line.948"></a>
-<span class="sourceLineNo">949</span>    }<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>    if (this.writestate.writesEnabled) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      // these directories here on open.  We may be opening a region that was<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      // being split but we crashed in the middle of it all.<a name="line.955"></a>
-<span class="sourceLineNo">956</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      fs.cleanupAnySplitDetritus();<a name="line.957"></a>
-<span class="sourceLineNo">958</span>      fs.cleanupMergesDir();<a name="line.958"></a>
-<span class="sourceLineNo">959</span>    }<a name="line.959"></a>
+<span class="sourceLineNo">880</span>  @VisibleForTesting<a name="line.880"></a>
+<span class="sourceLineNo">881</span>  long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>    //Refuse to open the region if there is no column family in the table<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.885"></a>
+<span class="sourceLineNo">886</span>          " should have at least one column family.");<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    }<a name="line.887"></a>
+<span class="sourceLineNo">888</span><a name="line.888"></a>
+<span class="sourceLineNo">889</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>    long nextSeqId = -1;<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    try {<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      return nextSeqId;<a name="line.893"></a>
+<span class="sourceLineNo">894</span>    } catch (IOException e) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      LOG.warn("Failed initialize of region= {}, starting to roll back memstore",<a name="line.895"></a>
+<span class="sourceLineNo">896</span>          getRegionInfo().getRegionNameAsString(), e);<a name="line.896"></a>
+<span class="sourceLineNo">897</span>      // global memstore size will be decreased when dropping memstore<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      try {<a name="line.898"></a>
+<span class="sourceLineNo">899</span>        //drop the memory used by memstore if open region fails<a name="line.899"></a>
+<span class="sourceLineNo">900</span>        dropMemStoreContents();<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      } catch (IOException ioE) {<a name="line.901"></a>
+<span class="sourceLineNo">902</span>        if (conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {<a name="line.902"></a>
+<span class="sourceLineNo">903</span>          LOG.warn("Failed drop memstore of region= {}, "<a name="line.903"></a>
+<span class="sourceLineNo">904</span>                  + "some chunks may not released forever since MSLAB is enabled",<a name="line.904"></a>
+<span class="sourceLineNo">905</span>              getRegionInfo().getRegionNameAsString());<a name="line.905"></a>
+<span class="sourceLineNo">906</span>        }<a name="line.906"></a>
+<span class="sourceLineNo">907</span><a name="line.907"></a>
+<span class="sourceLineNo">908</span>      }<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      throw e;<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    } finally {<a name="line.910"></a>
+<span class="sourceLineNo">911</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      // At least it will be 0 otherwise.<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      if (nextSeqId == -1) {<a name="line.913"></a>
+<span class="sourceLineNo">914</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.914"></a>
+<span class="sourceLineNo">915</span>          " initialization.");<a name="line.915"></a>
+<span class="sourceLineNo">916</span>      }<a name="line.916"></a>
+<span class="sourceLineNo">917</span>    }<a name="line.917"></a>
+<span class="sourceLineNo">918</span>  }<a name="line.918"></a>
+<span class="sourceLineNo">919</span><a name="line.919"></a>
+<span class="sourceLineNo">920</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.920"></a>
+<span class="sourceLineNo">921</span>      final MonitoredTask status) throws IOException {<a name="line.921"></a>
+<span class="sourceLineNo">922</span>    if (coprocessorHost != null) {<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.923"></a>
+<span class="sourceLineNo">924</span>      coprocessorHost.preOpen();<a name="line.924"></a>
+<span class="sourceLineNo">925</span>    }<a name="line.925"></a>
+<span class="sourceLineNo">926</span><a name="line.926"></a>
+<span class="sourceLineNo">927</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.927"></a>
+<span class="sourceLineNo">928</span>    // Only the primary replica should write .regioninfo<a name="line.928"></a>
+<span class="sourceLineNo">929</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>      status.setStatus("Writing region info on filesystem");<a name="line.930"></a>
+<span class="sourceLineNo">931</span>      fs.checkRegionInfoOnFilesystem();<a name="line.931"></a>
+<span class="sourceLineNo">932</span>    }<a name="line.932"></a>
+<span class="sourceLineNo">933</span><a name="line.933"></a>
+<span class="sourceLineNo">934</span>    // Initialize all the HStores<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    status.setStatus("Initializing all the Stores");<a name="line.935"></a>
+<span class="sourceLineNo">936</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.937"></a>
+<span class="sourceLineNo">938</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.938"></a>
+<span class="sourceLineNo">939</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.939"></a>
+<span class="sourceLineNo">940</span>      try {<a name="line.940"></a>
+<span class="sourceLineNo">941</span>        // update the stores that we are replaying<a name="line.941"></a>
+<span class="sourceLineNo">942</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.942"></a>
+<span class="sourceLineNo">943</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.943"></a>
+<span class="sourceLineNo">944</span>        // Recover any edits if available.<a name="line.944"></a>
+<span class="sourceLineNo">945</span>        maxSeqId = Math.max(maxSeqId,<a name="line.945"></a>
+<span class="sourceLineNo">946</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.946"></a>
+<span class="sourceLineNo">947</span>        // Make sure mvcc is up to max.<a name="line.947"></a>
+<span class="sourceLineNo">948</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      } finally {<a name="line.949"></a>
+<span class="sourceLineNo">950</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        // update the stores that we are done replaying<a name="line.951"></a>
+<span class="sourceLineNo">952</span>        stores.forEach(HStore::stopReplayingFromWAL);<a name="line.952"></a>
+<span class="sourceLineNo">953</span>      }<a name="line.953"></a>
+<span class="sourceLineNo">954</span>    }<a name="line.954"></a>
+<span class="sourceLineNo">955</span>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.955"></a>
+<span class="sourceLineNo">956</span><a name="line.956"></a>
+<span class="sourceLineNo">957</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.957"></a>
+<span class="sourceLineNo">958</span>    this.writestate.flushRequested = false;<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    this.writestate.compacting.set(0);<a name="line.959"></a>
 <span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>    // Initialize split policy<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.962"></a>
-<span class="sourceLineNo">963</span><a name="line.963"></a>
-<span class="sourceLineNo">964</span>    // Initialize flush policy<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.965"></a>
-<span class="sourceLineNo">966</span><a name="line.966"></a>
-<span class="sourceLineNo">967</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    for (HStore store: stores.values()) {<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<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>    // Use maximum of log sequenceid or that which was found in stores<a name="line.972"></a>
-<span class="sourceLineNo">973</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.973"></a>
-<span class="sourceLineNo">974</span>    long maxSeqIdFromFile =<a name="line.974"></a>
-<span class="sourceLineNo">975</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.975"></a>
-<span class="sourceLineNo">976</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.976"></a>
-<span class="sourceLineNo">977</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    // the max sequence id file.<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.985"></a>
-<span class="sourceLineNo">986</span><a name="line.986"></a>
-<span class="sourceLineNo">987</span>    // A region can be reopened if failed a split; reset flags<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    this.closing.set(false);<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    this.closed.set(false);<a name="line.989"></a>
-<span class="sourceLineNo">990</span><a name="line.990"></a>
-<span class="sourceLineNo">991</span>    if (coprocessorHost != null) {<a name="line.991"></a>
-<span class="sourceLineNo">992</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.992"></a>
-<span class="sourceLineNo">993</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.993"></a>
-<span class="sourceLineNo">994</span>      coprocessorHost.postOpen();<a name="line.994"></a>
-<span class="sourceLineNo">995</span>    }<a name="line.995"></a>
-<span class="sourceLineNo">996</span><a name="line.996"></a>
-<span class="sourceLineNo">997</span>    status.markComplete("Region opened successfully");<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    return nextSeqId;<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>   * Open all Stores.<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>   * @param reporter<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   * @param status<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>   * @return Highest sequenceId found out in a Store.<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * @throws IOException<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   */<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      throws IOException {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>    // Load in all the HStores.<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    long maxSeqId = -1;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    long maxMemstoreTS = -1;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span><a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span><a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      // initialize each store in parallel<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>          @Override<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>          public HStore call() throws IOException {<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>            return instantiateHStore(family);<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          }<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>        });<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      }<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>      boolean allStoresOpened = false;<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>      boolean hasSloppyStores = false;<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>      try {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>          HStore store = future.get();<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>          if (store.isSloppyMemStore()) {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            hasSloppyStores = true;<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>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>              storeMaxSequenceId);<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            maxSeqId = storeMaxSequenceId;<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>          }<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>          }<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>        }<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>        allStoresOpened = true;<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>        if(hasSloppyStores) {<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>                  .build();<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        }<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>      } catch (InterruptedException e) {<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>      } catch (ExecutionException e) {<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        throw new IOException(e.getCause());<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>      } finally {<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        if (!allStoresOpened) {<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>          // something went wrong, close all opened stores<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>          for (HStore store : this.stores.values()) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>            try {<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>              store.close();<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>            } catch (IOException e) {<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>              LOG.warn("close store failed", e);<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>            }<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          }<a name="line.1075"></a>
+<span class="sourceLineNo">961</span>    if (this.writestate.writesEnabled) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      // Remove temporary data left over from old regions<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      fs.cleanupTempDir();<a name="line.965"></a>
+<span class="sourceLineNo">966</span>    }<a name="line.966"></a>
+<span class="sourceLineNo">967</span><a name="line.967"></a>
+<span class="sourceLineNo">968</span>    if (this.writestate.writesEnabled) {<a name="line.968"></a>
+<span class="sourceLineNo">969</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.969"></a>
+<span class="sourceLineNo">970</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.970"></a>
+<span class="sourceLineNo">971</span>      // these directories here on open.  We may be opening a region that was<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      // being split but we crashed in the middle of it all.<a name="line.972"></a>
+<span class="sourceLineNo">973</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.973"></a>
+<span class="sourceLineNo">974</span>      fs.cleanupAnySplitDetritus();<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      fs.cleanupMergesDir();<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    }<a name="line.976"></a>
+<span class="sourceLineNo">977</span><a name="line.977"></a>
+<span class="sourceLineNo">978</span>    // Initialize split policy<a name="line.978"></a>
+<span class="sourceLineNo">979</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.979"></a>
+<span class="sourceLineNo">980</span><a name="line.980"></a>
+<span class="sourceLineNo">981</span>    // Initialize flush policy<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.982"></a>
+<span class="sourceLineNo">983</span><a name="line.983"></a>
+<span class="sourceLineNo">984</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.984"></a>
+<span class="sourceLineNo">985</span>    for (HStore store: stores.values()) {<a name="line.985"></a>
+<span class="sourceLineNo">986</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<a name="line.986"></a>
+<span class="sourceLineNo">987</span>    }<a name="line.987"></a>
+<span class="sourceLineNo">988</span><a name="line.988"></a>
+<span class="sourceLineNo">989</span>    // Use maximum of log sequenceid or that which was found in stores<a name="line.989"></a>
+<span class="sourceLineNo">990</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.990"></a>
+<span class="sourceLineNo">991</span>    long maxSeqIdFromFile =<a name="line.991"></a>
+<span class="sourceLineNo">992</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.994"></a>
+<span class="sourceLineNo">995</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.995"></a>
+<span class="sourceLineNo">996</span>    // the max sequence id file.<a name="line.996"></a>
+<span class="sourceLineNo">997</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.997"></a>
+<span class="sourceLineNo">998</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.998"></a>
+<span class="sourceLineNo">999</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<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>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span><a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>    // A region can be reopened if failed a split; reset flags<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>    this.closing.set(false);<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    this.closed.set(false);<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span><a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>    if (coprocessorHost != null) {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>      coprocessorHost.postOpen();<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>    }<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span><a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>    status.markComplete("Region opened successfully");<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>    return nextSeqId;<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>  }<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span><a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>  /**<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>   * Open all Stores.<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>   * @param reporter<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>   * @param status<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>   * @return Highest sequenceId found out in a Store.<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>   * @throws IOException<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>   */<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>      throws IOException {<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    // Load in all the HStores.<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>    long maxSeqId = -1;<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>    long maxMemstoreTS = -1;<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span><a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>      // initialize each store in parallel<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>          @Override<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>          public HStore call() throws IOException {<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>            return instantiateHStore(family);<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>          }<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>        });<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>      }<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>      boolean allStoresOpened = false;<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>      boolean hasSloppyStores = false;<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>      try {<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>          HStore store = future.get();<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>          if (store.isSloppyMemStore()) {<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>            hasSloppyStores = true;<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>          }<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span><a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>              storeMaxSequenceId);<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>            maxSeqId = storeMaxSequenceId;<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>          }<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>          }<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span>        }<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>        allStoresOpened = true;<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>        if(hasSloppyStores) {<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>                  .build();<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1075"></a>
 <span class="sourceLineNo">1076</span>        }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      }<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    }<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>  }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span><a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>    // Initialize all the HStores<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>    status.setStatus("Warming up all the Stores");<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    try {<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>      initializeStores(reporter, status);<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>    } finally {<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>      status.markComplete("Done warming up.");<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>    }<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>  }<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>   * @return Map of StoreFiles by column family<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>   */<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    for (HStore store : stores.values()) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      if (storeFiles == null) {<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>        continue;<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>        storeFileNames.add(storeFile.getPath());<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      }<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>    }<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>    return allStoreFiles;<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>  }<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span><a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>  @VisibleForTesting<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>        mvcc);<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  }<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span><a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>        mvcc);<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span><a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>    // Store SeqId in HDFS when a region closes<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    // table is still online<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>        mvcc.getReadPoint());<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>    }<a name="line.1136"></a>
+<span class="sourceLineNo">1077</span>      } catch (InterruptedException e) {<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>      } catch (ExecutionException e) {<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>        throw new IOException(e.getCause());<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      } finally {<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>        if (!allStoresOpened) {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>          // something went wrong, close all opened stores<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>          for (HStore store : this.stores.values()) {<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>            try {<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>              store.close();<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>            } catch (IOException e) {<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>              LOG.warn("close store failed", e);<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>            }<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>      }<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>    }<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>  }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span><a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>    // Initialize all the HStores<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>    status.setStatus("Warming up all the Stores");<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>    try {<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>      initializeStores(reporter, status);<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>    } finally {<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>      status.markComplete("Done warming up.");<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>    }<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>  }<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span><a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>  /**<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>   * @return Map of StoreFiles by column family<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>   */<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>    for (HStore store : stores.values()) {<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>      if (storeFiles == null) {<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>        continue;<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span>      }<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>        storeFileNames.add(storeFile.getPath());<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>      }<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>    }<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>    return allStoreFiles;<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>  }<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span><a name="line.1128"></a>
+<span class="sourceLineNo">1129</span>  @VisibleForTesting<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>        mvcc);<a name="line.1136"></a>
 <span class="sourceLineNo">1137</span>  }<a name="line.1137"></a>
 <span class="sourceLineNo">1138</span><a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>  /**<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>   * @return True if this region has references.<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>   */<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>  public boolean hasReferences() {<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<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>  public void blockUpdates() {<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>    this.updatesLock.writeLock().lock();<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>  }<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span><a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>  public void unblockUpdates() {<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>    this.updatesLock.writeLock().unlock();<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>  }<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span><a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>    return hdfsBlocksDistribution;<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>  }<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span><a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>  /**<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>   * @param conf configuration<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>   * @param regionInfo encoded name of the region<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>   * @throws IOException<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>   */<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>  }<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span><a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>  /**<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>   * @param conf configuration<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>   * @param regionInfo encoded name of the region<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>   * @param tablePath the table directory<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>   * @throws IOException<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>   */<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1186"></a>
-<span class="sourceLineNo">1187</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1188"></a>
-<span class="sourceLineNo">1189</span><a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span>      if (locatedFileStatusList == null) {<a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>        continue;<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>      }<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span><a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>        Path p = status.getPath();<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>          // creation<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>              status.getBlockLocations());<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span>        } else {<a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>          throw new IOException("path=" + p<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>              + " doesn't look like a valid StoreFile");<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>        }<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>      }<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>    }<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>    return hdfsBlocksDistribution;<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>   * Increase the size of mem store in this region and the size of global mem<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>   * store<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>   */<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>  }<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span><a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>    if (this.rsAccounting != null) {<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>    }<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>    long dataSize =<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1234"></a>
+<span class="sourceLineNo">1139</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span>        mvcc);<a name="line.1145"></a>
+<span class="sourceLineNo">1146</span><a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>    // Store SeqId in HDFS when a region closes<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>    // table is still online<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span>        mvcc.getReadPoint());<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>    }<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>  }<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span><a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>  /**<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>   * @return True if this region has references.<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>   */<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>  public boolean hasReferences() {<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>  }<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span><a name="line.1162"></a>
+<span class="sourceLineNo">1163</span>  public void blockUpdates() {<a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>    this.updatesLock.writeLock().lock();<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>  }<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span><a name="line.1166"></a>
+<span class="sourceLineNo">1167</span>  public void unblockUpdates() {<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>    this.updatesLock.writeLock().unlock();<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>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1172"></a>
+<span class="sourceLineNo">1173</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1174"></a>
+<span class="sourceLineNo">1175</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>    return hdfsBlocksDistribution;<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span>  }<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span><a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>  /**<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>   * @param conf configuration<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1182"></a>
+<span class="sourceLineNo">1183</span>   * @param regionInfo encoded name of the region<a name="line.1183"></a>
+<span class="sourceLineNo">1184</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1184"></a>
+<span class="sourceLineNo">1185</span>   * @throws IOException<a name="line.1185"></a>
+<span class="sourceLineNo">1186</span>   */<a name="line.1186"></a>
+<span class="sourceLineNo">1187</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1187"></a>
+<span class="sourceLineNo">1188</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1188"></a>
+<span class="sourceLineNo">1189</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1189"></a>
+<span class="sourceLineNo">1190</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1190"></a>
+<span class="sourceLineNo">1191</span>  }<a name="line.1191"></a>
+<span class="sourceLineNo">1192</span><a name="line.1192"></a>
+<span class="sourceLineNo">1193</span>  /**<a name="line.1193"></a>
+<span class="sourceLineNo">1194</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1194"></a>
+<span class="sourceLineNo">1195</span>   * @param conf configuration<a name="line.1195"></a>
+<span class="sourceLineNo">1196</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1196"></a>
+<span class="sourceLineNo">1197</span>   * @param regionInfo encoded name of the region<a name="line.1197"></a>
+<span class="sourceLineNo">1198</span>   * @param tablePath the table directory<a name="line.1198"></a>
+<span class="sourceLineNo">1199</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1199"></a>
+<span class="sourceLineNo">1200</span>   * @throws IOException<a name="line.1200"></a>
+<span class="sourceLineNo">1201</span>   */<a name="line.1201"></a>
+<span class="sourceLineNo">1202</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1202"></a>
+<span class="sourceLineNo">1203</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1203"></a>
+<span class="sourceLineNo">1204</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1204"></a>
+<span class="sourceLineNo">1205</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1205"></a>
+<span class="sourceLineNo">1206</span><a name="line.1206"></a>
+<span class="sourceLineNo">1207</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1207"></a>
+<span class="sourceLineNo">1208</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1208"></a>
+<span class="sourceLineNo">1209</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1209"></a>
+<span class="sourceLineNo">1210</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1210"></a>
+<span class="sourceLineNo">1211</span>      if (locatedFileStatusList == null) {<a name="line.1211"></a>
+<span class="sourceLineNo">1212</span>        continue;<a name="line.1212"></a>
+<span class="sourceLineNo">1213</span>      }<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span><a name="line.1214"></a>
+<span class="sourceLineNo">1215</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1215"></a>
+<span class="sourceLineNo">1216</span>        Path p = status.getPath();<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1217"></a>
+<span class="sourceLineNo">1218</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span>          // creation<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1224"></a>
+<span class="sourceLineNo">1225</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1225"></a>
+<span class="sourceLineNo">1226</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1226"></a>
+<span class="sourceLineNo">1227</span>              status.getBlockLocations());<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span>        } else {<a name="line.1228"></a>
+<span class="sourceLineNo">1229</span>          throw new IOException("path=" + p<a name="line.1229"></a>
+<span class="sourceLineNo">1230</span>              + " doesn't look like a valid StoreFile");<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>    }<a name="line.1233"></a>
+<span class="sourceLineNo">1234</span>    return hdfsBlocksDistribution;<a name="line.1234"></a>
 <span class="sourceLineNo">1235</span>  }<a name="line.1235"></a>
 <span class="sourceLineNo">1236</span><a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>  }<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span><a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>    if (this.rsAccounting != null) {<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>    }<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>    long dataSize =<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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 checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    if (memStoreDataSize &lt; 0) {<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>    }<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>  }<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span><a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>  @Override<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>  public RegionInfo getRegionInfo() {<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>    return this.fs.getRegionInfo();<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>  }<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span><a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>  /**<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>   * @return Instance of {@link RegionServerServices} used by this HRegion.<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>   * Can be null.<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>   */<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>  RegionServerServices getRegionServerServices() {<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>    return this.rsServices;<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>  }<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span><a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>  @Override<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>  public long getReadRequestsCount() {<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>    return readRequestsCount.sum();<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>  }<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span><a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>  @Override<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>  public long getCpRequestsCount() {<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>    return cpRequestsCount.sum();<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>  @Override<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>  public long getFilteredReadRequestsCount() {<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>    return filteredReadRequestsCount.sum();<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>  @Override<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>  public long getWriteRequestsCount() {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    return writeRequestsCount.sum();<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>  }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>  @Override<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>  public long getMemStoreDataSize() {<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>    return memStoreSizing.getDataSize();<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>  @Override<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>  public long getMemStoreHeapSize() {<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>    return memStoreSizing.getHeapSize();<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>  }<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span><a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>  @Override<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>  public long getMemStoreOffHeapSize() {<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>    return memStoreSizing.getOffHeapSize();<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>  }<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span><a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>  /** @return store services for this region, to access services required by store level needs */<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>  public RegionServicesForStores getRegionServicesForStores() {<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>    return regionServicesForStores;<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>  @Override<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>  public long getNumMutationsWithoutWAL() {<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>    return numMutationsWithoutWAL.sum();<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>  @Override<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>  public long getDataInMemoryWithoutWAL() {<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>    return dataInMemoryWithoutWAL.sum();<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>  }<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span><a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>  @Override<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>  public long getBlockedRequestsCount() {<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>    return blockedRequestsCount.sum();<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>  }<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span><a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>  @Override<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>  public long getCheckAndMutateChecksPassed() {<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>    return checkAndMutateChecksPassed.sum();<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 long getCheckAndMutateChecksFailed() {<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    return checkAndMutateChecksFailed.sum();<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>  // TODO Needs to check whether we should expose our metrics system to CPs. If CPs themselves doing<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>  // the op and bypassing the core, this might be needed? Should be stop supporting the bypass<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>  // feature?<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>  public MetricsRegion getMetrics() {<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>    return metricsRegion;<a name="line.1342"></a>
+<span class="sourceLineNo">1237</span>  /**<a name="line.1237"></a>
+<span class="sourceLineNo">1238</span>   * Increase the size of mem store in this region and the size of global mem<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span>   * store<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span>   */<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>  }<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span><a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>    if (this.rsAccounting != null) {<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>    }<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>    long dataSize =<a name="line.1249"></a>
+<span class="sourceLineNo">1250</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1250"></a>
+<span class="sourceLineNo">1251</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>  }<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span><a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span>  }<a name="line.1256"></a>
+<span class="sourceLineNo">1257</span><a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>    if (this.rsAccounting != null) {<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>    }<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>    long dataSize =<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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>  private void checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>    if (memStoreDataSize &lt; 0) {<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>    }<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>  }<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span><a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>  @Override<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>  public RegionInfo getRegionInfo() {<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>    return this.fs.getRegionInfo();<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>  }<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>
+<spa

<TRUNCATED>

[12/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html
index 2709ea3..4a11f27 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html
@@ -37,309 +37,299 @@
 <span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.executor.EventType;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.regionserver.HRegion;<a name="line.30"></a>
 <span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.regionserver.Region;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.regionserver.RegionServerAccounting;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.regionserver.RegionServerServices;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.regionserver.RegionServerServices.PostOpenDeployContext;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.regionserver.RegionServerServices.RegionStateTransitionContext;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.slf4j.Logger;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.slf4j.LoggerFactory;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>/**<a name="line.41"></a>
-<span class="sourceLineNo">042</span> * Handles opening of a region on a region server.<a name="line.42"></a>
-<span class="sourceLineNo">043</span> * &lt;p&gt;<a name="line.43"></a>
-<span class="sourceLineNo">044</span> * This is executed after receiving an OPEN RPC from the master or client.<a name="line.44"></a>
-<span class="sourceLineNo">045</span> */<a name="line.45"></a>
-<span class="sourceLineNo">046</span>@InterfaceAudience.Private<a name="line.46"></a>
-<span class="sourceLineNo">047</span>public class OpenRegionHandler extends EventHandler {<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  private static final Logger LOG = LoggerFactory.getLogger(OpenRegionHandler.class);<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>  protected final RegionServerServices rsServices;<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>  private final RegionInfo regionInfo;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>  private final TableDescriptor htd;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>  private final long masterSystemTime;<a name="line.54"></a>
-<span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>  public OpenRegionHandler(final Server server,<a name="line.56"></a>
-<span class="sourceLineNo">057</span>      final RegionServerServices rsServices, RegionInfo regionInfo,<a name="line.57"></a>
-<span class="sourceLineNo">058</span>      TableDescriptor htd, long masterSystemTime) {<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    this(server, rsServices, regionInfo, htd, masterSystemTime, EventType.M_RS_OPEN_REGION);<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  }<a name="line.60"></a>
-<span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>  protected OpenRegionHandler(final Server server,<a name="line.62"></a>
-<span class="sourceLineNo">063</span>                              final RegionServerServices rsServices, final RegionInfo regionInfo,<a name="line.63"></a>
-<span class="sourceLineNo">064</span>                              final TableDescriptor htd, long masterSystemTime, EventType eventType) {<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    super(server, eventType);<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    this.rsServices = rsServices;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    this.regionInfo = regionInfo;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    this.htd = htd;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    this.masterSystemTime = masterSystemTime;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  }<a name="line.70"></a>
-<span class="sourceLineNo">071</span><a name="line.71"></a>
-<span class="sourceLineNo">072</span>  public RegionInfo getRegionInfo() {<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    return regionInfo;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  }<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  @Override<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  public void process() throws IOException {<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    boolean openSuccessful = false;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    final String regionName = regionInfo.getRegionNameAsString();<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    HRegion region = null;<a name="line.80"></a>
-<span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>    try {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      if (this.server.isStopped() || this.rsServices.isStopping()) {<a name="line.83"></a>
-<span class="sourceLineNo">084</span>        return;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      }<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      final String encodedName = regionInfo.getEncodedName();<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>      // 2 different difficult situations can occur<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      // 1) The opening was cancelled. This is an expected situation<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      // 2) The region is now marked as online while we're suppose to open. This would be a bug.<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>      // Check that this region is not already online<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      if (this.rsServices.getRegion(encodedName) != null) {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        LOG.error("Region " + encodedName +<a name="line.94"></a>
-<span class="sourceLineNo">095</span>            " was already online when we started processing the opening. " +<a name="line.95"></a>
-<span class="sourceLineNo">096</span>            "Marking this new attempt as failed");<a name="line.96"></a>
-<span class="sourceLineNo">097</span>        return;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>      // Check that we're still supposed to open the region.<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      // If fails, just return.  Someone stole the region from under us.<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      if (!isRegionStillOpening()){<a name="line.102"></a>
-<span class="sourceLineNo">103</span>        LOG.error("Region " + encodedName + " opening cancelled");<a name="line.103"></a>
-<span class="sourceLineNo">104</span>        return;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      }<a name="line.105"></a>
-<span class="sourceLineNo">106</span><a name="line.106"></a>
-<span class="sourceLineNo">107</span>      // Open region.  After a successful open, failures in subsequent<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      // processing needs to do a close as part of cleanup.<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      region = openRegion();<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      if (region == null) {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>        return;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      }<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>      if (!updateMeta(region, masterSystemTime) || this.server.isStopped() ||<a name="line.114"></a>
-<span class="sourceLineNo">115</span>          this.rsServices.isStopping()) {<a name="line.115"></a>
-<span class="sourceLineNo">116</span>        return;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      }<a name="line.117"></a>
-<span class="sourceLineNo">118</span><a name="line.118"></a>
-<span class="sourceLineNo">119</span>      if (!isRegionStillOpening()) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>        return;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      }<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>      // Successful region open, and add it to MutableOnlineRegions<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      this.rsServices.addRegion(region);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      openSuccessful = true;<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>      // Done!  Successful region open<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      LOG.debug("Opened " + regionName + " on " + this.server.getServerName());<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    } finally {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      // Do all clean up here<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      if (!openSuccessful) {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>        doCleanUpOnFailedOpen(region);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      final Boolean current = this.rsServices.getRegionsInTransitionInRS().<a name="line.134"></a>
-<span class="sourceLineNo">135</span>          remove(this.regionInfo.getEncodedNameAsBytes());<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>      // Let's check if we have met a race condition on open cancellation....<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      // A better solution would be to not have any race condition.<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      // this.rsServices.getRegionsInTransitionInRS().remove(<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      //  this.regionInfo.getEncodedNameAsBytes(), Boolean.TRUE);<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      // would help.<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      if (openSuccessful) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>        if (current == null) { // Should NEVER happen, but let's be paranoid.<a name="line.143"></a>
-<span class="sourceLineNo">144</span>          LOG.error("Bad state: we've just opened a region that was NOT in transition. Region="<a name="line.144"></a>
-<span class="sourceLineNo">145</span>              + regionName);<a name="line.145"></a>
-<span class="sourceLineNo">146</span>        } else if (Boolean.FALSE.equals(current)) { // Can happen, if we're<a name="line.146"></a>
-<span class="sourceLineNo">147</span>                                                    // really unlucky.<a name="line.147"></a>
-<span class="sourceLineNo">148</span>          LOG.error("Race condition: we've finished to open a region, while a close was requested "<a name="line.148"></a>
-<span class="sourceLineNo">149</span>              + " on region=" + regionName + ". It can be a critical error, as a region that"<a name="line.149"></a>
-<span class="sourceLineNo">150</span>              + " should be closed is now opened. Closing it now");<a name="line.150"></a>
-<span class="sourceLineNo">151</span>          cleanupFailedOpen(region);<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>    }<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  }<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  private void doCleanUpOnFailedOpen(HRegion region)<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      throws IOException {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    try {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      if (region != null) {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        cleanupFailedOpen(region);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      }<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    } finally {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      rsServices.reportRegionStateTransition(new RegionStateTransitionContext(<a name="line.164"></a>
-<span class="sourceLineNo">165</span>          TransitionCode.FAILED_OPEN, HConstants.NO_SEQNUM, -1, regionInfo));<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    }<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  }<a name="line.167"></a>
-<span class="sourceLineNo">168</span><a name="line.168"></a>
-<span class="sourceLineNo">169</span>  /**<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * Update ZK or META.  This can take a while if for example the<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * hbase:meta is not available -- if server hosting hbase:meta crashed and we are<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * waiting on it to come back -- so run in a thread and keep updating znode<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * state meantime so master doesn't timeout our region-in-transition.<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * Caller must cleanup region if this fails.<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   */<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  boolean updateMeta(final HRegion r, long masterSystemTime) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    if (this.server.isStopped() || this.rsServices.isStopping()) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      return false;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    // Object we do wait/notify on.  Make it boolean.  If set, we're done.<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    // Else, wait.<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    final AtomicBoolean signaller = new AtomicBoolean(false);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    PostOpenDeployTasksThread t = new PostOpenDeployTasksThread(r,<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      this.server, this.rsServices, signaller, masterSystemTime);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    t.start();<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    // Post open deploy task:<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    //   meta =&gt; update meta location in ZK<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    //   other region =&gt; update meta<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    while (!signaller.get() &amp;&amp; t.isAlive() &amp;&amp; !this.server.isStopped() &amp;&amp;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>        !this.rsServices.isStopping() &amp;&amp; isRegionStillOpening()) {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      synchronized (signaller) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        try {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>          // Wait for 10 seconds, so that server shutdown<a name="line.193"></a>
-<span class="sourceLineNo">194</span>          // won't take too long if this thread happens to run.<a name="line.194"></a>
-<span class="sourceLineNo">195</span>          if (!signaller.get()) signaller.wait(10000);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        } catch (InterruptedException e) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>          // Go to the loop check.<a name="line.197"></a>
-<span class="sourceLineNo">198</span>        }<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      }<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    // Is thread still alive?  We may have left above loop because server is<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    // stopping or we timed out the edit.  Is so, interrupt it.<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    if (t.isAlive()) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      if (!signaller.get()) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        // Thread still running; interrupt<a name="line.205"></a>
-<span class="sourceLineNo">206</span>        LOG.debug("Interrupting thread " + t);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>        t.interrupt();<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      }<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      try {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        t.join();<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      } catch (InterruptedException ie) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        LOG.warn("Interrupted joining " +<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          r.getRegionInfo().getRegionNameAsString(), ie);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        Thread.currentThread().interrupt();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      }<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    }<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>    // Was there an exception opening the region?  This should trigger on<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    // InterruptedException too.  If so, we failed.<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    return (!Thread.interrupted() &amp;&amp; t.getException() == null);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>  /**<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   * Thread to run region post open tasks. Call {@link #getException()} after the thread finishes<a name="line.224"></a>
-<span class="sourceLineNo">225</span>   * to check for exceptions running {@link RegionServerServices#postOpenDeployTasks(Region)}.<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   */<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  static class PostOpenDeployTasksThread extends Thread {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    private Throwable exception = null;<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    private final Server server;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    private final RegionServerServices services;<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    private final HRegion region;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    private final AtomicBoolean signaller;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    private final long masterSystemTime;<a name="line.233"></a>
-<span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>    PostOpenDeployTasksThread(final HRegion region, final Server server,<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        final RegionServerServices services, final AtomicBoolean signaller, long masterSystemTime) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      super("PostOpenDeployTasks:" + region.getRegionInfo().getEncodedName());<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      this.setDaemon(true);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      this.server = server;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      this.services = services;<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      this.region = region;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      this.signaller = signaller;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      this.masterSystemTime = masterSystemTime;<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>    @Override<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    public void run() {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      try {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        this.services.postOpenDeployTasks(new PostOpenDeployContext(region, masterSystemTime));<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      } catch (Throwable e) {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        String msg = "Exception running postOpenDeployTasks; region=" +<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          this.region.getRegionInfo().getEncodedName();<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        this.exception = e;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        if (e instanceof IOException<a name="line.254"></a>
-<span class="sourceLineNo">255</span>            &amp;&amp; isRegionStillOpening(region.getRegionInfo(), services)) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>          server.abort(msg, e);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        } else {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          LOG.warn(msg, e);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        }<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      }<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      // We're done.  Set flag then wake up anyone waiting on thread to complete.<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      this.signaller.set(true);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      synchronized (this.signaller) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        this.signaller.notify();<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      }<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>    /**<a name="line.268"></a>
-<span class="sourceLineNo">269</span>     * @return Null or the run exception; call this method after thread is done.<a name="line.269"></a>
-<span class="sourceLineNo">270</span>     */<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    Throwable getException() {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      return this.exception;<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><a name="line.275"></a>
-<span class="sourceLineNo">276</span>  /**<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   * @return Instance of HRegion if successful open else null.<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   */<a name="line.278"></a>
-<span class="sourceLineNo">279</span>  HRegion openRegion() {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    HRegion region = null;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    try {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      // Instantiate the region.  This also periodically tickles OPENING<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      // state so master doesn't timeout this region in transition.<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      region = HRegion.openHRegion(this.regionInfo, this.htd,<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        this.rsServices.getWAL(this.regionInfo),<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        this.server.getConfiguration(),<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        this.rsServices,<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        new CancelableProgressable() {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          @Override<a name="line.289"></a>
-<span class="sourceLineNo">290</span>          public boolean progress() {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>            if (!isRegionStillOpening()) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>              LOG.warn("Open region aborted since it isn't opening any more");<a name="line.292"></a>
-<span class="sourceLineNo">293</span>              return false;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>            }<a name="line.294"></a>
-<span class="sourceLineNo">295</span>            return true;<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>    } catch (Throwable t) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      // We failed open. Our caller will see the 'null' return value<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      // and transition the node back to FAILED_OPEN. If that fails,<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      // we rely on the Timeout Monitor in the master to reassign.<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      LOG.error(<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          "Failed open of region=" + this.regionInfo.getRegionNameAsString()<a name="line.303"></a>
-<span class="sourceLineNo">304</span>              + ", starting to roll back the global memstore size.", t);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      // Decrease the global memstore size.<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      if (this.rsServices != null) {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>        RegionServerAccounting rsAccounting =<a name="line.307"></a>
-<span class="sourceLineNo">308</span>          this.rsServices.getRegionServerAccounting();<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        if (rsAccounting != null) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>          rsAccounting.rollbackRegionReplayEditsSize(this.regionInfo.getRegionName());<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>    }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    return region;<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>  void cleanupFailedOpen(final HRegion region) throws IOException {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    if (region != null) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      this.rsServices.removeRegion(region, null);<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      region.close();<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><a name="line.323"></a>
-<span class="sourceLineNo">324</span>  private static boolean isRegionStillOpening(<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      RegionInfo regionInfo, RegionServerServices rsServices) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    byte[] encodedName = regionInfo.getEncodedNameAsBytes();<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    Boolean action = rsServices.getRegionsInTransitionInRS().get(encodedName);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    return Boolean.TRUE.equals(action); // true means opening for RIT<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>  private boolean isRegionStillOpening() {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    return isRegionStillOpening(regionInfo, rsServices);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
-<span class="sourceLineNo">334</span>}<a name="line.334"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.regionserver.RegionServerServices;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.regionserver.RegionServerServices.PostOpenDeployContext;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.regionserver.RegionServerServices.RegionStateTransitionContext;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.slf4j.Logger;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.slf4j.LoggerFactory;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>/**<a name="line.40"></a>
+<span class="sourceLineNo">041</span> * Handles opening of a region on a region server.<a name="line.41"></a>
+<span class="sourceLineNo">042</span> * &lt;p&gt;<a name="line.42"></a>
+<span class="sourceLineNo">043</span> * This is executed after receiving an OPEN RPC from the master or client.<a name="line.43"></a>
+<span class="sourceLineNo">044</span> */<a name="line.44"></a>
+<span class="sourceLineNo">045</span>@InterfaceAudience.Private<a name="line.45"></a>
+<span class="sourceLineNo">046</span>public class OpenRegionHandler extends EventHandler {<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  private static final Logger LOG = LoggerFactory.getLogger(OpenRegionHandler.class);<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>  protected final RegionServerServices rsServices;<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>  private final RegionInfo regionInfo;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  private final TableDescriptor htd;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  private final long masterSystemTime;<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>  public OpenRegionHandler(final Server server,<a name="line.55"></a>
+<span class="sourceLineNo">056</span>      final RegionServerServices rsServices, RegionInfo regionInfo,<a name="line.56"></a>
+<span class="sourceLineNo">057</span>      TableDescriptor htd, long masterSystemTime) {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    this(server, rsServices, regionInfo, htd, masterSystemTime, EventType.M_RS_OPEN_REGION);<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  }<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  protected OpenRegionHandler(final Server server,<a name="line.61"></a>
+<span class="sourceLineNo">062</span>                              final RegionServerServices rsServices, final RegionInfo regionInfo,<a name="line.62"></a>
+<span class="sourceLineNo">063</span>                              final TableDescriptor htd, long masterSystemTime, EventType eventType) {<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    super(server, eventType);<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    this.rsServices = rsServices;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    this.regionInfo = regionInfo;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    this.htd = htd;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    this.masterSystemTime = masterSystemTime;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  }<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>  public RegionInfo getRegionInfo() {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    return regionInfo;<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>  @Override<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  public void process() throws IOException {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    boolean openSuccessful = false;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    final String regionName = regionInfo.getRegionNameAsString();<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    HRegion region = null;<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>    try {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>      if (this.server.isStopped() || this.rsServices.isStopping()) {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>        return;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      }<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      final String encodedName = regionInfo.getEncodedName();<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>      // 2 different difficult situations can occur<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      // 1) The opening was cancelled. This is an expected situation<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      // 2) The region is now marked as online while we're suppose to open. This would be a bug.<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>      // Check that this region is not already online<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      if (this.rsServices.getRegion(encodedName) != null) {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>        LOG.error("Region " + encodedName +<a name="line.93"></a>
+<span class="sourceLineNo">094</span>            " was already online when we started processing the opening. " +<a name="line.94"></a>
+<span class="sourceLineNo">095</span>            "Marking this new attempt as failed");<a name="line.95"></a>
+<span class="sourceLineNo">096</span>        return;<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>      // Check that we're still supposed to open the region.<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      // If fails, just return.  Someone stole the region from under us.<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      if (!isRegionStillOpening()){<a name="line.101"></a>
+<span class="sourceLineNo">102</span>        LOG.error("Region " + encodedName + " opening cancelled");<a name="line.102"></a>
+<span class="sourceLineNo">103</span>        return;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      }<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span>      // Open region.  After a successful open, failures in subsequent<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      // processing needs to do a close as part of cleanup.<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      region = openRegion();<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      if (region == null) {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        return;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      }<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>      if (!updateMeta(region, masterSystemTime) || this.server.isStopped() ||<a name="line.113"></a>
+<span class="sourceLineNo">114</span>          this.rsServices.isStopping()) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>        return;<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>      if (!isRegionStillOpening()) {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>        return;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      }<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>      // Successful region open, and add it to MutableOnlineRegions<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      this.rsServices.addRegion(region);<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      openSuccessful = true;<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>      // Done!  Successful region open<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      LOG.debug("Opened " + regionName + " on " + this.server.getServerName());<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    } finally {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      // Do all clean up here<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      if (!openSuccessful) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>        doCleanUpOnFailedOpen(region);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      }<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      final Boolean current = this.rsServices.getRegionsInTransitionInRS().<a name="line.133"></a>
+<span class="sourceLineNo">134</span>          remove(this.regionInfo.getEncodedNameAsBytes());<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>      // Let's check if we have met a race condition on open cancellation....<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      // A better solution would be to not have any race condition.<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      // this.rsServices.getRegionsInTransitionInRS().remove(<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      //  this.regionInfo.getEncodedNameAsBytes(), Boolean.TRUE);<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      // would help.<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      if (openSuccessful) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>        if (current == null) { // Should NEVER happen, but let's be paranoid.<a name="line.142"></a>
+<span class="sourceLineNo">143</span>          LOG.error("Bad state: we've just opened a region that was NOT in transition. Region="<a name="line.143"></a>
+<span class="sourceLineNo">144</span>              + regionName);<a name="line.144"></a>
+<span class="sourceLineNo">145</span>        } else if (Boolean.FALSE.equals(current)) { // Can happen, if we're<a name="line.145"></a>
+<span class="sourceLineNo">146</span>                                                    // really unlucky.<a name="line.146"></a>
+<span class="sourceLineNo">147</span>          LOG.error("Race condition: we've finished to open a region, while a close was requested "<a name="line.147"></a>
+<span class="sourceLineNo">148</span>              + " on region=" + regionName + ". It can be a critical error, as a region that"<a name="line.148"></a>
+<span class="sourceLineNo">149</span>              + " should be closed is now opened. Closing it now");<a name="line.149"></a>
+<span class="sourceLineNo">150</span>          cleanupFailedOpen(region);<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>    }<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>  private void doCleanUpOnFailedOpen(HRegion region)<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      throws IOException {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    try {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      if (region != null) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        cleanupFailedOpen(region);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      }<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    } finally {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      rsServices.reportRegionStateTransition(new RegionStateTransitionContext(<a name="line.163"></a>
+<span class="sourceLineNo">164</span>          TransitionCode.FAILED_OPEN, HConstants.NO_SEQNUM, -1, regionInfo));<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>  /**<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * Update ZK or META.  This can take a while if for example the<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * hbase:meta is not available -- if server hosting hbase:meta crashed and we are<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * waiting on it to come back -- so run in a thread and keep updating znode<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   * state meantime so master doesn't timeout our region-in-transition.<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * Caller must cleanup region if this fails.<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   */<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  boolean updateMeta(final HRegion r, long masterSystemTime) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    if (this.server.isStopped() || this.rsServices.isStopping()) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      return false;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    // Object we do wait/notify on.  Make it boolean.  If set, we're done.<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    // Else, wait.<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    final AtomicBoolean signaller = new AtomicBoolean(false);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    PostOpenDeployTasksThread t = new PostOpenDeployTasksThread(r,<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      this.server, this.rsServices, signaller, masterSystemTime);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    t.start();<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    // Post open deploy task:<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    //   meta =&gt; update meta location in ZK<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    //   other region =&gt; update meta<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    while (!signaller.get() &amp;&amp; t.isAlive() &amp;&amp; !this.server.isStopped() &amp;&amp;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        !this.rsServices.isStopping() &amp;&amp; isRegionStillOpening()) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      synchronized (signaller) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        try {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>          // Wait for 10 seconds, so that server shutdown<a name="line.192"></a>
+<span class="sourceLineNo">193</span>          // won't take too long if this thread happens to run.<a name="line.193"></a>
+<span class="sourceLineNo">194</span>          if (!signaller.get()) signaller.wait(10000);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        } catch (InterruptedException e) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>          // Go to the loop check.<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>    }<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    // Is thread still alive?  We may have left above loop because server is<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    // stopping or we timed out the edit.  Is so, interrupt it.<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    if (t.isAlive()) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      if (!signaller.get()) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        // Thread still running; interrupt<a name="line.204"></a>
+<span class="sourceLineNo">205</span>        LOG.debug("Interrupting thread " + t);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        t.interrupt();<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      }<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      try {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        t.join();<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      } catch (InterruptedException ie) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        LOG.warn("Interrupted joining " +<a name="line.211"></a>
+<span class="sourceLineNo">212</span>          r.getRegionInfo().getRegionNameAsString(), ie);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        Thread.currentThread().interrupt();<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>    // Was there an exception opening the region?  This should trigger on<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    // InterruptedException too.  If so, we failed.<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    return (!Thread.interrupted() &amp;&amp; t.getException() == null);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  }<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>  /**<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * Thread to run region post open tasks. Call {@link #getException()} after the thread finishes<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * to check for exceptions running {@link RegionServerServices#postOpenDeployTasks(Region)}.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   */<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  static class PostOpenDeployTasksThread extends Thread {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    private Throwable exception = null;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    private final Server server;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    private final RegionServerServices services;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    private final HRegion region;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    private final AtomicBoolean signaller;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    private final long masterSystemTime;<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>    PostOpenDeployTasksThread(final HRegion region, final Server server,<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        final RegionServerServices services, final AtomicBoolean signaller, long masterSystemTime) {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      super("PostOpenDeployTasks:" + region.getRegionInfo().getEncodedName());<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      this.setDaemon(true);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      this.server = server;<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      this.services = services;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      this.region = region;<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      this.signaller = signaller;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      this.masterSystemTime = masterSystemTime;<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 void run() {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      try {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        this.services.postOpenDeployTasks(new PostOpenDeployContext(region, masterSystemTime));<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      } catch (Throwable e) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        String msg = "Exception running postOpenDeployTasks; region=" +<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          this.region.getRegionInfo().getEncodedName();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        this.exception = e;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        if (e instanceof IOException<a name="line.253"></a>
+<span class="sourceLineNo">254</span>            &amp;&amp; isRegionStillOpening(region.getRegionInfo(), services)) {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>          server.abort(msg, e);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        } else {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>          LOG.warn(msg, e);<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        }<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      }<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      // We're done.  Set flag then wake up anyone waiting on thread to complete.<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      this.signaller.set(true);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      synchronized (this.signaller) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        this.signaller.notify();<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    }<a name="line.265"></a>
+<span class="sourceLineNo">266</span><a name="line.266"></a>
+<span class="sourceLineNo">267</span>    /**<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     * @return Null or the run exception; call this method after thread is done.<a name="line.268"></a>
+<span class="sourceLineNo">269</span>     */<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    Throwable getException() {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      return this.exception;<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><a name="line.274"></a>
+<span class="sourceLineNo">275</span>  /**<a name="line.275"></a>
+<span class="sourceLineNo">276</span>   * @return Instance of HRegion if successful open else null.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>   */<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  HRegion openRegion() {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    HRegion region = null;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    try {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      // Instantiate the region.  This also periodically tickles OPENING<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      // state so master doesn't timeout this region in transition.<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      region = HRegion.openHRegion(this.regionInfo, this.htd,<a name="line.283"></a>
+<span class="sourceLineNo">284</span>        this.rsServices.getWAL(this.regionInfo),<a name="line.284"></a>
+<span class="sourceLineNo">285</span>        this.server.getConfiguration(),<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        this.rsServices,<a name="line.286"></a>
+<span class="sourceLineNo">287</span>        new CancelableProgressable() {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          @Override<a name="line.288"></a>
+<span class="sourceLineNo">289</span>          public boolean progress() {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>            if (!isRegionStillOpening()) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>              LOG.warn("Open region aborted since it isn't opening any more");<a name="line.291"></a>
+<span class="sourceLineNo">292</span>              return false;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            }<a name="line.293"></a>
+<span class="sourceLineNo">294</span>            return true;<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>    } catch (Throwable t) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      // We failed open. Our caller will see the 'null' return value<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      // and transition the node back to FAILED_OPEN. If that fails,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      // we rely on the Timeout Monitor in the master to reassign.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      LOG.error(<a name="line.301"></a>
+<span class="sourceLineNo">302</span>          "Failed open of region=" + this.regionInfo.getRegionNameAsString(), t);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    return region;<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>  void cleanupFailedOpen(final HRegion region) throws IOException {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    if (region != null) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      this.rsServices.removeRegion(region, null);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      region.close();<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><a name="line.313"></a>
+<span class="sourceLineNo">314</span>  private static boolean isRegionStillOpening(<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      RegionInfo regionInfo, RegionServerServices rsServices) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    byte[] encodedName = regionInfo.getEncodedNameAsBytes();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    Boolean action = rsServices.getRegionsInTransitionInRS().get(encodedName);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    return Boolean.TRUE.equals(action); // true means opening for RIT<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  }<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  private boolean isRegionStillOpening() {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    return isRegionStillOpening(regionInfo, rsServices);<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>
 
 
 


[36/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html
index 1ff1ec5..2894243 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapper.html
@@ -28,128 +28,136 @@
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import java.util.Map;<a name="line.21"></a>
 <span class="sourceLineNo">022</span>import java.util.Map.Entry;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.23"></a>
-<span class="sourceLineNo">024</span><a name="line.24"></a>
-<span class="sourceLineNo">025</span>/**<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * This is the interface that will expose information to hadoop1/hadoop2 implementations of the<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * MetricsMasterSource.<a name="line.27"></a>
-<span class="sourceLineNo">028</span> */<a name="line.28"></a>
-<span class="sourceLineNo">029</span>@InterfaceAudience.Private<a name="line.29"></a>
-<span class="sourceLineNo">030</span>public interface MetricsMasterWrapper {<a name="line.30"></a>
-<span class="sourceLineNo">031</span><a name="line.31"></a>
-<span class="sourceLineNo">032</span>  /**<a name="line.32"></a>
-<span class="sourceLineNo">033</span>   * Get ServerName<a name="line.33"></a>
-<span class="sourceLineNo">034</span>   */<a name="line.34"></a>
-<span class="sourceLineNo">035</span>  String getServerName();<a name="line.35"></a>
-<span class="sourceLineNo">036</span><a name="line.36"></a>
-<span class="sourceLineNo">037</span>  /**<a name="line.37"></a>
-<span class="sourceLineNo">038</span>   * Get Average Load<a name="line.38"></a>
-<span class="sourceLineNo">039</span>   *<a name="line.39"></a>
-<span class="sourceLineNo">040</span>   * @return Average Load<a name="line.40"></a>
-<span class="sourceLineNo">041</span>   */<a name="line.41"></a>
-<span class="sourceLineNo">042</span>  double getAverageLoad();<a name="line.42"></a>
-<span class="sourceLineNo">043</span><a name="line.43"></a>
-<span class="sourceLineNo">044</span>  /**<a name="line.44"></a>
-<span class="sourceLineNo">045</span>   * Get the Cluster ID<a name="line.45"></a>
-<span class="sourceLineNo">046</span>   *<a name="line.46"></a>
-<span class="sourceLineNo">047</span>   * @return Cluster ID<a name="line.47"></a>
-<span class="sourceLineNo">048</span>   */<a name="line.48"></a>
-<span class="sourceLineNo">049</span>  String getClusterId();<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>   * Get the ZooKeeper Quorum Info<a name="line.52"></a>
-<span class="sourceLineNo">053</span>   *<a name="line.53"></a>
-<span class="sourceLineNo">054</span>   * @return ZooKeeper Quorum Info<a name="line.54"></a>
-<span class="sourceLineNo">055</span>   */<a name="line.55"></a>
-<span class="sourceLineNo">056</span>  String getZookeeperQuorum();<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>   * Get the co-processors<a name="line.59"></a>
-<span class="sourceLineNo">060</span>   *<a name="line.60"></a>
-<span class="sourceLineNo">061</span>   * @return Co-processors<a name="line.61"></a>
-<span class="sourceLineNo">062</span>   */<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  String[] getCoprocessors();<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  /**<a name="line.65"></a>
-<span class="sourceLineNo">066</span>   * Get hbase master start time<a name="line.66"></a>
-<span class="sourceLineNo">067</span>   *<a name="line.67"></a>
-<span class="sourceLineNo">068</span>   * @return Start time of master in milliseconds<a name="line.68"></a>
-<span class="sourceLineNo">069</span>   */<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  long getStartTime();<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>   * Get the hbase master active time<a name="line.73"></a>
-<span class="sourceLineNo">074</span>   *<a name="line.74"></a>
-<span class="sourceLineNo">075</span>   * @return Time in milliseconds when master became active<a name="line.75"></a>
-<span class="sourceLineNo">076</span>   */<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  long getActiveTime();<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>  /**<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   * Whether this master is the active master<a name="line.80"></a>
-<span class="sourceLineNo">081</span>   *<a name="line.81"></a>
-<span class="sourceLineNo">082</span>   * @return True if this is the active master<a name="line.82"></a>
-<span class="sourceLineNo">083</span>   */<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  boolean getIsActiveMaster();<a name="line.84"></a>
-<span class="sourceLineNo">085</span><a name="line.85"></a>
-<span class="sourceLineNo">086</span>  /**<a name="line.86"></a>
-<span class="sourceLineNo">087</span>   * Get the live region servers<a name="line.87"></a>
-<span class="sourceLineNo">088</span>   *<a name="line.88"></a>
-<span class="sourceLineNo">089</span>   * @return Live region servers<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   */<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  String getRegionServers();<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  /**<a name="line.93"></a>
-<span class="sourceLineNo">094</span>   * Get the number of live region servers<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   *<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * @return number of Live region servers<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>  int getNumRegionServers();<a name="line.99"></a>
-<span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>  /**<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * Get the dead region servers<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   *<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @return Dead region Servers<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  String getDeadRegionServers();<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>   * Get the number of dead region servers<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   *<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * @return number of Dead region Servers<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   */<a name="line.112"></a>
-<span class="sourceLineNo">113</span>  int getNumDeadRegionServers();<a name="line.113"></a>
-<span class="sourceLineNo">114</span><a name="line.114"></a>
-<span class="sourceLineNo">115</span>  /**<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   * Get the number of master WAL files.<a name="line.116"></a>
-<span class="sourceLineNo">117</span>   */<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  long getNumWALFiles();<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>  /**<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   * Get the number of region split plans executed.<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   */<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  long getSplitPlanCount();<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>  /**<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * Get the number of region merge plans executed.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   */<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  long getMergePlanCount();<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>   * Gets the space usage and limit for each table.<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   */<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  Map&lt;String,Entry&lt;Long,Long&gt;&gt; getTableSpaceUtilization();<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  /**<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * Gets the space usage and limit for each namespace.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   */<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  Map&lt;String,Entry&lt;Long,Long&gt;&gt; getNamespaceSpaceUtilization();<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>   * Get the time in Millis when the master finished initializing/becoming the active master<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   */<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  long getMasterInitializationTime();<a name="line.143"></a>
-<span class="sourceLineNo">144</span>}<a name="line.144"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.util.PairOfSameType;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.24"></a>
+<span class="sourceLineNo">025</span><a name="line.25"></a>
+<span class="sourceLineNo">026</span>/**<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * This is the interface that will expose information to hadoop1/hadoop2 implementations of the<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * MetricsMasterSource.<a name="line.28"></a>
+<span class="sourceLineNo">029</span> */<a name="line.29"></a>
+<span class="sourceLineNo">030</span>@InterfaceAudience.Private<a name="line.30"></a>
+<span class="sourceLineNo">031</span>public interface MetricsMasterWrapper {<a name="line.31"></a>
+<span class="sourceLineNo">032</span><a name="line.32"></a>
+<span class="sourceLineNo">033</span>  /**<a name="line.33"></a>
+<span class="sourceLineNo">034</span>   * Get ServerName<a name="line.34"></a>
+<span class="sourceLineNo">035</span>   */<a name="line.35"></a>
+<span class="sourceLineNo">036</span>  String getServerName();<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>   * Get Average Load<a name="line.39"></a>
+<span class="sourceLineNo">040</span>   *<a name="line.40"></a>
+<span class="sourceLineNo">041</span>   * @return Average Load<a name="line.41"></a>
+<span class="sourceLineNo">042</span>   */<a name="line.42"></a>
+<span class="sourceLineNo">043</span>  double getAverageLoad();<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>  /**<a name="line.45"></a>
+<span class="sourceLineNo">046</span>   * Get the Cluster ID<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   *<a name="line.47"></a>
+<span class="sourceLineNo">048</span>   * @return Cluster ID<a name="line.48"></a>
+<span class="sourceLineNo">049</span>   */<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  String getClusterId();<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>   * Get the ZooKeeper Quorum Info<a name="line.53"></a>
+<span class="sourceLineNo">054</span>   *<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   * @return ZooKeeper Quorum Info<a name="line.55"></a>
+<span class="sourceLineNo">056</span>   */<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  String getZookeeperQuorum();<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  /**<a name="line.59"></a>
+<span class="sourceLineNo">060</span>   * Get the co-processors<a name="line.60"></a>
+<span class="sourceLineNo">061</span>   *<a name="line.61"></a>
+<span class="sourceLineNo">062</span>   * @return Co-processors<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   */<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  String[] getCoprocessors();<a name="line.64"></a>
+<span class="sourceLineNo">065</span><a name="line.65"></a>
+<span class="sourceLineNo">066</span>  /**<a name="line.66"></a>
+<span class="sourceLineNo">067</span>   * Get hbase master start time<a name="line.67"></a>
+<span class="sourceLineNo">068</span>   *<a name="line.68"></a>
+<span class="sourceLineNo">069</span>   * @return Start time of master in milliseconds<a name="line.69"></a>
+<span class="sourceLineNo">070</span>   */<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  long getStartTime();<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>   * Get the hbase master active time<a name="line.74"></a>
+<span class="sourceLineNo">075</span>   *<a name="line.75"></a>
+<span class="sourceLineNo">076</span>   * @return Time in milliseconds when master became active<a name="line.76"></a>
+<span class="sourceLineNo">077</span>   */<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  long getActiveTime();<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>  /**<a name="line.80"></a>
+<span class="sourceLineNo">081</span>   * Whether this master is the active master<a name="line.81"></a>
+<span class="sourceLineNo">082</span>   *<a name="line.82"></a>
+<span class="sourceLineNo">083</span>   * @return True if this is the active master<a name="line.83"></a>
+<span class="sourceLineNo">084</span>   */<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  boolean getIsActiveMaster();<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>  /**<a name="line.87"></a>
+<span class="sourceLineNo">088</span>   * Get the live region servers<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   *<a name="line.89"></a>
+<span class="sourceLineNo">090</span>   * @return Live region servers<a name="line.90"></a>
+<span class="sourceLineNo">091</span>   */<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  String getRegionServers();<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>   * Get the number of live region servers<a name="line.95"></a>
+<span class="sourceLineNo">096</span>   *<a name="line.96"></a>
+<span class="sourceLineNo">097</span>   * @return number of Live region servers<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   */<a name="line.98"></a>
+<span class="sourceLineNo">099</span><a name="line.99"></a>
+<span class="sourceLineNo">100</span>  int getNumRegionServers();<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>   * Get the dead region servers<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   *<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   * @return Dead region Servers<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   */<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  String getDeadRegionServers();<a name="line.107"></a>
+<span class="sourceLineNo">108</span><a name="line.108"></a>
+<span class="sourceLineNo">109</span>  /**<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   * Get the number of dead region servers<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   *<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   * @return number of Dead region Servers<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   */<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  int getNumDeadRegionServers();<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>  /**<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   * Get the number of master WAL files.<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   */<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  long getNumWALFiles();<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>  /**<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   * Get the number of region split plans executed.<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   */<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  long getSplitPlanCount();<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>  /**<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   * Get the number of region merge plans executed.<a name="line.127"></a>
+<span class="sourceLineNo">128</span>   */<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  long getMergePlanCount();<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>   * Gets the space usage and limit for each table.<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   */<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  Map&lt;String,Entry&lt;Long,Long&gt;&gt; getTableSpaceUtilization();<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  /**<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   * Gets the space usage and limit for each namespace.<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   */<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  Map&lt;String,Entry&lt;Long,Long&gt;&gt; getNamespaceSpaceUtilization();<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>   * Get the time in Millis when the master finished initializing/becoming the active master<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   */<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  long getMasterInitializationTime();<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>   * Get the online and offline region counts<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   *<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * @return pair of count for online regions and offline regions<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   */<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  PairOfSameType&lt;Integer&gt; getRegionCounts();<a name="line.151"></a>
+<span class="sourceLineNo">152</span>}<a name="line.152"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html
index 745daa7..afcf99b 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.html
@@ -25,169 +25,200 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.master;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import java.util.AbstractMap.SimpleImmutableEntry;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import java.util.Collections;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.util.HashMap;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.util.Map;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.util.Map.Entry;<a name="line.24"></a>
-<span class="sourceLineNo">025</span><a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.commons.lang3.StringUtils;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.ServerName;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.TableName;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<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> * Impl for exposing HMaster Information through JMX<a name="line.35"></a>
-<span class="sourceLineNo">036</span> */<a name="line.36"></a>
-<span class="sourceLineNo">037</span>@InterfaceAudience.Private<a name="line.37"></a>
-<span class="sourceLineNo">038</span>public class MetricsMasterWrapperImpl implements MetricsMasterWrapper {<a name="line.38"></a>
-<span class="sourceLineNo">039</span><a name="line.39"></a>
-<span class="sourceLineNo">040</span>  private final HMaster master;<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>  public MetricsMasterWrapperImpl(final HMaster master) {<a name="line.42"></a>
-<span class="sourceLineNo">043</span>    this.master = master;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>  }<a name="line.44"></a>
-<span class="sourceLineNo">045</span><a name="line.45"></a>
-<span class="sourceLineNo">046</span>  @Override<a name="line.46"></a>
-<span class="sourceLineNo">047</span>  public double getAverageLoad() {<a name="line.47"></a>
-<span class="sourceLineNo">048</span>    return master.getAverageLoad();<a name="line.48"></a>
+<span class="sourceLineNo">020</span>import java.io.IOException;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.util.AbstractMap.SimpleImmutableEntry;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.Collections;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.HashMap;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.util.List;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.util.Map;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.Map.Entry;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.commons.lang3.StringUtils;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.ServerName;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.TableName;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.PairOfSameType;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.37"></a>
+<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">039</span>/**<a name="line.39"></a>
+<span class="sourceLineNo">040</span> * Impl for exposing HMaster Information through JMX<a name="line.40"></a>
+<span class="sourceLineNo">041</span> */<a name="line.41"></a>
+<span class="sourceLineNo">042</span>@InterfaceAudience.Private<a name="line.42"></a>
+<span class="sourceLineNo">043</span>public class MetricsMasterWrapperImpl implements MetricsMasterWrapper {<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>  private final HMaster master;<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>  public MetricsMasterWrapperImpl(final HMaster master) {<a name="line.47"></a>
+<span class="sourceLineNo">048</span>    this.master = master;<a name="line.48"></a>
 <span class="sourceLineNo">049</span>  }<a name="line.49"></a>
 <span class="sourceLineNo">050</span><a name="line.50"></a>
 <span class="sourceLineNo">051</span>  @Override<a name="line.51"></a>
-<span class="sourceLineNo">052</span>  public long getSplitPlanCount() {<a name="line.52"></a>
-<span class="sourceLineNo">053</span>    return master.getSplitPlanCount();<a name="line.53"></a>
+<span class="sourceLineNo">052</span>  public double getAverageLoad() {<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    return master.getAverageLoad();<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>
 <span class="sourceLineNo">056</span>  @Override<a name="line.56"></a>
-<span class="sourceLineNo">057</span>  public long getMergePlanCount() {<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    return master.getMergePlanCount();<a name="line.58"></a>
+<span class="sourceLineNo">057</span>  public long getSplitPlanCount() {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    return master.getSplitPlanCount();<a name="line.58"></a>
 <span class="sourceLineNo">059</span>  }<a name="line.59"></a>
 <span class="sourceLineNo">060</span><a name="line.60"></a>
 <span class="sourceLineNo">061</span>  @Override<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  public long getMasterInitializationTime() {<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    return master.getMasterFinishedInitializationTime();<a name="line.63"></a>
+<span class="sourceLineNo">062</span>  public long getMergePlanCount() {<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    return master.getMergePlanCount();<a name="line.63"></a>
 <span class="sourceLineNo">064</span>  }<a name="line.64"></a>
 <span class="sourceLineNo">065</span><a name="line.65"></a>
 <span class="sourceLineNo">066</span>  @Override<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  public String getClusterId() {<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    return master.getClusterId();<a name="line.68"></a>
+<span class="sourceLineNo">067</span>  public long getMasterInitializationTime() {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    return master.getMasterFinishedInitializationTime();<a name="line.68"></a>
 <span class="sourceLineNo">069</span>  }<a name="line.69"></a>
 <span class="sourceLineNo">070</span><a name="line.70"></a>
 <span class="sourceLineNo">071</span>  @Override<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  public String getZookeeperQuorum() {<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    ZKWatcher zk = master.getZooKeeper();<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    if (zk == null) {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      return "";<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    }<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    return zk.getQuorum();<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  }<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  @Override<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public String[] getCoprocessors() {<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    return master.getMasterCoprocessors();<a name="line.82"></a>
+<span class="sourceLineNo">072</span>  public String getClusterId() {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    return master.getClusterId();<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  }<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>  @Override<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  public String getZookeeperQuorum() {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    ZKWatcher zk = master.getZooKeeper();<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    if (zk == null) {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      return "";<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    }<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    return zk.getQuorum();<a name="line.82"></a>
 <span class="sourceLineNo">083</span>  }<a name="line.83"></a>
 <span class="sourceLineNo">084</span><a name="line.84"></a>
 <span class="sourceLineNo">085</span>  @Override<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  public long getStartTime() {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    return master.getMasterStartTime();<a name="line.87"></a>
+<span class="sourceLineNo">086</span>  public String[] getCoprocessors() {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    return master.getMasterCoprocessors();<a name="line.87"></a>
 <span class="sourceLineNo">088</span>  }<a name="line.88"></a>
 <span class="sourceLineNo">089</span><a name="line.89"></a>
 <span class="sourceLineNo">090</span>  @Override<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  public long getActiveTime() {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    return master.getMasterActiveTime();<a name="line.92"></a>
+<span class="sourceLineNo">091</span>  public long getStartTime() {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    return master.getMasterStartTime();<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>  @Override<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public String getRegionServers() {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    ServerManager serverManager = this.master.getServerManager();<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    if (serverManager == null) {<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      return "";<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    }<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    return StringUtils.join(serverManager.getOnlineServers().keySet(), ";");<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>  @Override<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  public int getNumRegionServers() {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    ServerManager serverManager = this.master.getServerManager();<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    if (serverManager == null) {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      return 0;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    }<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    return serverManager.getOnlineServers().size();<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  }<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span>  @Override<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  public String getDeadRegionServers() {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    ServerManager serverManager = this.master.getServerManager();<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    if (serverManager == null) {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      return "";<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    }<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    return StringUtils.join(serverManager.getDeadServers().copyServerNames(), ";");<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  }<a name="line.120"></a>
-<span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  @Override<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public int getNumDeadRegionServers() {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    ServerManager serverManager = this.master.getServerManager();<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    if (serverManager == null) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      return 0;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    return serverManager.getDeadServers().size();<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>  @Override<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  public String getServerName() {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    ServerName serverName = master.getServerName();<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    if (serverName == null) {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      return "";<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    }<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    return serverName.getServerName();<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>  @Override<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  public boolean getIsActiveMaster() {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    return master.isActiveMaster();<a name="line.143"></a>
+<span class="sourceLineNo">096</span>  public long getActiveTime() {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    return master.getMasterActiveTime();<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  }<a name="line.98"></a>
+<span class="sourceLineNo">099</span><a name="line.99"></a>
+<span class="sourceLineNo">100</span>  @Override<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  public String getRegionServers() {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    ServerManager serverManager = this.master.getServerManager();<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    if (serverManager == null) {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      return "";<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    }<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    return StringUtils.join(serverManager.getOnlineServers().keySet(), ";");<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  }<a name="line.107"></a>
+<span class="sourceLineNo">108</span><a name="line.108"></a>
+<span class="sourceLineNo">109</span>  @Override<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  public int getNumRegionServers() {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    ServerManager serverManager = this.master.getServerManager();<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    if (serverManager == null) {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      return 0;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    }<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    return serverManager.getOnlineServers().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>  @Override<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  public String getDeadRegionServers() {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    ServerManager serverManager = this.master.getServerManager();<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    if (serverManager == null) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      return "";<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    }<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    return StringUtils.join(serverManager.getDeadServers().copyServerNames(), ";");<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  }<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>  @Override<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  public int getNumDeadRegionServers() {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    ServerManager serverManager = this.master.getServerManager();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    if (serverManager == null) {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      return 0;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    return serverManager.getDeadServers().size();<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  }<a name="line.135"></a>
+<span class="sourceLineNo">136</span><a name="line.136"></a>
+<span class="sourceLineNo">137</span>  @Override<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  public String getServerName() {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    ServerName serverName = master.getServerName();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    if (serverName == null) {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      return "";<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    return serverName.getServerName();<a name="line.143"></a>
 <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>  @Override<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  public long getNumWALFiles() {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    return master.getNumWALFiles();<a name="line.148"></a>
+<span class="sourceLineNo">147</span>  public boolean getIsActiveMaster() {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    return master.isActiveMaster();<a name="line.148"></a>
 <span class="sourceLineNo">149</span>  }<a name="line.149"></a>
 <span class="sourceLineNo">150</span><a name="line.150"></a>
 <span class="sourceLineNo">151</span>  @Override<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public Map&lt;String,Entry&lt;Long,Long&gt;&gt; getTableSpaceUtilization() {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    QuotaObserverChore quotaChore = master.getQuotaObserverChore();<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    if (quotaChore == null) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      return Collections.emptyMap();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    }<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    Map&lt;TableName,SpaceQuotaSnapshot&gt; tableSnapshots = quotaChore.getTableQuotaSnapshots();<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    Map&lt;String,Entry&lt;Long,Long&gt;&gt; convertedData = new HashMap&lt;&gt;();<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    for (Entry&lt;TableName,SpaceQuotaSnapshot&gt; entry : tableSnapshots.entrySet()) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      convertedData.put(entry.getKey().toString(), convertSnapshot(entry.getValue()));<a name="line.160"></a>
+<span class="sourceLineNo">152</span>  public long getNumWALFiles() {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    return master.getNumWALFiles();<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>  @Override<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  public Map&lt;String,Entry&lt;Long,Long&gt;&gt; getTableSpaceUtilization() {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    QuotaObserverChore quotaChore = master.getQuotaObserverChore();<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    if (quotaChore == null) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      return Collections.emptyMap();<a name="line.160"></a>
 <span class="sourceLineNo">161</span>    }<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    return convertedData;<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>  @Override<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  public Map&lt;String,Entry&lt;Long,Long&gt;&gt; getNamespaceSpaceUtilization() {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    QuotaObserverChore quotaChore = master.getQuotaObserverChore();<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    if (quotaChore == null) {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      return Collections.emptyMap();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    Map&lt;String,SpaceQuotaSnapshot&gt; namespaceSnapshots = quotaChore.getNamespaceQuotaSnapshots();<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    Map&lt;String,Entry&lt;Long,Long&gt;&gt; convertedData = new HashMap&lt;&gt;();<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    for (Entry&lt;String,SpaceQuotaSnapshot&gt; entry : namespaceSnapshots.entrySet()) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      convertedData.put(entry.getKey(), convertSnapshot(entry.getValue()));<a name="line.174"></a>
+<span class="sourceLineNo">162</span>    Map&lt;TableName,SpaceQuotaSnapshot&gt; tableSnapshots = quotaChore.getTableQuotaSnapshots();<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    Map&lt;String,Entry&lt;Long,Long&gt;&gt; convertedData = new HashMap&lt;&gt;();<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    for (Entry&lt;TableName,SpaceQuotaSnapshot&gt; entry : tableSnapshots.entrySet()) {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      convertedData.put(entry.getKey().toString(), convertSnapshot(entry.getValue()));<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    return convertedData;<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>  @Override<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  public Map&lt;String,Entry&lt;Long,Long&gt;&gt; getNamespaceSpaceUtilization() {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    QuotaObserverChore quotaChore = master.getQuotaObserverChore();<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    if (quotaChore == null) {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      return Collections.emptyMap();<a name="line.174"></a>
 <span class="sourceLineNo">175</span>    }<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    return convertedData;<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>  Entry&lt;Long,Long&gt; convertSnapshot(SpaceQuotaSnapshot snapshot) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    return new SimpleImmutableEntry&lt;Long,Long&gt;(snapshot.getUsage(), snapshot.getLimit());<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">176</span>    Map&lt;String,SpaceQuotaSnapshot&gt; namespaceSnapshots = quotaChore.getNamespaceQuotaSnapshots();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    Map&lt;String,Entry&lt;Long,Long&gt;&gt; convertedData = new HashMap&lt;&gt;();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    for (Entry&lt;String,SpaceQuotaSnapshot&gt; entry : namespaceSnapshots.entrySet()) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      convertedData.put(entry.getKey(), convertSnapshot(entry.getValue()));<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    return convertedData;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>  Entry&lt;Long,Long&gt; convertSnapshot(SpaceQuotaSnapshot snapshot) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    return new SimpleImmutableEntry&lt;Long,Long&gt;(snapshot.getUsage(), snapshot.getLimit());<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>  @Override<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  public PairOfSameType&lt;Integer&gt; getRegionCounts() {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    try {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      if (!master.isInitialized()) {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        return new PairOfSameType&lt;&gt;(0, 0);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      }<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      Integer onlineRegionCount = 0;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      Integer offlineRegionCount = 0;<a name="line.195"></a>
+<span class="sourceLineNo">196</span><a name="line.196"></a>
+<span class="sourceLineNo">197</span>      List&lt;TableDescriptor&gt; descriptors = master.listTableDescriptors(null, null,<a name="line.197"></a>
+<span class="sourceLineNo">198</span>          null, false);<a name="line.198"></a>
+<span class="sourceLineNo">199</span><a name="line.199"></a>
+<span class="sourceLineNo">200</span>      for (TableDescriptor htDesc : descriptors) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        TableName tableName = htDesc.getTableName();<a name="line.201"></a>
+<span class="sourceLineNo">202</span>        Map&lt;RegionState.State, List&lt;RegionInfo&gt;&gt; tableRegions =<a name="line.202"></a>
+<span class="sourceLineNo">203</span>            master.getAssignmentManager().getRegionStates()<a name="line.203"></a>
+<span class="sourceLineNo">204</span>                .getRegionByStateOfTable(tableName);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>        onlineRegionCount += tableRegions.get(RegionState.State.OPEN).size();<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        offlineRegionCount += tableRegions.get(RegionState.State.OFFLINE).size();<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      }<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      return new PairOfSameType&lt;&gt;(onlineRegionCount, offlineRegionCount);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    } catch (IOException e) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      return new PairOfSameType&lt;&gt;(0, 0);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    }<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  }<a name="line.212"></a>
+<span class="sourceLineNo">213</span>}<a name="line.213"></a>
 
 
 


[45/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html b/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html
index 76cea24..3433f64 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html
@@ -171,7 +171,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#snapshot">snapshot</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#snapshotId">snapshotId</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#regionServices">regionServices</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#snapshot">snapshot</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#snapshotId">snapshotId</a></code></li>
 </ul>
 </li>
 </ul>
@@ -197,6 +197,13 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <div class="block">Constructor.</div>
 </td>
 </tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#DefaultMemStore-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.RegionServicesForStores-">DefaultMemStore</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+               <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;c,
+               <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a>&nbsp;regionServices)</code>
+<div class="block">Constructor.</div>
+</td>
+</tr>
 </table>
 </li>
 </ul>
@@ -374,7 +381,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <a name="DefaultMemStore-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>DefaultMemStore</h4>
 <pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.73">DefaultMemStore</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
@@ -386,6 +393,22 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 </dl>
 </li>
 </ul>
+<a name="DefaultMemStore-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.regionserver.RegionServicesForStores-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>DefaultMemStore</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.81">DefaultMemStore</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                       <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;c,
+                       <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a>&nbsp;regionServices)</pre>
+<div class="block">Constructor.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>c</code> - Comparator</dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 <!-- ============ METHOD DETAIL ========== -->
@@ -400,7 +423,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshot</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.82">snapshot</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.91">snapshot</a>()</pre>
 <div class="block">Creates a snapshot of the current memstore.
  Snapshot must be cleared by call to <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#clearSnapshot-long-"><code>AbstractMemStore.clearSnapshot(long)</code></a></div>
 <dl>
@@ -415,7 +438,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getFlushableSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.101">getFlushableSize</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.118">getFlushableSize</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html#getFlushableSize--">MemStore</a></code></span></div>
 <div class="block">Flush will first clear out the data in snapshot if any (It will take a second flush
  invocation to clear the current Cell set). If snapshot is empty, current
@@ -432,7 +455,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>keySize</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.107">keySize</a>()</pre>
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.124">keySize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#keySize--">keySize</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
@@ -447,7 +470,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>heapSize</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.112">heapSize</a>()</pre>
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.129">heapSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#heapSize--">heapSize</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
@@ -463,7 +486,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanners</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/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.120">getScanners</a>(long&nbsp;readPt)
+<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/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.137">getScanners</a>(long&nbsp;readPt)
                                   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>
@@ -480,7 +503,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getSegments</h4>
-<pre>protected&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/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.128">getSegments</a>()
+<pre>protected&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/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.145">getSegments</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="overrideSpecifyLabel">Specified by:</span></dt>
@@ -498,7 +521,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getNextRow</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.140">getNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.157">getNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>cell</code> - Find the row that comes after this one.  If null, we return the
@@ -514,7 +537,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>updateLowestUnflushedSequenceIdInWAL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.146">updateLowestUnflushedSequenceIdInWAL</a>(boolean&nbsp;onlyIfMoreRecent)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.163">updateLowestUnflushedSequenceIdInWAL</a>(boolean&nbsp;onlyIfMoreRecent)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#updateLowestUnflushedSequenceIdInWAL-boolean-">AbstractMemStore</a></code></span></div>
 <div class="block">Updates the wal with the lowest sequence id (oldest entry) that is still in memory</div>
 <dl>
@@ -532,7 +555,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>preUpdate</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.149">preUpdate</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.166">preUpdate</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
                             <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                             <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#preUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">AbstractMemStore</a></code></span></div>
@@ -555,7 +578,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>postUpdate</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.154">postUpdate</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.171">postUpdate</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#postUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-">AbstractMemStore</a></code></span></div>
 <div class="block">Issue any post update synchronization and tests</div>
 <dl>
@@ -572,7 +595,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>sizeAddedPreOperation</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.158">sizeAddedPreOperation</a>()</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.175">sizeAddedPreOperation</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#sizeAddedPreOperation--">sizeAddedPreOperation</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
@@ -585,7 +608,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>size</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.163">size</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.180">size</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Total memory occupied by this MemStore. This won't include any size occupied by the
@@ -601,7 +624,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>preFlushSeqIDEstimation</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.168">preFlushSeqIDEstimation</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.185">preFlushSeqIDEstimation</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html#preFlushSeqIDEstimation--">MemStore</a></code></span></div>
 <div class="block">This method is called before the flush is executed.</div>
 <dl>
@@ -617,7 +640,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>isSloppy</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.172">isSloppy</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.189">isSloppy</a>()</pre>
 </li>
 </ul>
 <a name="main-java.lang.String:A-">
@@ -626,7 +649,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockListLast">
 <li class="blockList">
 <h4>main</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.183">main</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;args)</pre>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.200">main</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;args)</pre>
 <div class="block">Code to help figure if our approximation of object heap sizes is close
  enough.  See hbase-900.  Fills memstores then waits so user can heap
  dump and bring up resultant hprof in something like jprofiler which

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
index 9a50123..a2b8adf 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/FunctionalInterface.html?is-external=true" title="class or interface in java.lang">@FunctionalInterface</a>
-public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3057">HRegion.BatchOperation.Visitor</a></pre>
+public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3074">HRegion.BatchOperation.Visitor</a></pre>
 <div class="block">Visitor interface for batch operations</div>
 </li>
 </ul>
@@ -155,7 +155,7 @@ public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase
 <ul class="blockListLast">
 <li class="blockList">
 <h4>visit</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html#line.3062">visit</a>(int&nbsp;index)
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html#line.3079">visit</a>(int&nbsp;index)
        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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
index 004582f..9f20806 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private abstract static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3027">HRegion.BatchOperation</a>&lt;T&gt;
+<pre>private abstract static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3044">HRegion.BatchOperation</a>&lt;T&gt;
 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">Class that tracks the progress of a batch operations, accumulating status codes and tracking
  the index at which processing is proceeding. These batch operations may get split into
@@ -408,7 +408,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>operations</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="type parameter in HRegion.BatchOperation">T</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3028">operations</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="type parameter in HRegion.BatchOperation">T</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3045">operations</a></pre>
 </li>
 </ul>
 <a name="retCodeDetails">
@@ -417,7 +417,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>retCodeDetails</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/OperationStatus.html" title="class in org.apache.hadoop.hbase.regionserver">OperationStatus</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3029">retCodeDetails</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/OperationStatus.html" title="class in org.apache.hadoop.hbase.regionserver">OperationStatus</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3046">retCodeDetails</a></pre>
 </li>
 </ul>
 <a name="walEditsFromCoprocessors">
@@ -426,7 +426,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>walEditsFromCoprocessors</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3030">walEditsFromCoprocessors</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3047">walEditsFromCoprocessors</a></pre>
 </li>
 </ul>
 <a name="familyCellMaps">
@@ -435,7 +435,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>familyCellMaps</h4>
-<pre>protected final&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[],<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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3032">familyCellMaps</a></pre>
+<pre>protected final&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[],<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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3049">familyCellMaps</a></pre>
 </li>
 </ul>
 <a name="region">
@@ -444,7 +444,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>region</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3034">region</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3051">region</a></pre>
 </li>
 </ul>
 <a name="nextIndexToProcess">
@@ -453,7 +453,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>nextIndexToProcess</h4>
-<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3035">nextIndexToProcess</a></pre>
+<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3052">nextIndexToProcess</a></pre>
 </li>
 </ul>
 <a name="observedExceptions">
@@ -462,7 +462,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>observedExceptions</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.ObservedExceptionsInBatch.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.ObservedExceptionsInBatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3036">observedExceptions</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.ObservedExceptionsInBatch.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.ObservedExceptionsInBatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3053">observedExceptions</a></pre>
 </li>
 </ul>
 <a name="durability">
@@ -471,7 +471,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>durability</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3038">durability</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3055">durability</a></pre>
 </li>
 </ul>
 <a name="atomic">
@@ -480,7 +480,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>atomic</h4>
-<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3039">atomic</a></pre>
+<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3056">atomic</a></pre>
 </li>
 </ul>
 </li>
@@ -499,7 +499,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>BatchOperation</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3041">BatchOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3058">BatchOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
                       <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="type parameter in HRegion.BatchOperation">T</a>[]&nbsp;operations)</pre>
 </li>
 </ul>
@@ -517,7 +517,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>visitBatchOperations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3068">visitBatchOperations</a>(boolean&nbsp;pendingOnly,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3085">visitBatchOperations</a>(boolean&nbsp;pendingOnly,
                                  int&nbsp;lastIndexExclusive,
                                  <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html" title="interface in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation.Visitor</a>&nbsp;visitor)
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -534,7 +534,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getMutation</h4>
-<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3080">getMutation</a>(int&nbsp;index)</pre>
+<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3097">getMutation</a>(int&nbsp;index)</pre>
 </li>
 </ul>
 <a name="getNonceGroup-int-">
@@ -543,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>getNonceGroup</h4>
-<pre>public abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3082">getNonceGroup</a>(int&nbsp;index)</pre>
+<pre>public abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3099">getNonceGroup</a>(int&nbsp;index)</pre>
 </li>
 </ul>
 <a name="getNonce-int-">
@@ -552,7 +552,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getNonce</h4>
-<pre>public abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3084">getNonce</a>(int&nbsp;index)</pre>
+<pre>public abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3101">getNonce</a>(int&nbsp;index)</pre>
 </li>
 </ul>
 <a name="getMutationsForCoprocs--">
@@ -561,7 +561,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getMutationsForCoprocs</h4>
-<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3089">getMutationsForCoprocs</a>()</pre>
+<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3106">getMutationsForCoprocs</a>()</pre>
 <div class="block">This method is potentially expensive and useful mostly for non-replay CP path.</div>
 </li>
 </ul>
@@ -571,7 +571,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isInReplay</h4>
-<pre>public abstract&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3091">isInReplay</a>()</pre>
+<pre>public abstract&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3108">isInReplay</a>()</pre>
 </li>
 </ul>
 <a name="getOrigLogSeqNum--">
@@ -580,7 +580,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getOrigLogSeqNum</h4>
-<pre>public abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3093">getOrigLogSeqNum</a>()</pre>
+<pre>public abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3110">getOrigLogSeqNum</a>()</pre>
 </li>
 </ul>
 <a name="startRegionOperation--">
@@ -589,7 +589,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>startRegionOperation</h4>
-<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3095">startRegionOperation</a>()
+<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3112">startRegionOperation</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>
@@ -603,7 +603,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>closeRegionOperation</h4>
-<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3097">closeRegionOperation</a>()
+<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3114">closeRegionOperation</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>
@@ -617,7 +617,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPrepare</h4>
-<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3106">checkAndPrepare</a>()
+<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3123">checkAndPrepare</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">Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs
  CP prePut()/ preDelete() hooks for all mutations in a batch. This is intended to operate on
@@ -636,7 +636,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPreparePut</h4>
-<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3112">checkAndPreparePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)
+<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3129">checkAndPreparePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)
                                     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">Implement any Put request specific check and prepare logic here. Please refer to
  <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#checkAndPrepareMutation-org.apache.hadoop.hbase.client.Mutation-long-"><code>checkAndPrepareMutation(Mutation, long)</code></a> for how its used.</div>
@@ -652,7 +652,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>prepareMiniBatchOperations</h4>
-<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3118">prepareMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3135">prepareMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                                 long&nbsp;timestamp,
                                                 <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/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&gt;&nbsp;acquiredRowLocks)
                                          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>
@@ -670,7 +670,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>writeMiniBatchOperationsToMemStore</h4>
-<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3124">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3141">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                                                                              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;writeEntry)
                                                                                       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">Write mini-batch operations to MemStore</div>
@@ -686,7 +686,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>writeMiniBatchOperationsToMemStore</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3128">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3145">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                                   long&nbsp;writeNumber)
                                            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>
@@ -701,7 +701,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isDone</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3148">isDone</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3165">isDone</a>()</pre>
 </li>
 </ul>
 <a name="size--">
@@ -710,7 +710,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>size</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3152">size</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3169">size</a>()</pre>
 </li>
 </ul>
 <a name="isOperationPending-int-">
@@ -719,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>isOperationPending</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3156">isOperationPending</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3173">isOperationPending</a>(int&nbsp;index)</pre>
 </li>
 </ul>
 <a name="getClusterIds--">
@@ -728,7 +728,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getClusterIds</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html?is-external=true" title="class or interface in java.util">UUID</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3160">getClusterIds</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="https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html?is-external=true" title="class or interface in java.util">UUID</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3177">getClusterIds</a>()</pre>
 </li>
 </ul>
 <a name="isAtomic--">
@@ -737,7 +737,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isAtomic</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3165">isAtomic</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3182">isAtomic</a>()</pre>
 </li>
 </ul>
 <a name="checkAndPrepareMutation-org.apache.hadoop.hbase.client.Mutation-long-">
@@ -746,7 +746,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPrepareMutation</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3175">checkAndPrepareMutation</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;mutation,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3192">checkAndPrepareMutation</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;mutation,
                                        long&nbsp;timestamp)
                                 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">Helper method that checks and prepares only one mutation. This can be used to implement
@@ -765,7 +765,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPrepareMutation</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3187">checkAndPrepareMutation</a>(int&nbsp;index,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3204">checkAndPrepareMutation</a>(int&nbsp;index,
                                        long&nbsp;timestamp)
                                 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>
@@ -780,7 +780,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>lockRowsAndBuildMiniBatch</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3249">lockRowsAndBuildMiniBatch</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/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&gt;&nbsp;acquiredRowLocks)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3266">lockRowsAndBuildMiniBatch</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/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&gt;&nbsp;acquiredRowLocks)
                                                                  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">Creates Mini-batch of all operations [nextIndexToProcess, lastIndexExclusive) for which
  a row lock can be acquired. All mutations with locked rows are considered to be
@@ -800,7 +800,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>createMiniBatch</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3333">createMiniBatch</a>(int&nbsp;lastIndexExclusive,
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3350">createMiniBatch</a>(int&nbsp;lastIndexExclusive,
                                                                  int&nbsp;readyToWriteCount)</pre>
 </li>
 </ul>
@@ -810,7 +810,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>buildWALEdits</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/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a>,<a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3343">buildWALEdits</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;m
 iniBatchOp)
+<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/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a>,<a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3360">buildWALEdits</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;m
 iniBatchOp)
                                            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">Builds separate WALEdit per nonce by applying input mutations. If WALEdits from CP are
  present, they are merged to result WALEdit.</div>
@@ -826,7 +826,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>completeMiniBatchOperations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3392">completeMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3409">completeMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;writeEntry)
                                  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 completes mini-batch operations by calling postBatchMutate() CP hook (if
@@ -843,7 +843,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>doPostOpCleanupForMiniBatch</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3400">doPostOpCleanupForMiniBatch</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3417">doPostOpCleanupForMiniBatch</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                         <a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;walEdit,
                                         boolean&nbsp;success)
                                  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>
@@ -859,7 +859,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>doFinishHotnessProtector</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3406">doFinishHotnessProtector</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3423">doFinishHotnessProtector</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp)</pre>
 </li>
 </ul>
 <a name="applyFamilyMapToMemStore-java.util.Map-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
@@ -868,7 +868,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>applyFamilyMapToMemStore</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3443">applyFamilyMapToMemStore</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;familyMap,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3460">applyFamilyMapToMemStore</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;familyMap,
                                         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreAccounting)
                                  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">Atomically apply the given map of family->edits to the memstore.

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
index 335ea7a..2cf9695 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5967">HRegion.BulkLoadListener</a></pre>
+<pre>public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5998">HRegion.BulkLoadListener</a></pre>
 <div class="block">Listener class to enable callers of
  bulkLoadHFile() to perform any necessary
  pre/post processing of a given bulkload call</div>
@@ -174,7 +174,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockList">
 <li class="blockList">
 <h4>prepareBulkLoad</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html#line.5975">prepareBulkLoad</a>(byte[]&nbsp;family,
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html#line.6006">prepareBulkLoad</a>(byte[]&nbsp;family,
                        <a href="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;srcPath,
                        boolean&nbsp;copyFile)
                 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>
@@ -196,7 +196,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockList">
 <li class="blockList">
 <h4>doneBulkLoad</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html#line.5984">doneBulkLoad</a>(byte[]&nbsp;family,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html#line.6015">doneBulkLoad</a>(byte[]&nbsp;family,
                   <a href="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;srcPath)
            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">Called after a successful HFile load</div>
@@ -215,7 +215,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockListLast">
 <li class="blockList">
 <h4>failedBulkLoad</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html#line.5992">failedBulkLoad</a>(byte[]&nbsp;family,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html#line.6023">failedBulkLoad</a>(byte[]&nbsp;family,
                     <a href="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;srcPath)
              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">Called after a failed HFile load</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html
index 3b9a125..937666b 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html#line.2196">HRegion.FlushResult.Result</a>
+<pre>public static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html#line.2213">HRegion.FlushResult.Result</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang">Enum</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult.Result</a>&gt;</pre>
 </li>
 </ul>
@@ -216,7 +216,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>FLUSHED_NO_COMPACTION_NEEDED</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult.Result</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html#line.2197">FLUSHED_NO_COMPACTION_NEEDED</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult.Result</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html#line.2214">FLUSHED_NO_COMPACTION_NEEDED</a></pre>
 </li>
 </ul>
 <a name="FLUSHED_COMPACTION_NEEDED">
@@ -225,7 +225,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>FLUSHED_COMPACTION_NEEDED</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult.Result</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html#line.2198">FLUSHED_COMPACTION_NEEDED</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult.Result</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html#line.2215">FLUSHED_COMPACTION_NEEDED</a></pre>
 </li>
 </ul>
 <a name="CANNOT_FLUSH_MEMSTORE_EMPTY">
@@ -234,7 +234,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>CANNOT_FLUSH_MEMSTORE_EMPTY</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult.Result</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html#line.2201">CANNOT_FLUSH_MEMSTORE_EMPTY</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult.Result</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html#line.2218">CANNOT_FLUSH_MEMSTORE_EMPTY</a></pre>
 </li>
 </ul>
 <a name="CANNOT_FLUSH">
@@ -243,7 +243,7 @@ the order they are declared.</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CANNOT_FLUSH</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult.Result</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html#line.2202">CANNOT_FLUSH</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult.Result</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html#line.2219">CANNOT_FLUSH</a></pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html
index a69ff4e..55f3235 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2195">HRegion.FlushResult</a></pre>
+<pre>public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2212">HRegion.FlushResult</a></pre>
 </li>
 </ul>
 </div>
@@ -180,7 +180,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockList">
 <li class="blockList">
 <h4>getResult</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult.Result</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html#line.2206">getResult</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult.Result</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html#line.2223">getResult</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the detailed result code</dd>
@@ -193,7 +193,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockList">
 <li class="blockList">
 <h4>isFlushSucceeded</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html#line.2209">isFlushSucceeded</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html#line.2226">isFlushSucceeded</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>true if the memstores were flushed, else false</dd>
@@ -206,7 +206,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isCompactionNeeded</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html#line.2212">isCompactionNeeded</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html#line.2229">isCompactionNeeded</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>True if the flush requested a compaction, else false</dd>


[19/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
index db8431b..a8cb7c4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
@@ -885,7766 +885,7797 @@
 <span class="sourceLineNo">877</span>   * @return What the next sequence (edit) id should be.<a name="line.877"></a>
 <span class="sourceLineNo">878</span>   * @throws IOException e<a name="line.878"></a>
 <span class="sourceLineNo">879</span>   */<a name="line.879"></a>
-<span class="sourceLineNo">880</span>  private long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.880"></a>
-<span class="sourceLineNo">881</span><a name="line.881"></a>
-<span class="sourceLineNo">882</span>    //Refuse to open the region if there is no column family in the table<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.884"></a>
-<span class="sourceLineNo">885</span>          " should have at least one column family.");<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    long nextSeqId = -1;<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    try {<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.891"></a>
-<span class="sourceLineNo">892</span>      return nextSeqId;<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    } finally {<a name="line.893"></a>
-<span class="sourceLineNo">894</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      // At least it will be 0 otherwise.<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      if (nextSeqId == -1) {<a name="line.896"></a>
-<span class="sourceLineNo">897</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.897"></a>
-<span class="sourceLineNo">898</span>          " initialization.");<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      }<a name="line.899"></a>
-<span class="sourceLineNo">900</span>    }<a name="line.900"></a>
-<span class="sourceLineNo">901</span>  }<a name="line.901"></a>
-<span class="sourceLineNo">902</span><a name="line.902"></a>
-<span class="sourceLineNo">903</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.903"></a>
-<span class="sourceLineNo">904</span>      final MonitoredTask status) throws IOException {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    if (coprocessorHost != null) {<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      coprocessorHost.preOpen();<a name="line.907"></a>
-<span class="sourceLineNo">908</span>    }<a name="line.908"></a>
-<span class="sourceLineNo">909</span><a name="line.909"></a>
-<span class="sourceLineNo">910</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.910"></a>
-<span class="sourceLineNo">911</span>    // Only the primary replica should write .regioninfo<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      status.setStatus("Writing region info on filesystem");<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      fs.checkRegionInfoOnFilesystem();<a name="line.914"></a>
-<span class="sourceLineNo">915</span>    }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>    // Initialize all the HStores<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    status.setStatus("Initializing all the Stores");<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.920"></a>
-<span class="sourceLineNo">921</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.922"></a>
-<span class="sourceLineNo">923</span>      try {<a name="line.923"></a>
-<span class="sourceLineNo">924</span>        // update the stores that we are replaying<a name="line.924"></a>
-<span class="sourceLineNo">925</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        // Recover any edits if available.<a name="line.927"></a>
-<span class="sourceLineNo">928</span>        maxSeqId = Math.max(maxSeqId,<a name="line.928"></a>
-<span class="sourceLineNo">929</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        // Make sure mvcc is up to max.<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      } finally {<a name="line.932"></a>
-<span class="sourceLineNo">933</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        // update the stores that we are done replaying<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        stores.forEach(HStore::stopReplayingFromWAL);<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>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    this.writestate.flushRequested = false;<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    this.writestate.compacting.set(0);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>    if (this.writestate.writesEnabled) {<a name="line.944"></a>
-<span class="sourceLineNo">945</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      // Remove temporary data left over from old regions<a name="line.946"></a>
-<span class="sourceLineNo">947</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.947"></a>
-<span class="sourceLineNo">948</span>      fs.cleanupTempDir();<a name="line.948"></a>
-<span class="sourceLineNo">949</span>    }<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>    if (this.writestate.writesEnabled) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      // these directories here on open.  We may be opening a region that was<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      // being split but we crashed in the middle of it all.<a name="line.955"></a>
-<span class="sourceLineNo">956</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      fs.cleanupAnySplitDetritus();<a name="line.957"></a>
-<span class="sourceLineNo">958</span>      fs.cleanupMergesDir();<a name="line.958"></a>
-<span class="sourceLineNo">959</span>    }<a name="line.959"></a>
+<span class="sourceLineNo">880</span>  @VisibleForTesting<a name="line.880"></a>
+<span class="sourceLineNo">881</span>  long initialize(final CancelableProgressable reporter) throws IOException {<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>    //Refuse to open the region if there is no column family in the table<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    if (htableDescriptor.getColumnFamilyCount() == 0) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>      throw new DoNotRetryIOException("Table " + htableDescriptor.getTableName().getNameAsString()+<a name="line.885"></a>
+<span class="sourceLineNo">886</span>          " should have at least one column family.");<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    }<a name="line.887"></a>
+<span class="sourceLineNo">888</span><a name="line.888"></a>
+<span class="sourceLineNo">889</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>    long nextSeqId = -1;<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    try {<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      nextSeqId = initializeRegionInternals(reporter, status);<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      return nextSeqId;<a name="line.893"></a>
+<span class="sourceLineNo">894</span>    } catch (IOException e) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      LOG.warn("Failed initialize of region= {}, starting to roll back memstore",<a name="line.895"></a>
+<span class="sourceLineNo">896</span>          getRegionInfo().getRegionNameAsString(), e);<a name="line.896"></a>
+<span class="sourceLineNo">897</span>      // global memstore size will be decreased when dropping memstore<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      try {<a name="line.898"></a>
+<span class="sourceLineNo">899</span>        //drop the memory used by memstore if open region fails<a name="line.899"></a>
+<span class="sourceLineNo">900</span>        dropMemStoreContents();<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      } catch (IOException ioE) {<a name="line.901"></a>
+<span class="sourceLineNo">902</span>        if (conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {<a name="line.902"></a>
+<span class="sourceLineNo">903</span>          LOG.warn("Failed drop memstore of region= {}, "<a name="line.903"></a>
+<span class="sourceLineNo">904</span>                  + "some chunks may not released forever since MSLAB is enabled",<a name="line.904"></a>
+<span class="sourceLineNo">905</span>              getRegionInfo().getRegionNameAsString());<a name="line.905"></a>
+<span class="sourceLineNo">906</span>        }<a name="line.906"></a>
+<span class="sourceLineNo">907</span><a name="line.907"></a>
+<span class="sourceLineNo">908</span>      }<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      throw e;<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    } finally {<a name="line.910"></a>
+<span class="sourceLineNo">911</span>      // nextSeqid will be -1 if the initialization fails.<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      // At least it will be 0 otherwise.<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      if (nextSeqId == -1) {<a name="line.913"></a>
+<span class="sourceLineNo">914</span>        status.abort("Exception during region " + getRegionInfo().getRegionNameAsString() +<a name="line.914"></a>
+<span class="sourceLineNo">915</span>          " initialization.");<a name="line.915"></a>
+<span class="sourceLineNo">916</span>      }<a name="line.916"></a>
+<span class="sourceLineNo">917</span>    }<a name="line.917"></a>
+<span class="sourceLineNo">918</span>  }<a name="line.918"></a>
+<span class="sourceLineNo">919</span><a name="line.919"></a>
+<span class="sourceLineNo">920</span>  private long initializeRegionInternals(final CancelableProgressable reporter,<a name="line.920"></a>
+<span class="sourceLineNo">921</span>      final MonitoredTask status) throws IOException {<a name="line.921"></a>
+<span class="sourceLineNo">922</span>    if (coprocessorHost != null) {<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      status.setStatus("Running coprocessor pre-open hook");<a name="line.923"></a>
+<span class="sourceLineNo">924</span>      coprocessorHost.preOpen();<a name="line.924"></a>
+<span class="sourceLineNo">925</span>    }<a name="line.925"></a>
+<span class="sourceLineNo">926</span><a name="line.926"></a>
+<span class="sourceLineNo">927</span>    // Write HRI to a file in case we need to recover hbase:meta<a name="line.927"></a>
+<span class="sourceLineNo">928</span>    // Only the primary replica should write .regioninfo<a name="line.928"></a>
+<span class="sourceLineNo">929</span>    if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>      status.setStatus("Writing region info on filesystem");<a name="line.930"></a>
+<span class="sourceLineNo">931</span>      fs.checkRegionInfoOnFilesystem();<a name="line.931"></a>
+<span class="sourceLineNo">932</span>    }<a name="line.932"></a>
+<span class="sourceLineNo">933</span><a name="line.933"></a>
+<span class="sourceLineNo">934</span>    // Initialize all the HStores<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    status.setStatus("Initializing all the Stores");<a name="line.935"></a>
+<span class="sourceLineNo">936</span>    long maxSeqId = initializeStores(reporter, status);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>    this.mvcc.advanceTo(maxSeqId);<a name="line.937"></a>
+<span class="sourceLineNo">938</span>    if (ServerRegionReplicaUtil.shouldReplayRecoveredEdits(this)) {<a name="line.938"></a>
+<span class="sourceLineNo">939</span>      Collection&lt;HStore&gt; stores = this.stores.values();<a name="line.939"></a>
+<span class="sourceLineNo">940</span>      try {<a name="line.940"></a>
+<span class="sourceLineNo">941</span>        // update the stores that we are replaying<a name="line.941"></a>
+<span class="sourceLineNo">942</span>        LOG.debug("replaying wal for " + this.getRegionInfo().getEncodedName());<a name="line.942"></a>
+<span class="sourceLineNo">943</span>        stores.forEach(HStore::startReplayingFromWAL);<a name="line.943"></a>
+<span class="sourceLineNo">944</span>        // Recover any edits if available.<a name="line.944"></a>
+<span class="sourceLineNo">945</span>        maxSeqId = Math.max(maxSeqId,<a name="line.945"></a>
+<span class="sourceLineNo">946</span>          replayRecoveredEditsIfAny(this.fs.getRegionDir(), maxSeqIdInStores, reporter, status));<a name="line.946"></a>
+<span class="sourceLineNo">947</span>        // Make sure mvcc is up to max.<a name="line.947"></a>
+<span class="sourceLineNo">948</span>        this.mvcc.advanceTo(maxSeqId);<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      } finally {<a name="line.949"></a>
+<span class="sourceLineNo">950</span>        LOG.debug("stopping wal replay for " + this.getRegionInfo().getEncodedName());<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        // update the stores that we are done replaying<a name="line.951"></a>
+<span class="sourceLineNo">952</span>        stores.forEach(HStore::stopReplayingFromWAL);<a name="line.952"></a>
+<span class="sourceLineNo">953</span>      }<a name="line.953"></a>
+<span class="sourceLineNo">954</span>    }<a name="line.954"></a>
+<span class="sourceLineNo">955</span>    this.lastReplayedOpenRegionSeqId = maxSeqId;<a name="line.955"></a>
+<span class="sourceLineNo">956</span><a name="line.956"></a>
+<span class="sourceLineNo">957</span>    this.writestate.setReadOnly(ServerRegionReplicaUtil.isReadOnly(this));<a name="line.957"></a>
+<span class="sourceLineNo">958</span>    this.writestate.flushRequested = false;<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    this.writestate.compacting.set(0);<a name="line.959"></a>
 <span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>    // Initialize split policy<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.962"></a>
-<span class="sourceLineNo">963</span><a name="line.963"></a>
-<span class="sourceLineNo">964</span>    // Initialize flush policy<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.965"></a>
-<span class="sourceLineNo">966</span><a name="line.966"></a>
-<span class="sourceLineNo">967</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    for (HStore store: stores.values()) {<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<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>    // Use maximum of log sequenceid or that which was found in stores<a name="line.972"></a>
-<span class="sourceLineNo">973</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.973"></a>
-<span class="sourceLineNo">974</span>    long maxSeqIdFromFile =<a name="line.974"></a>
-<span class="sourceLineNo">975</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.975"></a>
-<span class="sourceLineNo">976</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.976"></a>
-<span class="sourceLineNo">977</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    // the max sequence id file.<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.985"></a>
-<span class="sourceLineNo">986</span><a name="line.986"></a>
-<span class="sourceLineNo">987</span>    // A region can be reopened if failed a split; reset flags<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    this.closing.set(false);<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    this.closed.set(false);<a name="line.989"></a>
-<span class="sourceLineNo">990</span><a name="line.990"></a>
-<span class="sourceLineNo">991</span>    if (coprocessorHost != null) {<a name="line.991"></a>
-<span class="sourceLineNo">992</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.992"></a>
-<span class="sourceLineNo">993</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.993"></a>
-<span class="sourceLineNo">994</span>      coprocessorHost.postOpen();<a name="line.994"></a>
-<span class="sourceLineNo">995</span>    }<a name="line.995"></a>
-<span class="sourceLineNo">996</span><a name="line.996"></a>
-<span class="sourceLineNo">997</span>    status.markComplete("Region opened successfully");<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    return nextSeqId;<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>   * Open all Stores.<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>   * @param reporter<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   * @param status<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>   * @return Highest sequenceId found out in a Store.<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * @throws IOException<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   */<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      throws IOException {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>    // Load in all the HStores.<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    long maxSeqId = -1;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    long maxMemstoreTS = -1;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span><a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span><a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      // initialize each store in parallel<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>          @Override<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>          public HStore call() throws IOException {<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>            return instantiateHStore(family);<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          }<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>        });<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      }<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>      boolean allStoresOpened = false;<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>      boolean hasSloppyStores = false;<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>      try {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>          HStore store = future.get();<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>          if (store.isSloppyMemStore()) {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            hasSloppyStores = true;<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>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>              storeMaxSequenceId);<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            maxSeqId = storeMaxSequenceId;<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>          }<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>          }<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>        }<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>        allStoresOpened = true;<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>        if(hasSloppyStores) {<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>                  .build();<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        }<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>      } catch (InterruptedException e) {<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>      } catch (ExecutionException e) {<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        throw new IOException(e.getCause());<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>      } finally {<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        if (!allStoresOpened) {<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>          // something went wrong, close all opened stores<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>          for (HStore store : this.stores.values()) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>            try {<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>              store.close();<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>            } catch (IOException e) {<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>              LOG.warn("close store failed", e);<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>            }<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          }<a name="line.1075"></a>
+<span class="sourceLineNo">961</span>    if (this.writestate.writesEnabled) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>      LOG.debug("Cleaning up temporary data for " + this.getRegionInfo().getEncodedName());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      // Remove temporary data left over from old regions<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      status.setStatus("Cleaning up temporary data from old regions");<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      fs.cleanupTempDir();<a name="line.965"></a>
+<span class="sourceLineNo">966</span>    }<a name="line.966"></a>
+<span class="sourceLineNo">967</span><a name="line.967"></a>
+<span class="sourceLineNo">968</span>    if (this.writestate.writesEnabled) {<a name="line.968"></a>
+<span class="sourceLineNo">969</span>      status.setStatus("Cleaning up detritus from prior splits");<a name="line.969"></a>
+<span class="sourceLineNo">970</span>      // Get rid of any splits or merges that were lost in-progress.  Clean out<a name="line.970"></a>
+<span class="sourceLineNo">971</span>      // these directories here on open.  We may be opening a region that was<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      // being split but we crashed in the middle of it all.<a name="line.972"></a>
+<span class="sourceLineNo">973</span>      LOG.debug("Cleaning up detritus for " + this.getRegionInfo().getEncodedName());<a name="line.973"></a>
+<span class="sourceLineNo">974</span>      fs.cleanupAnySplitDetritus();<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      fs.cleanupMergesDir();<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    }<a name="line.976"></a>
+<span class="sourceLineNo">977</span><a name="line.977"></a>
+<span class="sourceLineNo">978</span>    // Initialize split policy<a name="line.978"></a>
+<span class="sourceLineNo">979</span>    this.splitPolicy = RegionSplitPolicy.create(this, conf);<a name="line.979"></a>
+<span class="sourceLineNo">980</span><a name="line.980"></a>
+<span class="sourceLineNo">981</span>    // Initialize flush policy<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    this.flushPolicy = FlushPolicyFactory.create(this, conf);<a name="line.982"></a>
+<span class="sourceLineNo">983</span><a name="line.983"></a>
+<span class="sourceLineNo">984</span>    long lastFlushTime = EnvironmentEdgeManager.currentTime();<a name="line.984"></a>
+<span class="sourceLineNo">985</span>    for (HStore store: stores.values()) {<a name="line.985"></a>
+<span class="sourceLineNo">986</span>      this.lastStoreFlushTimeMap.put(store, lastFlushTime);<a name="line.986"></a>
+<span class="sourceLineNo">987</span>    }<a name="line.987"></a>
+<span class="sourceLineNo">988</span><a name="line.988"></a>
+<span class="sourceLineNo">989</span>    // Use maximum of log sequenceid or that which was found in stores<a name="line.989"></a>
+<span class="sourceLineNo">990</span>    // (particularly if no recovered edits, seqid will be -1).<a name="line.990"></a>
+<span class="sourceLineNo">991</span>    long maxSeqIdFromFile =<a name="line.991"></a>
+<span class="sourceLineNo">992</span>      WALSplitter.getMaxRegionSequenceId(fs.getFileSystem(), fs.getRegionDir());<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    long nextSeqId = Math.max(maxSeqId, maxSeqIdFromFile) + 1;<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    // The openSeqNum will always be increase even for read only region, as we rely on it to<a name="line.994"></a>
+<span class="sourceLineNo">995</span>    // determine whether a region has been successfully reopend, so here we always need to update<a name="line.995"></a>
+<span class="sourceLineNo">996</span>    // the max sequence id file.<a name="line.996"></a>
+<span class="sourceLineNo">997</span>    if (RegionReplicaUtil.isDefaultReplica(getRegionInfo())) {<a name="line.997"></a>
+<span class="sourceLineNo">998</span>      LOG.debug("writing seq id for {}", this.getRegionInfo().getEncodedName());<a name="line.998"></a>
+<span class="sourceLineNo">999</span>      WALSplitter.writeRegionSequenceIdFile(fs.getFileSystem(), fs.getRegionDir(), nextSeqId - 1);<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>    LOG.info("Opened {}; next sequenceid={}", this.getRegionInfo().getShortNameToLog(), nextSeqId);<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span><a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>    // A region can be reopened if failed a split; reset flags<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>    this.closing.set(false);<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    this.closed.set(false);<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span><a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>    if (coprocessorHost != null) {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>      LOG.debug("Running coprocessor post-open hooks for " + this.getRegionInfo().getEncodedName());<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>      status.setStatus("Running coprocessor post-open hooks");<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>      coprocessorHost.postOpen();<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>    }<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span><a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>    status.markComplete("Region opened successfully");<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>    return nextSeqId;<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>  }<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span><a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>  /**<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>   * Open all Stores.<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>   * @param reporter<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>   * @param status<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>   * @return Highest sequenceId found out in a Store.<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>   * @throws IOException<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>   */<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>  private long initializeStores(CancelableProgressable reporter, MonitoredTask status)<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>      throws IOException {<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    // Load in all the HStores.<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>    long maxSeqId = -1;<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>    // initialized to -1 so that we pick up MemstoreTS from column families<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>    long maxMemstoreTS = -1;<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span><a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>    if (htableDescriptor.getColumnFamilyCount() != 0) {<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>      // initialize the thread pool for opening stores in parallel.<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>      ThreadPoolExecutor storeOpenerThreadPool =<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>        getStoreOpenAndCloseThreadPool("StoreOpener-" + this.getRegionInfo().getShortNameToLog());<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>      CompletionService&lt;HStore&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeOpenerThreadPool);<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>      // initialize each store in parallel<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>      for (final ColumnFamilyDescriptor family : htableDescriptor.getColumnFamilies()) {<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>        status.setStatus("Instantiating store for column family " + family);<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>        completionService.submit(new Callable&lt;HStore&gt;() {<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>          @Override<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>          public HStore call() throws IOException {<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>            return instantiateHStore(family);<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>          }<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>        });<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>      }<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>      boolean allStoresOpened = false;<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>      boolean hasSloppyStores = false;<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>      try {<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>        for (int i = 0; i &lt; htableDescriptor.getColumnFamilyCount(); i++) {<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>          Future&lt;HStore&gt; future = completionService.take();<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>          HStore store = future.get();<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>          this.stores.put(store.getColumnFamilyDescriptor().getName(), store);<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>          if (store.isSloppyMemStore()) {<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>            hasSloppyStores = true;<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>          }<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span><a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>          long storeMaxSequenceId = store.getMaxSequenceId().orElse(0L);<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>          maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()),<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>              storeMaxSequenceId);<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>          if (maxSeqId == -1 || storeMaxSequenceId &gt; maxSeqId) {<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>            maxSeqId = storeMaxSequenceId;<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>          }<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>          long maxStoreMemstoreTS = store.getMaxMemStoreTS().orElse(0L);<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>          if (maxStoreMemstoreTS &gt; maxMemstoreTS) {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>            maxMemstoreTS = maxStoreMemstoreTS;<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>          }<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span>        }<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>        allStoresOpened = true;<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>        if(hasSloppyStores) {<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>          htableDescriptor = TableDescriptorBuilder.newBuilder(htableDescriptor)<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>                  .setFlushPolicyClassName(FlushNonSloppyStoresFirstPolicy.class.getName())<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>                  .build();<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>          LOG.info("Setting FlushNonSloppyStoresFirstPolicy for the region=" + this);<a name="line.1075"></a>
 <span class="sourceLineNo">1076</span>        }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      }<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    }<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>  }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span><a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>    // Initialize all the HStores<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>    status.setStatus("Warming up all the Stores");<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    try {<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>      initializeStores(reporter, status);<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>    } finally {<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>      status.markComplete("Done warming up.");<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>    }<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>  }<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>   * @return Map of StoreFiles by column family<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>   */<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    for (HStore store : stores.values()) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      if (storeFiles == null) {<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>        continue;<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>        storeFileNames.add(storeFile.getPath());<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      }<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>    }<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>    return allStoreFiles;<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>  }<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span><a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>  @VisibleForTesting<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>        mvcc);<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  }<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span><a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>        mvcc);<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span><a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>    // Store SeqId in HDFS when a region closes<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    // table is still online<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>        mvcc.getReadPoint());<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>    }<a name="line.1136"></a>
+<span class="sourceLineNo">1077</span>      } catch (InterruptedException e) {<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>      } catch (ExecutionException e) {<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>        throw new IOException(e.getCause());<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      } finally {<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>        storeOpenerThreadPool.shutdownNow();<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>        if (!allStoresOpened) {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>          // something went wrong, close all opened stores<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>          LOG.error("Could not initialize all stores for the region=" + this);<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>          for (HStore store : this.stores.values()) {<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>            try {<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>              store.close();<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>            } catch (IOException e) {<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>              LOG.warn("close store failed", e);<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>            }<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>      }<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>    }<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>    return Math.max(maxSeqId, maxMemstoreTS + 1);<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>  }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span><a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>  private void initializeWarmup(final CancelableProgressable reporter) throws IOException {<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>    MonitoredTask status = TaskMonitor.get().createStatus("Initializing region " + this);<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>    // Initialize all the HStores<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>    status.setStatus("Warming up all the Stores");<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>    try {<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>      initializeStores(reporter, status);<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>    } finally {<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>      status.markComplete("Done warming up.");<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>    }<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>  }<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span><a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>  /**<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>   * @return Map of StoreFiles by column family<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>   */<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>  private NavigableMap&lt;byte[], List&lt;Path&gt;&gt; getStoreFiles() {<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>    NavigableMap&lt;byte[], List&lt;Path&gt;&gt; allStoreFiles = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>    for (HStore store : stores.values()) {<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>      Collection&lt;HStoreFile&gt; storeFiles = store.getStorefiles();<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>      if (storeFiles == null) {<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>        continue;<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span>      }<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span>      List&lt;Path&gt; storeFileNames = new ArrayList&lt;&gt;();<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>      for (HStoreFile storeFile : storeFiles) {<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>        storeFileNames.add(storeFile.getPath());<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>      }<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>      allStoreFiles.put(store.getColumnFamilyDescriptor().getName(), storeFileNames);<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>    }<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>    return allStoreFiles;<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>  }<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span><a name="line.1128"></a>
+<span class="sourceLineNo">1129</span>  @VisibleForTesting<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>  protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>    RegionEventDescriptor regionOpenDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>      RegionEventDescriptor.EventType.REGION_OPEN, getRegionInfo(), openSeqId,<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionOpenDesc,<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>        mvcc);<a name="line.1136"></a>
 <span class="sourceLineNo">1137</span>  }<a name="line.1137"></a>
 <span class="sourceLineNo">1138</span><a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>  /**<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>   * @return True if this region has references.<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>   */<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>  public boolean hasReferences() {<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<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>  public void blockUpdates() {<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>    this.updatesLock.writeLock().lock();<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>  }<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span><a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>  public void unblockUpdates() {<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>    this.updatesLock.writeLock().unlock();<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>  }<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span><a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>    return hdfsBlocksDistribution;<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>  }<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span><a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>  /**<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>   * @param conf configuration<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>   * @param regionInfo encoded name of the region<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>   * @throws IOException<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>   */<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>  }<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span><a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>  /**<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>   * @param conf configuration<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>   * @param regionInfo encoded name of the region<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>   * @param tablePath the table directory<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>   * @throws IOException<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>   */<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1186"></a>
-<span class="sourceLineNo">1187</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1188"></a>
-<span class="sourceLineNo">1189</span><a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span>      if (locatedFileStatusList == null) {<a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>        continue;<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>      }<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span><a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>        Path p = status.getPath();<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>          // creation<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>              status.getBlockLocations());<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span>        } else {<a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>          throw new IOException("path=" + p<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>              + " doesn't look like a valid StoreFile");<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>        }<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>      }<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>    }<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>    return hdfsBlocksDistribution;<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>   * Increase the size of mem store in this region and the size of global mem<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>   * store<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>   */<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>  }<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span><a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>    if (this.rsAccounting != null) {<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>    }<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>    long dataSize =<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1234"></a>
+<span class="sourceLineNo">1139</span>  private void writeRegionCloseMarker(WAL wal) throws IOException {<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>    Map&lt;byte[], List&lt;Path&gt;&gt; storeFiles = getStoreFiles();<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>    RegionEventDescriptor regionEventDesc = ProtobufUtil.toRegionEventDescriptor(<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span>      RegionEventDescriptor.EventType.REGION_CLOSE, getRegionInfo(), mvcc.getReadPoint(),<a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>      getRegionServerServices().getServerName(), storeFiles);<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>    WALUtil.writeRegionEventMarker(wal, getReplicationScope(), getRegionInfo(), regionEventDesc,<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span>        mvcc);<a name="line.1145"></a>
+<span class="sourceLineNo">1146</span><a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>    // Store SeqId in HDFS when a region closes<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>    // checking region folder exists is due to many tests which delete the table folder while a<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>    // table is still online<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>    if (this.fs.getFileSystem().exists(this.fs.getRegionDir())) {<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>      WALSplitter.writeRegionSequenceIdFile(this.fs.getFileSystem(), this.fs.getRegionDir(),<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span>        mvcc.getReadPoint());<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>    }<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>  }<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span><a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>  /**<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>   * @return True if this region has references.<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>   */<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>  public boolean hasReferences() {<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>    return stores.values().stream().anyMatch(HStore::hasReferences);<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>  }<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span><a name="line.1162"></a>
+<span class="sourceLineNo">1163</span>  public void blockUpdates() {<a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>    this.updatesLock.writeLock().lock();<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>  }<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span><a name="line.1166"></a>
+<span class="sourceLineNo">1167</span>  public void unblockUpdates() {<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>    this.updatesLock.writeLock().unlock();<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>  public HDFSBlocksDistribution getHDFSBlocksDistribution() {<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1172"></a>
+<span class="sourceLineNo">1173</span>    stores.values().stream().filter(s -&gt; s.getStorefiles() != null)<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span>        .flatMap(s -&gt; s.getStorefiles().stream()).map(HStoreFile::getHDFSBlockDistribution)<a name="line.1174"></a>
+<span class="sourceLineNo">1175</span>        .forEachOrdered(hdfsBlocksDistribution::add);<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>    return hdfsBlocksDistribution;<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span>  }<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span><a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>  /**<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>   * @param conf configuration<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1182"></a>
+<span class="sourceLineNo">1183</span>   * @param regionInfo encoded name of the region<a name="line.1183"></a>
+<span class="sourceLineNo">1184</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1184"></a>
+<span class="sourceLineNo">1185</span>   * @throws IOException<a name="line.1185"></a>
+<span class="sourceLineNo">1186</span>   */<a name="line.1186"></a>
+<span class="sourceLineNo">1187</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1187"></a>
+<span class="sourceLineNo">1188</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo) throws IOException {<a name="line.1188"></a>
+<span class="sourceLineNo">1189</span>    Path tablePath = FSUtils.getTableDir(FSUtils.getRootDir(conf), tableDescriptor.getTableName());<a name="line.1189"></a>
+<span class="sourceLineNo">1190</span>    return computeHDFSBlocksDistribution(conf, tableDescriptor, regionInfo, tablePath);<a name="line.1190"></a>
+<span class="sourceLineNo">1191</span>  }<a name="line.1191"></a>
+<span class="sourceLineNo">1192</span><a name="line.1192"></a>
+<span class="sourceLineNo">1193</span>  /**<a name="line.1193"></a>
+<span class="sourceLineNo">1194</span>   * This is a helper function to compute HDFS block distribution on demand<a name="line.1194"></a>
+<span class="sourceLineNo">1195</span>   * @param conf configuration<a name="line.1195"></a>
+<span class="sourceLineNo">1196</span>   * @param tableDescriptor TableDescriptor of the table<a name="line.1196"></a>
+<span class="sourceLineNo">1197</span>   * @param regionInfo encoded name of the region<a name="line.1197"></a>
+<span class="sourceLineNo">1198</span>   * @param tablePath the table directory<a name="line.1198"></a>
+<span class="sourceLineNo">1199</span>   * @return The HDFS blocks distribution for the given region.<a name="line.1199"></a>
+<span class="sourceLineNo">1200</span>   * @throws IOException<a name="line.1200"></a>
+<span class="sourceLineNo">1201</span>   */<a name="line.1201"></a>
+<span class="sourceLineNo">1202</span>  public static HDFSBlocksDistribution computeHDFSBlocksDistribution(Configuration conf,<a name="line.1202"></a>
+<span class="sourceLineNo">1203</span>      TableDescriptor tableDescriptor, RegionInfo regionInfo, Path tablePath) throws IOException {<a name="line.1203"></a>
+<span class="sourceLineNo">1204</span>    HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();<a name="line.1204"></a>
+<span class="sourceLineNo">1205</span>    FileSystem fs = tablePath.getFileSystem(conf);<a name="line.1205"></a>
+<span class="sourceLineNo">1206</span><a name="line.1206"></a>
+<span class="sourceLineNo">1207</span>    HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tablePath, regionInfo);<a name="line.1207"></a>
+<span class="sourceLineNo">1208</span>    for (ColumnFamilyDescriptor family : tableDescriptor.getColumnFamilies()) {<a name="line.1208"></a>
+<span class="sourceLineNo">1209</span>      List&lt;LocatedFileStatus&gt; locatedFileStatusList = HRegionFileSystem<a name="line.1209"></a>
+<span class="sourceLineNo">1210</span>          .getStoreFilesLocatedStatus(regionFs, family.getNameAsString(), true);<a name="line.1210"></a>
+<span class="sourceLineNo">1211</span>      if (locatedFileStatusList == null) {<a name="line.1211"></a>
+<span class="sourceLineNo">1212</span>        continue;<a name="line.1212"></a>
+<span class="sourceLineNo">1213</span>      }<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span><a name="line.1214"></a>
+<span class="sourceLineNo">1215</span>      for (LocatedFileStatus status : locatedFileStatusList) {<a name="line.1215"></a>
+<span class="sourceLineNo">1216</span>        Path p = status.getPath();<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span>        if (StoreFileInfo.isReference(p) || HFileLink.isHFileLink(p)) {<a name="line.1217"></a>
+<span class="sourceLineNo">1218</span>          // Only construct StoreFileInfo object if its not a hfile, save obj<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span>          // creation<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span>          StoreFileInfo storeFileInfo = new StoreFileInfo(conf, fs, status);<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span>          hdfsBlocksDistribution.add(storeFileInfo<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span>              .computeHDFSBlocksDistribution(fs));<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span>        } else if (StoreFileInfo.isHFile(p)) {<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span>          // If its a HFile, then lets just add to the block distribution<a name="line.1224"></a>
+<span class="sourceLineNo">1225</span>          // lets not create more objects here, not even another HDFSBlocksDistribution<a name="line.1225"></a>
+<span class="sourceLineNo">1226</span>          FSUtils.addToHDFSBlocksDistribution(hdfsBlocksDistribution,<a name="line.1226"></a>
+<span class="sourceLineNo">1227</span>              status.getBlockLocations());<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span>        } else {<a name="line.1228"></a>
+<span class="sourceLineNo">1229</span>          throw new IOException("path=" + p<a name="line.1229"></a>
+<span class="sourceLineNo">1230</span>              + " doesn't look like a valid StoreFile");<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>    }<a name="line.1233"></a>
+<span class="sourceLineNo">1234</span>    return hdfsBlocksDistribution;<a name="line.1234"></a>
 <span class="sourceLineNo">1235</span>  }<a name="line.1235"></a>
 <span class="sourceLineNo">1236</span><a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>  }<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span><a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>    if (this.rsAccounting != null) {<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>    }<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>    long dataSize =<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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 checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    if (memStoreDataSize &lt; 0) {<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>    }<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>  }<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span><a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>  @Override<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>  public RegionInfo getRegionInfo() {<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>    return this.fs.getRegionInfo();<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>  }<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span><a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>  /**<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>   * @return Instance of {@link RegionServerServices} used by this HRegion.<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>   * Can be null.<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>   */<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>  RegionServerServices getRegionServerServices() {<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>    return this.rsServices;<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>  }<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span><a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>  @Override<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>  public long getReadRequestsCount() {<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>    return readRequestsCount.sum();<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>  }<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span><a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>  @Override<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>  public long getCpRequestsCount() {<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>    return cpRequestsCount.sum();<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>  @Override<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>  public long getFilteredReadRequestsCount() {<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>    return filteredReadRequestsCount.sum();<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>  @Override<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>  public long getWriteRequestsCount() {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    return writeRequestsCount.sum();<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>  }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>  @Override<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>  public long getMemStoreDataSize() {<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>    return memStoreSizing.getDataSize();<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>  @Override<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>  public long getMemStoreHeapSize() {<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>    return memStoreSizing.getHeapSize();<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>  }<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span><a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>  @Override<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>  public long getMemStoreOffHeapSize() {<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>    return memStoreSizing.getOffHeapSize();<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>  }<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span><a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>  /** @return store services for this region, to access services required by store level needs */<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>  public RegionServicesForStores getRegionServicesForStores() {<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>    return regionServicesForStores;<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>  @Override<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>  public long getNumMutationsWithoutWAL() {<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>    return numMutationsWithoutWAL.sum();<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>  @Override<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>  public long getDataInMemoryWithoutWAL() {<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>    return dataInMemoryWithoutWAL.sum();<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>  }<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span><a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>  @Override<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>  public long getBlockedRequestsCount() {<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>    return blockedRequestsCount.sum();<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>  }<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span><a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>  @Override<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>  public long getCheckAndMutateChecksPassed() {<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>    return checkAndMutateChecksPassed.sum();<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 long getCheckAndMutateChecksFailed() {<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    return checkAndMutateChecksFailed.sum();<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>  // TODO Needs to check whether we should expose our metrics system to CPs. If CPs themselves doing<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>  // the op and bypassing the core, this might be needed? Should be stop supporting the bypass<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>  // feature?<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>  public MetricsRegion getMetrics() {<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>    return metricsRegion;<a name="line.1342"></a>
+<span class="sourceLineNo">1237</span>  /**<a name="line.1237"></a>
+<span class="sourceLineNo">1238</span>   * Increase the size of mem store in this region and the size of global mem<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span>   * store<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span>   */<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>  void incMemStoreSize(MemStoreSize mss) {<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>    incMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>  }<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span><a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>  void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>    if (this.rsAccounting != null) {<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>      rsAccounting.incGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>    }<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>    long dataSize =<a name="line.1249"></a>
+<span class="sourceLineNo">1250</span>        this.memStoreSizing.incMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1250"></a>
+<span class="sourceLineNo">1251</span>    checkNegativeMemStoreDataSize(dataSize, dataSizeDelta);<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>  }<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span><a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>  void decrMemStoreSize(MemStoreSize mss) {<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>    decrMemStoreSize(mss.getDataSize(), mss.getHeapSize(), mss.getOffHeapSize());<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span>  }<a name="line.1256"></a>
+<span class="sourceLineNo">1257</span><a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>  void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) {<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>    if (this.rsAccounting != null) {<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>      rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>    }<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>    long dataSize =<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>        this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta);<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>    checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta);<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>  private void checkNegativeMemStoreDataSize(long memStoreDataSize, long delta) {<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>    // This is extremely bad if we make memStoreSizing negative. Log as much info on the offending<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>    // caller as possible. (memStoreSizing might be a negative value already -- freeing memory)<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>    if (memStoreDataSize &lt; 0) {<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>      LOG.error("Asked to modify this region's (" + this.toString()<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span>          + ") memStoreSizing to a negative value which is incorrect. Current memStoreSizing="<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>          + (memStoreDataSize - delta) + ", delta=" + delta, new Exception());<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>    }<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>  }<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span><a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>  @Override<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>  public RegionInfo getRegionInfo() {<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>    return this.fs.getRegionInfo();<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>  }<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="sourceLineN

<TRUNCATED>

[40/51] [partial] hbase-site git commit: Published site at 6a5b4f2a5c188f8eef4f2250b8b7db7dd1e750e4.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1ff05a18/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 b88f63d..21bc534 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html
@@ -1749,7 +1749,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>FIXED_OVERHEAD</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2416">FIXED_OVERHEAD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2421">FIXED_OVERHEAD</a></pre>
 </li>
 </ul>
 <a name="DEEP_OVERHEAD">
@@ -1758,7 +1758,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DEEP_OVERHEAD</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2420">DEEP_OVERHEAD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2425">DEEP_OVERHEAD</a></pre>
 </li>
 </ul>
 </li>
@@ -1818,7 +1818,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>createCacheConf</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.369">createCacheConf</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;family)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.370">createCacheConf</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;family)</pre>
 <div class="block">Creates the cache config.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1832,7 +1832,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>createStoreEngine</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">StoreEngine</a>&lt;?,?,?,?&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.381">createStoreEngine</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">StoreEngine</a>&lt;?,?,?,?&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.382">createStoreEngine</a>(<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,
                                                  <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;kvComparator)
                                           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>
@@ -1856,7 +1856,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>determineTTLFromFamily</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.390">determineTTLFromFamily</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;family)</pre>
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.391">determineTTLFromFamily</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;family)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>family</code> - </dd>
@@ -1871,7 +1871,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getColumnFamilyName</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/HStore.html#line.406">getColumnFamilyName</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/HStore.html#line.407">getColumnFamilyName</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getColumnFamilyName--">getColumnFamilyName</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>
@@ -1884,7 +1884,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableName</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.411">getTableName</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.412">getTableName</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getTableName--">getTableName</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>
@@ -1897,7 +1897,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getFileSystem</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.FileSystem&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.416">getFileSystem</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.fs.FileSystem&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.417">getFileSystem</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getFileSystem--">getFileSystem</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>
@@ -1910,7 +1910,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionFileSystem</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.420">getRegionFileSystem</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.421">getRegionFileSystem</a>()</pre>
 </li>
 </ul>
 <a name="getStoreFileTtl--">
@@ -1919,7 +1919,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreFileTtl</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.426">getStoreFileTtl</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.427">getStoreFileTtl</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreConfigInformation.html#getStoreFileTtl--">getStoreFileTtl</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreConfigInformation.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreConfigInformation</a></code></dd>
@@ -1934,7 +1934,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getMemStoreFlushSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.432">getMemStoreFlushSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.433">getMemStoreFlushSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreConfigInformation.html#getMemStoreFlushSize--">getMemStoreFlushSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreConfigInformation.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreConfigInformation</a></code></dd>
@@ -1949,7 +1949,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getFlushableSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.438">getFlushableSize</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.439">getFlushableSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getFlushableSize--">getFlushableSize</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>
@@ -1966,7 +1966,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getSnapshotSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.443">getSnapshotSize</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.444">getSnapshotSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getSnapshotSize--">getSnapshotSize</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>
@@ -1981,7 +1981,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactionCheckMultiplier</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.448">getCompactionCheckMultiplier</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.449">getCompactionCheckMultiplier</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreConfigInformation.html#getCompactionCheckMultiplier--">getCompactionCheckMultiplier</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreConfigInformation.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreConfigInformation</a></code></dd>
@@ -1998,7 +1998,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getBlockingFileCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.453">getBlockingFileCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.454">getBlockingFileCount</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreConfigInformation.html#getBlockingFileCount--">StoreConfigInformation</a></code></span></div>
 <div class="block">The number of files required before flushes for this store will be blocked.</div>
 <dl>
@@ -2013,7 +2013,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getBytesPerChecksum</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.463">getBytesPerChecksum</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.464">getBytesPerChecksum</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block">Returns the configured bytesPerChecksum value.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2029,7 +2029,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getChecksumType</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util">ChecksumType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.473">getChecksumType</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util">ChecksumType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.474">getChecksumType</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block">Returns the configured checksum algorithm.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2045,7 +2045,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getCloseCheckInterval</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.485">getCloseCheckInterval</a>()</pre>
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.486">getCloseCheckInterval</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>how many bytes to write between status checks</dd>
@@ -2058,7 +2058,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getColumnFamilyDescriptor</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.490">getColumnFamilyDescriptor</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.491">getColumnFamilyDescriptor</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getColumnFamilyDescriptor--">getColumnFamilyDescriptor</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>
@@ -2071,7 +2071,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxSequenceId</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/HStore.html#line.495">getMaxSequenceId</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/HStore.html#line.496">getMaxSequenceId</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getMaxSequenceId--">getMaxSequenceId</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>
@@ -2086,7 +2086,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxMemStoreTS</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/HStore.html#line.500">getMaxMemStoreTS</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/HStore.html#line.501">getMaxMemStoreTS</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getMaxMemStoreTS--">getMaxMemStoreTS</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>
@@ -2102,7 +2102,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <li class="blockList">
 <h4>getStoreHomedir</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.511">getStoreHomedir</a>(org.apache.hadoop.fs.Path&nbsp;tabledir,
+public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.512">getStoreHomedir</a>(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,
                                                                     byte[]&nbsp;family)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
@@ -2123,7 +2123,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <li class="blockList">
 <h4>getStoreHomedir</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.523">getStoreHomedir</a>(org.apache.hadoop.fs.Path&nbsp;tabledir,
+public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.524">getStoreHomedir</a>(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,
                                                                     byte[]&nbsp;family)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
@@ -2143,7 +2143,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataBlockEncoder</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileDataBlockEncoder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.531">getDataBlockEncoder</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileDataBlockEncoder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.532">getDataBlockEncoder</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the data block encoder</dd>
@@ -2156,7 +2156,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>setDataBlockEncoderInTest</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.539">setDataBlockEncoderInTest</a>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileDataBlockEncoder</a>&nbsp;blockEncoder)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.540">setDataBlockEncoderInTest</a>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileDataBlockEncoder</a>&nbsp;blockEncoder)</pre>
 <div class="block">Should be used only in tests.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2170,7 +2170,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>loadStoreFiles</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.548">loadStoreFiles</a>()
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.549">loadStoreFiles</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">Creates an unsorted list of StoreFile loaded in parallel
  from the given directory.</div>
@@ -2186,7 +2186,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>openStoreFiles</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.553">openStoreFiles</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/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&gt;&nbsp;files)
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.554">openStoreFiles</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/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&gt;&nbsp;files)
                                  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>
@@ -2200,7 +2200,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>refreshStoreFiles</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.613">refreshStoreFiles</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.614">refreshStoreFiles</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/Store.html#refreshStoreFiles--">Store</a></code></span></div>
 <div class="block">Checks the underlying store files, and opens the files that have not been opened, and removes
@@ -2220,7 +2220,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>refreshStoreFiles</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.623">refreshStoreFiles</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="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)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.624">refreshStoreFiles</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="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)
                        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">Replaces the store files that the store has with the given files. Mainly used by secondary
  region replicas to keep up to date with the primary region files.</div>
@@ -2236,7 +2236,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>refreshStoreFilesInternal</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.638">refreshStoreFilesInternal</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/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&gt;&nbsp;newFiles)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.639">refreshStoreFilesInternal</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/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&gt;&nbsp;newFiles)
                                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Checks the underlying store files, and opens the files that  have not
  been opened, and removes the store file readers for store files no longer
@@ -2254,7 +2254,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>createStoreFileAndReader</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.691">createStoreFileAndReader</a>(org.apache.hadoop.fs.Path&nbsp;p)
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.692">createStoreFileAndReader</a>(org.apache.hadoop.fs.Path&nbsp;p)
                                        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>
@@ -2268,7 +2268,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>createStoreFileAndReader</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.696">createStoreFileAndReader</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&nbsp;info)
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.697">createStoreFileAndReader</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&nbsp;info)
                                      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>
@@ -2282,7 +2282,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>startReplayingFromWAL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.708">startReplayingFromWAL</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.709">startReplayingFromWAL</a>()</pre>
 <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>
 </li>
@@ -2293,7 +2293,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>stopReplayingFromWAL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.716">stopReplayingFromWAL</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.717">stopReplayingFromWAL</a>()</pre>
 <div class="block">This message intends to inform the MemStore that the replaying edits from WAL
  are done</div>
 </li>
@@ -2304,7 +2304,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.723">add</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.724">add</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 <div class="block">Adds a value to the memstore</div>
 </li>
@@ -2315,7 +2315,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.740">add</a>(<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,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.741">add</a>(<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,
                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 <div class="block">Adds the specified value to the memstore</div>
 </li>
@@ -2326,7 +2326,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>timeOfOldestEdit</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.755">timeOfOldestEdit</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.756">timeOfOldestEdit</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#timeOfOldestEdit--">Store</a></code></span></div>
 <div class="block">When was the last edit done in the memstore</div>
 <dl>
@@ -2341,7 +2341,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getStorefiles</h4>
-<pre>public&nbsp;<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;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.763">getStorefiles</a>()</pre>
+<pre>public&nbsp;<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;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.764">getStorefiles</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getStorefiles--">getStorefiles</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>
@@ -2356,7 +2356,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactedFiles</h4>
-<pre>public&nbsp;<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;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.768">getCompactedFiles</a>()</pre>
+<pre>public&nbsp;<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;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.769">getCompactedFiles</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getCompactedFiles--">getCompactedFiles</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>
@@ -2369,7 +2369,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>assertBulkLoadHFileOk</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.776">assertBulkLoadHFileOk</a>(org.apache.hadoop.fs.Path&nbsp;srcPath)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.777">assertBulkLoadHFileOk</a>(org.apache.hadoop.fs.Path&nbsp;srcPath)
                            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 throws a WrongRegionException if the HFile does not fit in this region, or an
  InvalidHFileException if the HFile is not valid.</div>
@@ -2385,7 +2385,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>preBulkLoadHFile</h4>
-<pre>public&nbsp;<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;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.855">preBulkLoadHFile</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;srcPathStr,
+<pre>public&nbsp;<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;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.856">preBulkLoadHFile</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;srcPathStr,
                                                                                   long&nbsp;seqNum)
                                                                            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 should only be called from Region. It is assumed that the ranges of values in the
@@ -2405,7 +2405,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>bulkLoadHFile</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.860">bulkLoadHFile</a>(byte[]&nbsp;family,
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.861">bulkLoadHFile</a>(byte[]&nbsp;family,
                                                <a href="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,
                                                org.apache.hadoop.fs.Path&nbsp;dstPath)
                                         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>
@@ -2421,7 +2421,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>bulkLoadHFile</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.882">bulkLoadHFile</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&nbsp;fileInfo)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.883">bulkLoadHFile</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&nbsp;fileInfo)
                    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>
@@ -2435,7 +2435,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>bulkLoadHFile</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.887">bulkLoadHFile</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;sf)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.888">bulkLoadHFile</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;sf)
                     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>
@@ -2449,7 +2449,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;org.apache.hbase.thirdparty.com.google.common.collect.ImmutableCollection&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.919">close</a>()
+<pre>public&nbsp;org.apache.hbase.thirdparty.com.google.common.collect.ImmutableCollection&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.920">close</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">Close all the readers We don't need to worry about subsequent requests because the Region holds
  a write lock that will prevent any more reads or writes.</div>
@@ -2467,7 +2467,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshot</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.986">snapshot</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.987">snapshot</a>()</pre>
 <div class="block">Snapshot this stores memstore. Call before running
  <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-"><code>flushCache(long, MemStoreSnapshot, MonitoredTask, ThroughputController,
  FlushLifeCycleTracker)</code></a>
@@ -2480,7 +2480,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>flushCache</h4>
-<pre>protected&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/regionserver/HStore.html#line.1004">flushCache</a>(long&nbsp;logCacheFlushId,
+<pre>protected&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/regionserver/HStore.html#line.1005">flushCache</a>(long&nbsp;logCacheFlushId,
                                                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a>&nbsp;snapshot,
                                                      <a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status,
                                                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/throttle/ThroughputController.html" title="interface in org.apache.hadoop.hbase.regionserver.throttle">ThroughputController</a>&nbsp;throughputController,
@@ -2506,7 +2506,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>commitFile</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1057">commitFile</a>(org.apache.hadoop.fs.Path&nbsp;path,
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1058">commitFile</a>(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)
                        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>
@@ -2528,7 +2528,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>createWriterInTmp</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1087">createWriterInTmp</a>(long&nbsp;maxKeyCount,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1088">createWriterInTmp</a>(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,
                                          boolean&nbsp;isCompaction,
                                          boolean&nbsp;includeMVCCReadpoint,
@@ -2555,7 +2555,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>createFileContext</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileContext</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1118">createFileContext</a>(<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,
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileContext</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1119">createFileContext</a>(<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)</pre>
@@ -2567,7 +2567,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getTotalSize</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1140">getTotalSize</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;sfs)</pre>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1141">getTotalSize</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;sfs)</pre>
 </li>
 </ul>
 <a name="updateStorefiles-java.util.List-long-">
@@ -2576,7 +2576,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>updateStorefiles</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1151">updateStorefiles</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;sfs,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1152">updateStorefiles</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;sfs,
                                  long&nbsp;snapshotId)
                           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">Change storeFiles adding into place the Reader produced by this new flush.</div>
@@ -2597,7 +2597,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>notifyChangedReadersObservers</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1182">notifyChangedReadersObservers</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;sfs)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1183">notifyChangedReadersObservers</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;sfs)
                                     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">Notify all observers that set of Readers has changed.</div>
 <dl>
@@ -2612,7 +2612,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanners</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/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1206">getScanners</a>(boolean&nbsp;cacheBlocks,
+<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/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1207">getScanners</a>(boolean&nbsp;cacheBlocks,
                                          boolean&nbsp;isGet,
                                          boolean&nbsp;usePread,
                                          boolean&nbsp;isCompaction,
@@ -2644,7 +2644,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanners</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/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1226">getScanners</a>(boolean&nbsp;cacheBlocks,
+<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/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1227">getScanners</a>(boolean&nbsp;cacheBlocks,
                                          boolean&nbsp;usePread,
                                          boolean&nbsp;isCompaction,
                                          <a href="../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">ScanQueryMatcher</a>&nbsp;matcher,
@@ -2679,7 +2679,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanners</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/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1268">getScanners</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;files,
+<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/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1269">getScanners</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;files,
                                          boolean&nbsp;cacheBlocks,
                                          boolean&nbsp;isGet,
                                          boolean&nbsp;usePread,
@@ -2716,7 +2716,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanners</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/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1292">getScanners</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;files,
+<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/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1293">getScanners</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;files,
                                          boolean&nbsp;cacheBlocks,
                                          boolean&nbsp;usePread,
                                          boolean&nbsp;isCompaction,
@@ -2756,7 +2756,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>addChangedReaderObserver</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1319">addChangedReaderObserver</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChangedReadersObserver.html" title="interface in org.apache.hadoop.hbase.regionserver">ChangedReadersObserver</a>&nbsp;o)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1320">addChangedReaderObserver</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChangedReadersObserver.html" title="interface in org.apache.hadoop.hbase.regionserver">ChangedReadersObserver</a>&nbsp;o)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>o</code> - Observer who wants to know about changes in set of Readers</dd>
@@ -2769,7 +2769,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteChangedReaderObserver</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1326">deleteChangedReaderObserver</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChangedReadersObserver.html" title="interface in org.apache.hadoop.hbase.regionserver">ChangedReadersObserver</a>&nbsp;o)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1327">deleteChangedReaderObserver</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChangedReadersObserver.html" title="interface in org.apache.hadoop.hbase.regionserver">ChangedReadersObserver</a>&nbsp;o)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>o</code> - Observer no longer interested in changes in set of Readers.</dd>
@@ -2782,7 +2782,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>compact</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/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1378">compact</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&nbsp;compaction,
+<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/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1379">compact</a>(<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,
                                 <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)
                          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>
@@ -2839,7 +2839,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>doCompaction</h4>
-<pre>protected&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/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1410">doCompaction</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionRequestImpl.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionRequestImpl</a>&nbsp;cr,
+<pre>protected&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/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1411">doCompaction</a>(<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,
                                         <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
                                         long&nbsp;compactionStartTime,
@@ -2857,7 +2857,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>moveCompactedFilesIntoPlace</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1441">moveCompactedFilesIntoPlace</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionRequestImpl.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionRequestImpl</a>&nbsp;cr,
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1442">moveCompactedFilesIntoPlace</a>(<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)
                                               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>
@@ -2873,7 +2873,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>moveFileIntoPlace</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1457">moveFileIntoPlace</a>(org.apache.hadoop.fs.Path&nbsp;newFile)
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1458">moveFileIntoPlace</a>(org.apache.hadoop.fs.Path&nbsp;newFile)
                       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>
@@ -2887,7 +2887,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>writeCompactionWalRecord</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1469">writeCompactionWalRecord</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;filesCompacted,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1470">writeCompactionWalRecord</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;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)
                                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">Writes the compaction WAL record.</div>
@@ -2906,7 +2906,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>replaceStoreFiles</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1489">replaceStoreFiles</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>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1490">replaceStoreFiles</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,
                        <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)
                 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>
@@ -2921,7 +2921,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>updateSpaceQuotaAfterFileReplacement</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1520">updateSpaceQuotaAfterFileReplacement</a>(<a href="../../../../../org/apache/hadoop/hbase/quotas/RegionSizeStore.html" title="interface in org.apache.hadoop.hbase.quotas">RegionSizeStore</a>&nbsp;sizeStore,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1521">updateSpaceQuotaAfterFileReplacement</a>(<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,
                                           <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;oldFiles,
                                           <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)</pre>
@@ -2942,7 +2942,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>logCompactionEndMessage</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1547">logCompactionEndMessage</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionRequestImpl.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionRequestImpl</a>&nbsp;cr,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1548">logCompactionEndMessage</a>(<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,
                                      long&nbsp;now,
                                      long&nbsp;compactionStartTime)</pre>
@@ -2961,7 +2961,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>replayCompactionMarker</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1586">replayCompactionMarker</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescriptor&nbsp;compaction,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1587">replayCompactionMarker</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescriptor&nbsp;compaction,
                                    boolean&nbsp;pickCompactionFiles,
                                    boolean&nbsp;removeFiles)
                             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>
@@ -2982,7 +2982,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>compactRecentForTestingAssumingDefaultPolicy</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1651">compactRecentForTestingAssumingDefaultPolicy</a>(int&nbsp;N)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1652">compactRecentForTestingAssumingDefaultPolicy</a>(int&nbsp;N)
                                                   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 tries to compact N recent files for testing.
  Note that because compacting "recent" files only makes sense for some policies,
@@ -3002,7 +3002,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>hasReferences</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1703">hasReferences</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1704">hasReferences</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#hasReferences--">hasReferences</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>
@@ -3017,7 +3017,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactionProgress</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionProgress.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionProgress</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1721">getCompactionProgress</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionProgress.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionProgress</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1722">getCompactionProgress</a>()</pre>
 <div class="block">getter for CompactionProgress object</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -3031,7 +3031,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>shouldPerformMajorCompaction</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1726">shouldPerformMajorCompaction</a>()
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1727">shouldPerformMajorCompaction</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/Store.html#shouldPerformMajorCompaction--">Store</a></code></span></div>
 <div class="block">Tests whether we should run a major compaction. For example, if the configured major compaction
@@ -3052,7 +3052,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>requestCompaction</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/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1738">requestCompaction</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/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1739">requestCompaction</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>
@@ -3066,7 +3066,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>requestCompaction</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/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1742">requestCompaction</a>(int&nbsp;priority,
+<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/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1743">requestCompaction</a>(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)
                                               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>
@@ -3082,7 +3082,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>addToCompactingFiles</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1824">addToCompactingFiles</a>

<TRUNCATED>