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/10/26 14:53:40 UTC

[01/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site 39206685b -> fa850293e


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html
new file mode 100644
index 0000000..0f6bfca
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html
@@ -0,0 +1,294 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.client;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import java.io.IOException;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.util.List;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.Optional;<a name="line.22"></a>
+<span class="sourceLineNo">023</span><a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.Cell;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.HConstants;<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.coprocessor.ObserverContext;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessor;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.wal.WALEdit;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.junit.AfterClass;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.junit.BeforeClass;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.junit.ClassRule;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.junit.Test;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.junit.experimental.categories.Category;<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>@Category({MediumTests.class, ClientTests.class})<a name="line.44"></a>
+<span class="sourceLineNo">045</span>public class TestTableOperationException {<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>  @ClassRule<a name="line.47"></a>
+<span class="sourceLineNo">048</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.48"></a>
+<span class="sourceLineNo">049</span>      HBaseClassTestRule.forClass(TestTableOperationException.class);<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.51"></a>
+<span class="sourceLineNo">052</span><a name="line.52"></a>
+<span class="sourceLineNo">053</span>  private static TableName TABLE_DONOT_RETRY = TableName.valueOf("TableDoNotRetry");<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>  private static TableName TABLE_RETRY = TableName.valueOf("TableRetry");<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  private static Table tableDoNotRetry;<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  private static Table tableRetry;<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  private static byte[] CF = Bytes.toBytes("cf");<a name="line.61"></a>
+<span class="sourceLineNo">062</span><a name="line.62"></a>
+<span class="sourceLineNo">063</span>  private static byte[] CQ = Bytes.toBytes("cq");<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  @BeforeClass<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  public static void setUp() throws Exception {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    UTIL.getConfiguration().setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 2);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    UTIL.startMiniCluster();<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    UTIL.getAdmin().createTable(TableDescriptorBuilder.newBuilder(TABLE_DONOT_RETRY)<a name="line.69"></a>
+<span class="sourceLineNo">070</span>        .setCoprocessor(ThrowDoNotRetryIOExceptionCoprocessor.class.getName())<a name="line.70"></a>
+<span class="sourceLineNo">071</span>        .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(CF).build()).build());<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    UTIL.getAdmin().createTable(TableDescriptorBuilder.newBuilder(TABLE_RETRY)<a name="line.72"></a>
+<span class="sourceLineNo">073</span>        .setCoprocessor(ThrowIOExceptionCoprocessor.class.getName())<a name="line.73"></a>
+<span class="sourceLineNo">074</span>        .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(CF).build()).build());<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    tableDoNotRetry = UTIL.getConnection().getTable(TABLE_DONOT_RETRY);<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    tableRetry = UTIL.getConnection().getTable(TABLE_RETRY);<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>  @AfterClass<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  public static void tearDown() throws Exception {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    UTIL.getAdmin().disableTable(TABLE_DONOT_RETRY);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    UTIL.getAdmin().disableTable(TABLE_RETRY);<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    UTIL.getAdmin().deleteTable(TABLE_DONOT_RETRY);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    UTIL.getAdmin().deleteTable(TABLE_RETRY);<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    UTIL.shutdownMiniCluster();<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>  @Test(expected = DoNotRetryIOException.class)<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  public void testGetWithDoNotRetryIOException() throws Exception {<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    tableDoNotRetry.get(new Get(Bytes.toBytes("row")).addColumn(CF, CQ));<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>  @Test(expected = DoNotRetryIOException.class)<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  public void testPutWithDoNotRetryIOException() throws Exception {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    tableDoNotRetry.put(new Put(Bytes.toBytes("row")).addColumn(CF, CQ, Bytes.toBytes("value")));<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>  @Test(expected = DoNotRetryIOException.class)<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  public void testDeleteWithDoNotRetryIOException() throws Exception {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    tableDoNotRetry.delete(new Delete(Bytes.toBytes("row")).addColumn(CF, CQ));<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>  @Test(expected = DoNotRetryIOException.class)<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  public void testAppendWithDoNotRetryIOException() throws Exception {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    tableDoNotRetry<a name="line.105"></a>
+<span class="sourceLineNo">106</span>        .append(new Append(Bytes.toBytes("row")).addColumn(CF, CQ, Bytes.toBytes("value")));<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  }<a name="line.107"></a>
+<span class="sourceLineNo">108</span><a name="line.108"></a>
+<span class="sourceLineNo">109</span>  @Test(expected = DoNotRetryIOException.class)<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  public void testIncrementWithDoNotRetryIOException() throws Exception {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    tableDoNotRetry.increment(new Increment(Bytes.toBytes("row")).addColumn(CF, CQ, 1));<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>  @Test(expected = RetriesExhaustedException.class)<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  public void testGetWithIOException() throws Exception {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    tableRetry.get(new Get(Bytes.toBytes("row")).addColumn(CF, CQ));<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>  @Test(expected = RetriesExhaustedException.class)<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  public void testPutWithIOException() throws Exception {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    tableRetry.put(new Put(Bytes.toBytes("row")).addColumn(CF, CQ, Bytes.toBytes("value")));<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>  @Test(expected = RetriesExhaustedException.class)<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  public void testDeleteWithIOException() throws Exception {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    tableRetry.delete(new Delete(Bytes.toBytes("row")).addColumn(CF, CQ));<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>  @Test(expected = RetriesExhaustedException.class)<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  public void testAppendWithIOException() throws Exception {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    tableRetry.append(new Append(Bytes.toBytes("row")).addColumn(CF, CQ, Bytes.toBytes("value")));<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>  @Test(expected = RetriesExhaustedException.class)<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  public void testIncrementWithIOException() throws Exception {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    tableRetry.increment(new Increment(Bytes.toBytes("row")).addColumn(CF, CQ, 1));<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>  public static class ThrowDoNotRetryIOExceptionCoprocessor<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      implements RegionCoprocessor, RegionObserver {<a name="line.140"></a>
+<span class="sourceLineNo">141</span><a name="line.141"></a>
+<span class="sourceLineNo">142</span>    public ThrowDoNotRetryIOExceptionCoprocessor() {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    }<a name="line.143"></a>
+<span class="sourceLineNo">144</span><a name="line.144"></a>
+<span class="sourceLineNo">145</span>    @Override<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    public Optional&lt;RegionObserver&gt; getRegionObserver() {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      return Optional.of(this);<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>    @Override<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    public void preGetOp(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, final Get get,<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        final List&lt;Cell&gt; results) throws IOException {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      throw new DoNotRetryIOException("Call failed and don't retry");<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 void prePut(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, final Put put,<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        final WALEdit edit, final Durability durability) throws IOException {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      throw new DoNotRetryIOException("Call failed and don't retry");<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 void preDelete(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        final Delete delete, final WALEdit edit, final Durability durability) throws IOException {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      throw new DoNotRetryIOException("Call failed and don't retry");<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>    @Override<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    public Result preIncrement(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        final Increment increment) throws IOException {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      throw new DoNotRetryIOException("Call failed and don't retry");<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>    @Override<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    public Result preAppend(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        final Append append) throws IOException {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      throw new DoNotRetryIOException("Call failed and don't retry");<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  }<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  public static class ThrowIOExceptionCoprocessor<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      implements RegionCoprocessor, RegionObserver {<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>    public ThrowIOExceptionCoprocessor() {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
+<span class="sourceLineNo">186</span><a name="line.186"></a>
+<span class="sourceLineNo">187</span>    @Override<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    public Optional&lt;RegionObserver&gt; getRegionObserver() {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      return Optional.of(this);<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>    @Override<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    public void preGetOp(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, final Get get,<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        final List&lt;Cell&gt; results) throws IOException {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      throw new IOException("Call failed and retry");<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>    @Override<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    public void prePut(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, final Put put,<a name="line.199"></a>
+<span class="sourceLineNo">200</span>        final WALEdit edit, final Durability durability) throws IOException {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      throw new IOException("Call failed and retry");<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>    @Override<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    public void preDelete(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        final Delete delete, final WALEdit edit, final Durability durability) throws IOException {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      throw new IOException("Call failed and retry");<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>    @Override<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    public Result preIncrement(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.211"></a>
+<span class="sourceLineNo">212</span>        final Increment increment) throws IOException {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      throw new IOException("Call failed and retry");<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>    @Override<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    public Result preAppend(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        final Append append) throws IOException {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      throw new IOException("Call failed and retry");<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>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestTableOperationException.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestTableOperationException.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestTableOperationException.html
new file mode 100644
index 0000000..0f6bfca
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestTableOperationException.html
@@ -0,0 +1,294 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.client;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import java.io.IOException;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.util.List;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.Optional;<a name="line.22"></a>
+<span class="sourceLineNo">023</span><a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.Cell;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.HConstants;<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.coprocessor.ObserverContext;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessor;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.wal.WALEdit;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.junit.AfterClass;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.junit.BeforeClass;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.junit.ClassRule;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.junit.Test;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.junit.experimental.categories.Category;<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>@Category({MediumTests.class, ClientTests.class})<a name="line.44"></a>
+<span class="sourceLineNo">045</span>public class TestTableOperationException {<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>  @ClassRule<a name="line.47"></a>
+<span class="sourceLineNo">048</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.48"></a>
+<span class="sourceLineNo">049</span>      HBaseClassTestRule.forClass(TestTableOperationException.class);<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.51"></a>
+<span class="sourceLineNo">052</span><a name="line.52"></a>
+<span class="sourceLineNo">053</span>  private static TableName TABLE_DONOT_RETRY = TableName.valueOf("TableDoNotRetry");<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>  private static TableName TABLE_RETRY = TableName.valueOf("TableRetry");<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  private static Table tableDoNotRetry;<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  private static Table tableRetry;<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  private static byte[] CF = Bytes.toBytes("cf");<a name="line.61"></a>
+<span class="sourceLineNo">062</span><a name="line.62"></a>
+<span class="sourceLineNo">063</span>  private static byte[] CQ = Bytes.toBytes("cq");<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  @BeforeClass<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  public static void setUp() throws Exception {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    UTIL.getConfiguration().setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 2);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    UTIL.startMiniCluster();<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    UTIL.getAdmin().createTable(TableDescriptorBuilder.newBuilder(TABLE_DONOT_RETRY)<a name="line.69"></a>
+<span class="sourceLineNo">070</span>        .setCoprocessor(ThrowDoNotRetryIOExceptionCoprocessor.class.getName())<a name="line.70"></a>
+<span class="sourceLineNo">071</span>        .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(CF).build()).build());<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    UTIL.getAdmin().createTable(TableDescriptorBuilder.newBuilder(TABLE_RETRY)<a name="line.72"></a>
+<span class="sourceLineNo">073</span>        .setCoprocessor(ThrowIOExceptionCoprocessor.class.getName())<a name="line.73"></a>
+<span class="sourceLineNo">074</span>        .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(CF).build()).build());<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    tableDoNotRetry = UTIL.getConnection().getTable(TABLE_DONOT_RETRY);<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    tableRetry = UTIL.getConnection().getTable(TABLE_RETRY);<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>  @AfterClass<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  public static void tearDown() throws Exception {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    UTIL.getAdmin().disableTable(TABLE_DONOT_RETRY);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    UTIL.getAdmin().disableTable(TABLE_RETRY);<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    UTIL.getAdmin().deleteTable(TABLE_DONOT_RETRY);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    UTIL.getAdmin().deleteTable(TABLE_RETRY);<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    UTIL.shutdownMiniCluster();<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>  @Test(expected = DoNotRetryIOException.class)<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  public void testGetWithDoNotRetryIOException() throws Exception {<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    tableDoNotRetry.get(new Get(Bytes.toBytes("row")).addColumn(CF, CQ));<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>  @Test(expected = DoNotRetryIOException.class)<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  public void testPutWithDoNotRetryIOException() throws Exception {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    tableDoNotRetry.put(new Put(Bytes.toBytes("row")).addColumn(CF, CQ, Bytes.toBytes("value")));<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>  @Test(expected = DoNotRetryIOException.class)<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  public void testDeleteWithDoNotRetryIOException() throws Exception {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    tableDoNotRetry.delete(new Delete(Bytes.toBytes("row")).addColumn(CF, CQ));<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>  @Test(expected = DoNotRetryIOException.class)<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  public void testAppendWithDoNotRetryIOException() throws Exception {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    tableDoNotRetry<a name="line.105"></a>
+<span class="sourceLineNo">106</span>        .append(new Append(Bytes.toBytes("row")).addColumn(CF, CQ, Bytes.toBytes("value")));<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  }<a name="line.107"></a>
+<span class="sourceLineNo">108</span><a name="line.108"></a>
+<span class="sourceLineNo">109</span>  @Test(expected = DoNotRetryIOException.class)<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  public void testIncrementWithDoNotRetryIOException() throws Exception {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    tableDoNotRetry.increment(new Increment(Bytes.toBytes("row")).addColumn(CF, CQ, 1));<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>  @Test(expected = RetriesExhaustedException.class)<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  public void testGetWithIOException() throws Exception {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    tableRetry.get(new Get(Bytes.toBytes("row")).addColumn(CF, CQ));<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>  @Test(expected = RetriesExhaustedException.class)<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  public void testPutWithIOException() throws Exception {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    tableRetry.put(new Put(Bytes.toBytes("row")).addColumn(CF, CQ, Bytes.toBytes("value")));<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>  @Test(expected = RetriesExhaustedException.class)<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  public void testDeleteWithIOException() throws Exception {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    tableRetry.delete(new Delete(Bytes.toBytes("row")).addColumn(CF, CQ));<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>  @Test(expected = RetriesExhaustedException.class)<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  public void testAppendWithIOException() throws Exception {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    tableRetry.append(new Append(Bytes.toBytes("row")).addColumn(CF, CQ, Bytes.toBytes("value")));<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>  @Test(expected = RetriesExhaustedException.class)<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  public void testIncrementWithIOException() throws Exception {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    tableRetry.increment(new Increment(Bytes.toBytes("row")).addColumn(CF, CQ, 1));<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>  public static class ThrowDoNotRetryIOExceptionCoprocessor<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      implements RegionCoprocessor, RegionObserver {<a name="line.140"></a>
+<span class="sourceLineNo">141</span><a name="line.141"></a>
+<span class="sourceLineNo">142</span>    public ThrowDoNotRetryIOExceptionCoprocessor() {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    }<a name="line.143"></a>
+<span class="sourceLineNo">144</span><a name="line.144"></a>
+<span class="sourceLineNo">145</span>    @Override<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    public Optional&lt;RegionObserver&gt; getRegionObserver() {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      return Optional.of(this);<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>    @Override<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    public void preGetOp(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, final Get get,<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        final List&lt;Cell&gt; results) throws IOException {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      throw new DoNotRetryIOException("Call failed and don't retry");<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 void prePut(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, final Put put,<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        final WALEdit edit, final Durability durability) throws IOException {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      throw new DoNotRetryIOException("Call failed and don't retry");<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 void preDelete(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        final Delete delete, final WALEdit edit, final Durability durability) throws IOException {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      throw new DoNotRetryIOException("Call failed and don't retry");<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>    @Override<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    public Result preIncrement(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        final Increment increment) throws IOException {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      throw new DoNotRetryIOException("Call failed and don't retry");<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>    @Override<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    public Result preAppend(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        final Append append) throws IOException {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      throw new DoNotRetryIOException("Call failed and don't retry");<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  }<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  public static class ThrowIOExceptionCoprocessor<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      implements RegionCoprocessor, RegionObserver {<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>    public ThrowIOExceptionCoprocessor() {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
+<span class="sourceLineNo">186</span><a name="line.186"></a>
+<span class="sourceLineNo">187</span>    @Override<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    public Optional&lt;RegionObserver&gt; getRegionObserver() {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      return Optional.of(this);<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>    @Override<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    public void preGetOp(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, final Get get,<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        final List&lt;Cell&gt; results) throws IOException {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      throw new IOException("Call failed and retry");<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>    @Override<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    public void prePut(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, final Put put,<a name="line.199"></a>
+<span class="sourceLineNo">200</span>        final WALEdit edit, final Durability durability) throws IOException {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      throw new IOException("Call failed and retry");<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>    @Override<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    public void preDelete(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        final Delete delete, final WALEdit edit, final Durability durability) throws IOException {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      throw new IOException("Call failed and retry");<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>    @Override<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    public Result preIncrement(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.211"></a>
+<span class="sourceLineNo">212</span>        final Increment increment) throws IOException {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      throw new IOException("Call failed and retry");<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>    @Override<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    public Result preAppend(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        final Append append) throws IOException {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      throw new IOException("Call failed and retry");<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>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


[30/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 fc0e360..39c0719 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.6321">HRegion.RegionScannerImpl</a>
+<pre>class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.6337">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.6324">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.6340">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.6327">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.6343">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.6331">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.6347">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.6332">filterClosed</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6348">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.6334">stopRow</a></pre>
+<pre>protected final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6350">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.6335">includeStopRow</a></pre>
+<pre>protected final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6351">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.6336">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.6352">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.6337">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.6353">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.6339">readPt</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6355">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.6340">maxResultSize</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6356">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.6341">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.6357">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.6342">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.6358">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.6349">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.6365">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.6354">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.6370">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.6345">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.6361">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.6392">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.6408">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.6424">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.6440">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.6433">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.6449">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.6454">getMaxResultSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6470">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.6459">getMvccReadPoint</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6475">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.6464">getBatch</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6480">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.6473">resetFilters</a>()
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6489">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.6480">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.6496">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.6487">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.6503">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.6503">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.6519">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.6509">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.6525">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.6546">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.6562">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.6570">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.6586">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.6611">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.6627">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.6619">isFilterDone</a>()
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6635">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.6623">isFilterDoneInternal</a>()
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6639">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.6627">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.6643">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.6850">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.6866">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.6858">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.6874">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.6869">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.6885">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.6896">filterRow</a>()
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6912">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.6903">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.6919">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.6907">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.6923">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.6922">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.6938">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.6934">close</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6950">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.6948">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.6964">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.6953">reseek</a>(byte[]&nbsp;row)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6969">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.6973">shipped</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6989">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.6983">run</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6999">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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 412ff1c..f81b3b3 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.5929">HRegion.RowLockContext</a>
+<pre>class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5945">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.5930">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.5946">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.5931">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.5947">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.5932">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.5948">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.5933">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.5949">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.5934">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.5950">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.5935">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.5951">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.5937">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.5953">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.5941">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.5957">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.5945">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.5961">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.5950">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.5966">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.5961">cleanUp</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5977">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.5974">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.5990">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.5979">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.5995">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/fa850293/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 b9209ba..bde2a90 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.5992">HRegion.RowLockImpl</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.6008">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.5993">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.6009">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.5994">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.6010">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.5996">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.6012">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.6001">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.6017">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.6006">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.6022">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.6011">release</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.6027">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.6017">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.6033">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>


[03/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/testdevapidocs/org/apache/hadoop/hbase/client/package-summary.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/client/package-summary.html
index 50eeaee..ebcc904 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/package-summary.html
@@ -1002,378 +1002,382 @@
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestLeaseRenewal.html" title="class in org.apache.hadoop.hbase.client">TestLeaseRenewal</a></td>
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestLeaseRenewal.html" title="class in org.apache.hadoop.hbase.client">TestLeaseRenewal</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestLimitedScanWithFilter.html" title="class in org.apache.hadoop.hbase.client">TestLimitedScanWithFilter</a></td>
 <td class="colLast">
 <div class="block">With filter we may stop at a middle of row and think that we still have more cells for the
  current row but actually all the remaining cells will be filtered out by the filter.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMalformedCellFromClient.html" title="class in org.apache.hadoop.hbase.client">TestMalformedCellFromClient</a></td>
 <td class="colLast">
 <div class="block">The purpose of this test is to ensure whether rs deals with the malformed cells correctly.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetaCache.html" title="class in org.apache.hadoop.hbase.client">TestMetaCache</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetaCache.CallQueueTooBigExceptionInjector.html" title="class in org.apache.hadoop.hbase.client">TestMetaCache.CallQueueTooBigExceptionInjector</a></td>
 <td class="colLast">
 <div class="block">Throws CallQueueTooBigException for all gets.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetaCache.ExceptionInjector.html" title="class in org.apache.hadoop.hbase.client">TestMetaCache.ExceptionInjector</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetaCache.FakeRSRpcServices.html" title="class in org.apache.hadoop.hbase.client">TestMetaCache.FakeRSRpcServices</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetaCache.RegionServerWithFakeRpcServices.html" title="class in org.apache.hadoop.hbase.client">TestMetaCache.RegionServerWithFakeRpcServices</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetaCache.RoundRobinExceptionInjector.html" title="class in org.apache.hadoop.hbase.client">TestMetaCache.RoundRobinExceptionInjector</a></td>
 <td class="colLast">
 <div class="block">Rotates through the possible cache clearing and non-cache clearing exceptions
  for requests.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetaWithReplicas.html" title="class in org.apache.hadoop.hbase.client">TestMetaWithReplicas</a></td>
 <td class="colLast">
 <div class="block">Tests the scenarios where replicas are enabled for the meta table</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetricsConnection.html" title="class in org.apache.hadoop.hbase.client">TestMetricsConnection</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobCloneSnapshotFromClientAfterSplittingRegion.html" title="class in org.apache.hadoop.hbase.client">TestMobCloneSnapshotFromClientAfterSplittingRegion</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobCloneSnapshotFromClientCloneLinksAfterDelete.html" title="class in org.apache.hadoop.hbase.client">TestMobCloneSnapshotFromClientCloneLinksAfterDelete</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobCloneSnapshotFromClientCloneLinksAfterDelete.DelayFlushCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestMobCloneSnapshotFromClientCloneLinksAfterDelete.DelayFlushCoprocessor</a></td>
 <td class="colLast">
 <div class="block">This coprocessor is used to delay the flush.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobCloneSnapshotFromClientError.html" title="class in org.apache.hadoop.hbase.client">TestMobCloneSnapshotFromClientError</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobCloneSnapshotFromClientNormal.html" title="class in org.apache.hadoop.hbase.client">TestMobCloneSnapshotFromClientNormal</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientAfterSplittingRegions.html" title="class in org.apache.hadoop.hbase.client">TestMobRestoreSnapshotFromClientAfterSplittingRegions</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientAfterTruncate.html" title="class in org.apache.hadoop.hbase.client">TestMobRestoreSnapshotFromClientAfterTruncate</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientClone.html" title="class in org.apache.hadoop.hbase.client">TestMobRestoreSnapshotFromClientClone</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientGetCompactionState.html" title="class in org.apache.hadoop.hbase.client">TestMobRestoreSnapshotFromClientGetCompactionState</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientSchemaChange.html" title="class in org.apache.hadoop.hbase.client">TestMobRestoreSnapshotFromClientSchemaChange</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientSimple.html" title="class in org.apache.hadoop.hbase.client">TestMobRestoreSnapshotFromClientSimple</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobSnapshotCloneIndependence.html" title="class in org.apache.hadoop.hbase.client">TestMobSnapshotCloneIndependence</a></td>
 <td class="colLast">
 <div class="block">Test to verify that the cloned table is independent of the table from which it was cloned</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobSnapshotFromClient.html" title="class in org.apache.hadoop.hbase.client">TestMobSnapshotFromClient</a></td>
 <td class="colLast">
 <div class="block">Test create/using/deleting snapshots from the client</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.html" title="class in org.apache.hadoop.hbase.client">TestMultiParallel</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html" title="class in org.apache.hadoop.hbase.client">TestMultiParallel.MyMasterObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultipleTimestamps.html" title="class in org.apache.hadoop.hbase.client">TestMultipleTimestamps</a></td>
 <td class="colLast">
 <div class="block">Run tests related to <code>TimestampsFilter</code> using HBase client APIs.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiRespectsLimits.html" title="class in org.apache.hadoop.hbase.client">TestMultiRespectsLimits</a></td>
 <td class="colLast">
 <div class="block">This test sets the multi size WAAAAAY low and then checks to make sure that gets will still make
  progress.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMutation.html" title="class in org.apache.hadoop.hbase.client">TestMutation</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMvccConsistentScanner.html" title="class in org.apache.hadoop.hbase.client">TestMvccConsistentScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestOperation.html" title="class in org.apache.hadoop.hbase.client">TestOperation</a></td>
 <td class="colLast">
 <div class="block">Run tests that use the functionality of the Operation superclass for
  Puts, Gets, Deletes, Scans, and MultiPuts.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestProcedureFuture.html" title="class in org.apache.hadoop.hbase.client">TestProcedureFuture</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestProcedureFuture.TestFuture.html" title="class in org.apache.hadoop.hbase.client">TestProcedureFuture.TestFuture</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestPutDeleteEtcCellIteration.html" title="class in org.apache.hadoop.hbase.client">TestPutDeleteEtcCellIteration</a></td>
 <td class="colLast">
 <div class="block">Test that I can Iterate Client Actions that hold Cells (Get does not have Cells).</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestPutDotHas.html" title="class in org.apache.hadoop.hbase.client">TestPutDotHas</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestPutWithDelete.html" title="class in org.apache.hadoop.hbase.client">TestPutWithDelete</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestPutWriteToWal.html" title="class in org.apache.hadoop.hbase.client">TestPutWriteToWal</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestQuotasShell.html" title="class in org.apache.hadoop.hbase.client">TestQuotasShell</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncScanCursor.html" title="class in org.apache.hadoop.hbase.client">TestRawAsyncScanCursor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncTableLimitedScanWithFilter.html" title="class in org.apache.hadoop.hbase.client">TestRawAsyncTableLimitedScanWithFilter</a></td>
 <td class="colLast">
 <div class="block">With filter we may stop at a middle of row and think that we still have more cells for the
  current row but actually all the remaining cells will be filtered out by the filter.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncTablePartialScan.html" title="class in org.apache.hadoop.hbase.client">TestRawAsyncTablePartialScan</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncTableScan.html" title="class in org.apache.hadoop.hbase.client">TestRawAsyncTableScan</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRegionInfoDisplay.html" title="class in org.apache.hadoop.hbase.client">TestRegionInfoDisplay</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRegionLocationCaching.html" title="class in org.apache.hadoop.hbase.client">TestRegionLocationCaching</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicasClient.html" title="class in org.apache.hadoop.hbase.client">TestReplicasClient</a></td>
 <td class="colLast">
 <div class="block">Tests for region replicas.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicasClient.SlowMeCopro.html" title="class in org.apache.hadoop.hbase.client">TestReplicasClient.SlowMeCopro</a></td>
 <td class="colLast">
 <div class="block">This copro is used to synchronize the tests.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicationShell.html" title="class in org.apache.hadoop.hbase.client">TestReplicationShell</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicaWithCluster.html" title="class in org.apache.hadoop.hbase.client">TestReplicaWithCluster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicaWithCluster.RegionServerHostingPrimayMetaRegionSlowOrStopCopro.html" title="class in org.apache.hadoop.hbase.client">TestReplicaWithCluster.RegionServerHostingPrimayMetaRegionSlowOrStopCopro</a></td>
 <td class="colLast">
 <div class="block">This copro is used to slow down the primary meta region scan a bit</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicaWithCluster.RegionServerStoppedCopro.html" title="class in org.apache.hadoop.hbase.client">TestReplicaWithCluster.RegionServerStoppedCopro</a></td>
 <td class="colLast">
 <div class="block">This copro is used to simulate region server down exception for Get and Scan</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicaWithCluster.SlowMeCopro.html" title="class in org.apache.hadoop.hbase.client">TestReplicaWithCluster.SlowMeCopro</a></td>
 <td class="colLast">
 <div class="block">This copro is used to synchronize the tests.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientAfterSplittingRegions.html" title="class in org.apache.hadoop.hbase.client">TestRestoreSnapshotFromClientAfterSplittingRegions</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientAfterTruncate.html" title="class in org.apache.hadoop.hbase.client">TestRestoreSnapshotFromClientAfterTruncate</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientClone.html" title="class in org.apache.hadoop.hbase.client">TestRestoreSnapshotFromClientClone</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientGetCompactionState.html" title="class in org.apache.hadoop.hbase.client">TestRestoreSnapshotFromClientGetCompactionState</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientSchemaChange.html" title="class in org.apache.hadoop.hbase.client">TestRestoreSnapshotFromClientSchemaChange</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientSimple.html" title="class in org.apache.hadoop.hbase.client">TestRestoreSnapshotFromClientSimple</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientWithRegionReplicas.html" title="class in org.apache.hadoop.hbase.client">TestRestoreSnapshotFromClientWithRegionReplicas</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestResult.html" title="class in org.apache.hadoop.hbase.client">TestResult</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultFromCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestResultFromCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultFromCoprocessor.MyObserver.html" title="class in org.apache.hadoop.hbase.client">TestResultFromCoprocessor.MyObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultScannerCursor.html" title="class in org.apache.hadoop.hbase.client">TestResultScannerCursor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultSizeEstimation.html" title="class in org.apache.hadoop.hbase.client">TestResultSizeEstimation</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRetriesExhaustedWithDetailsException.html" title="class in org.apache.hadoop.hbase.client">TestRetriesExhaustedWithDetailsException</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestReversedScannerCallable.html" title="class in org.apache.hadoop.hbase.client">TestReversedScannerCallable</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRowComparator.html" title="class in org.apache.hadoop.hbase.client">TestRowComparator</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRpcControllerFactory.html" title="class in org.apache.hadoop.hbase.client">TestRpcControllerFactory</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRpcControllerFactory.CountingRpcController.html" title="class in org.apache.hadoop.hbase.client">TestRpcControllerFactory.CountingRpcController</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRpcControllerFactory.StaticRpcControllerFactory.html" title="class in org.apache.hadoop.hbase.client">TestRpcControllerFactory.StaticRpcControllerFactory</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestScan.html" title="class in org.apache.hadoop.hbase.client">TestScan</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestScannersFromClientSide</a></td>
 <td class="colLast">
 <div class="block">A client-side test, mostly testing scanners with various parameters.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide2.html" title="class in org.apache.hadoop.hbase.client">TestScannersFromClientSide2</a></td>
 <td class="colLast">
 <div class="block">Testcase for newly added feature in HBASE-17143, such as startRow and stopRow
  inclusive/exclusive, limit for rows, etc.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannerTimeout.html" title="class in org.apache.hadoop.hbase.client">TestScannerTimeout</a></td>
 <td class="colLast">
 <div class="block">Test various scanner timeout issues.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html" title="class in org.apache.hadoop.hbase.client">TestScanWithoutFetchingData</a></td>
 <td class="colLast">
 <div class="block">Testcase to make sure that we do not close scanners if ScanRequest.numberOfRows is zero.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException</a></td>
 <td class="colLast">
 <div class="block">This class is for testing HBaseConnectionManager ServerBusyException.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.SleepCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException.SleepCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.SleepLongerAtFirstCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException.SleepLongerAtFirstCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.TestGetThread.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException.TestGetThread</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.TestPutThread.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException.TestPutThread</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerLoadDurability.html" title="class in org.apache.hadoop.hbase.client">TestServerLoadDurability</a></td>
 <td class="colLast">
 <div class="block">HBASE-19496 noticed that the RegionLoad/ServerLoad may be corrupted if rpc server
@@ -1381,106 +1385,118 @@
  invoke HMaster to iterate all stored server/region loads.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestShell.html" title="class in org.apache.hadoop.hbase.client">TestShell</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestShellNoCluster.html" title="class in org.apache.hadoop.hbase.client">TestShellNoCluster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestShortCircuitConnection.html" title="class in org.apache.hadoop.hbase.client">TestShortCircuitConnection</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSimpleRequestController.html" title="class in org.apache.hadoop.hbase.client">TestSimpleRequestController</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSizeFailures.html" title="class in org.apache.hadoop.hbase.client">TestSizeFailures</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSmallReversedScanner.html" title="class in org.apache.hadoop.hbase.client">TestSmallReversedScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotCloneIndependence.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotCloneIndependence</a></td>
 <td class="colLast">
 <div class="block">Test to verify that the cloned table is independent of the table from which it was cloned</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotDFSTemporaryDirectory.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotDFSTemporaryDirectory</a></td>
 <td class="colLast">
 <div class="block">This class tests that the use of a temporary snapshot directory supports snapshot functionality
  while the temporary directory is on the same file system as the root directory</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotFromAdmin.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotFromAdmin</a></td>
 <td class="colLast">
 <div class="block">Test snapshot logic from the client</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotFromClient.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotFromClient</a></td>
 <td class="colLast">
 <div class="block">Test create/using/deleting snapshots from the client</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotFromClientWithRegionReplicas.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotFromClientWithRegionReplicas</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotMetadata.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotMetadata</a></td>
 <td class="colLast">
 <div class="block">Test class to verify that metadata is consistent before and after a snapshot attempt.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotTemporaryDirectory.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotTemporaryDirectory</a></td>
 <td class="colLast">
 <div class="block">This class tests that the use of a temporary snapshot directory supports snapshot functionality
  while the temporary directory is on a different file system than the root directory</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotTemporaryDirectoryWithRegionReplicas.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotTemporaryDirectoryWithRegionReplicas</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotWithAcl.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotWithAcl</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotWithAcl.AccessReadAction.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotWithAcl.AccessReadAction</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotWithAcl.AccessWriteAction.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotWithAcl.AccessWriteAction</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSplitOrMergeStatus.html" title="class in org.apache.hadoop.hbase.client">TestSplitOrMergeStatus</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TestTableDescriptorBuilder</a></td>
 <td class="colLast">
 <div class="block">Test setting values in the descriptor</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableDescriptorUtils.html" title="class in org.apache.hadoop.hbase.client">TestTableDescriptorUtils</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableFavoredNodes.html" title="class in org.apache.hadoop.hbase.client">TestTableFavoredNodes</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException.ThrowIOExceptionCoprocessor</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
 <tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableShell.html" title="class in org.apache.hadoop.hbase.client">TestTableShell</a></td>
 <td class="colLast">&nbsp;</td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html
index 27a7a52..5001043 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -509,6 +509,7 @@
 </li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestInterfaceAlign.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestInterfaceAlign</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestIntraRowPagination.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestIntraRowPagination</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestInvalidMutationDurabilityException</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestLeaseRenewal.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestLeaseRenewal</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestLimitedScanWithFilter.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestLimitedScanWithFilter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestMalformedCellFromClient.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestMalformedCellFromClient</span></a></li>
@@ -591,6 +592,9 @@
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestTableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestTableDescriptorBuilder</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestTableDescriptorUtils.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestTableDescriptorUtils</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestTableFavoredNodes.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestTableFavoredNodes</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestTableOperationException</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor</span></a> (implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.hadoop.hbase.coprocessor.RegionObserver)</li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestTableOperationException.ThrowIOExceptionCoprocessor</span></a> (implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.hadoop.hbase.coprocessor.RegionObserver)</li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestTableSnapshotScanner.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestTableSnapshotScanner</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestTimestampsFilter.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestTimestampsFilter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestUpdateConfiguration.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestUpdateConfiguration</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 6ffd895..b99e6b6 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, 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, getWALRegionDir, getWriteRequestsCount, hashCode, hasReferences, heapSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateHStore, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClose
 d, 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>
+<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, 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, getMaxFlushedSeqId, getMaxS
 toreSeqId, 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, getWALRegionDir, getWriteRequestsCount, hashCode, hasReferences, heapSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateHStore, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, i
 sLoadingCfsOnDemandDefault, 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/fa850293/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 3d0444d..b28b663 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, 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, getWALRegionDir, 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>
+<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, 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, getLockedRows, getMaxFlu
 shedSeqId, 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, getWALRegionDir, getWriteRequestsCount, hashCode, hasReferences, heapSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateHStore, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClo
 sing, 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/fa850293/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 efed61a..0e04719 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -579,15 +579,15 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.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/ClusterManager.ServiceType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterManager.ServiceType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.RoleCommand</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/IntegrationTestDDLMasterFailover.ACTION.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/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/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/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/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.RoleCommand</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ACTION.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 632b004..da951b6 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, decorateRegionConfiguration, 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, getDataIn
 MemoryWithoutWAL, 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, getRegionWALFileSystem, getReplicationScope, getRowLock, getRowLock, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWalFileSystem, getWALRegionDir, getWrit
 eRequestsCount, 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, replayWALFlushCommitM
 arker, replayWALFlushMarker, replayWALFlushStartMarker, replayWALRegionEventMarker, 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, writeRegionOpenMarker</code></li>
+<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamily, checkReadOnly, checkReadsEnabled, checkResources, checkRow, checkSplit, checkTimestamps, clearSplit, close, close, closeRegionOperation, closeRegionOperation, compact, compact, compact, compactStore, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decorateRegionConfiguration, 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, getDataInMemoryWithoutWA
 L, 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, getRegionWALFileSystem, getReplicationScope, getRowLock, getRowLock, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWalFileSystem, getWALRegionDir, 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, replayWA
 LFlushMarker, replayWALFlushStartMarker, replayWALRegionEventMarker, 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, 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/fa850293/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 25a9827..de9d5ed 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.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, 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, decorateRegionConfiguration, 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, getDataIn
 MemoryWithoutWAL, 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, getRegionWALFileSystem, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWalFileSystem, getW
 ALRegionDir, 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, replayWALFlushCommit
 Marker, replayWALFlushMarker, replayWALFlushStartMarker, replayWALRegionEventMarker, 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, writeRegionOpenMarker</code></li>
+<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamily, checkReadOnly, checkReadsEnabled, checkResources, checkRow, checkSplit, checkTimestamps, clearSplit, close, close, closeRegionOperation, closeRegionOperation, compact, compact, compact, compactStore, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decorateRegionConfiguration, 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, getDataInMemoryWithoutWA
 L, 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, getRegionWALFileSystem, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWalFileSystem, getWALRegionDir, ge
 tWriteRequestsCount, 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, replayW
 ALFlushMarker, replayWALFlushStartMarker, replayWALRegionEventMarker, 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, 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/fa850293/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 26018e6..30cad64 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.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, 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, decorateRegionConfiguration, 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, getDataIn
 MemoryWithoutWAL, 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, getRegionWALFileSystem, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWalFileSystem, getWALRegionDir, getWri
 teRequestsCount, 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, replayWALFlushCommit
 Marker, replayWALFlushMarker, replayWALFlushStartMarker, replayWALRegionEventMarker, 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, writeRegionOpenMarker</code></li>
+<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamily, checkReadOnly, checkReadsEnabled, checkResources, checkRow, checkSplit, checkTimestamps, clearSplit, close, close, closeRegionOperation, closeRegionOperation, compact, compact, compact, compactStore, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decorateRegionConfiguration, 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, getDataInMemoryWithoutWA
 L, 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, getRegionWALFileSystem, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWalFileSystem, getWALRegionDir, 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, replayW
 ALFlushMarker, replayWALFlushStartMarker, replayWALRegionEventMarker, 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, writeRegionOpenMarker</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">


[29/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 31eab60..d992e5c 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":9,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":9,"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":9,"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":9,
 "i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":41,"i117":41,"i118":10,"i119":10,"i120":10,"i121":10,"i122":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":10,"i135":10,"i136":10,"i137":10,"i138":10,"i139":10,"i140":10,"i141":10,"i142":10,"i143":10,"i144":10,"i145":9,"i146":10,"i147":10,"i148":10,"i149":10,"i150":10,"i151":10,"i152":10,"i153":10,"i154":42,"i155":10,"i156":10,"i157":10,"i158":10,"i159":10,"i160":10,"i161":10,"i162":10,"i163":10,"i164":10,"i165":10,"i166":10,"i167":10,"i168":10,"i169":10,"i170":10,"i171":10,"i172":10,"i173":10,"i174":10,"i175":10,"i176":9,"i177":10,"i178":10,"i179":10,"i180":10,"i181":10,"i182":10,"i183":10,"i184":10,"i185":9,"i186":10,"i187":10,"i188":9,"i189":9,"i190":9,"i191":9,"i192":9,"i193":9,"i194":9,"i195":9,"i196":9,"i197":9,"i198":10,"i199":10,"i200":10,"i201":10,"i202":10,"i203":10,"i204":10,"i205":10,"i206":10,"i207":9,"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":10,"i235":10,"i236":10,"i237":10,"i238":10,"i239":9,"i240":9,"i241":10,"i242":10,"i243":10,"i244":10,"i245":10,"i246":10,"i247":10,"i248":10,"i249":10,"i250":10,"i251":10,"i252":10,"i253":9,"i254":10,"i255":10,"i256":10,"i257":10,"i258":10,"i259":10,"i260":10,"i261":9,"i262":10,"i263":10,"i264":10,"i265":10,"i266":10,"i267":9,"i268":10,"i269":10,"i270":10,"i271":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":10,"i42":9,"i43":9,"i44":9,"i45":9,"i46":9,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":9,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":9,"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":9,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":41,"i118":41,"i119":10,"i120":10,"i121":10,"i122":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":10,"i135":10,"i136":10,"i137":10,"i138":10,"i139":10,"i140":10,"i141":10,"i142":10,"i143":10,"i144":10,"i145":10,"i146":9,"i147":10,"i148":10,"i149":10,"i150":10,"i151":10,"i152":10,"i153":10,"i154":10,"i155":42,"i156":10,"i157":10,"i158":10,"i159":10,"i160":10,"i161":10,"i162":10,"i163":10,"i164":10,"i165":10,"i166":10,"i167":10,"i168":10,"i169":10,"i170":10,"i171":10,"i172":10,"i173":10,"i174":10,"i175":10,"i176":10,"i177":9,"i178":10,"i179":10,"i180":10,"i181":10,"i182":10,"i183":10,"i184":10,"i185":10,"i186":9,"i187":10,"i188":10,"i189":9,"i190":9,"i191":9,"i192":9,"i193":9,"i194":9,"i195":9,"i196":9,"i197":9,"i198":9,"i199":10,"i200":10,"i201":10,"i202":10,"i203":10,"i204":10,"i205":10,"i206":10,"i207":10,"i208":9,"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":10,"i235":10,"i236":10,"i237":10,"i238":10,"i239":10,"i240":9,"i241":9,"i242":10,"i243":10,"i244":10,"i245":10,"i246":10,"i247":10,"i248":10,"i249":10,"i250":10,"i251":10,"i252":10,"i253":10,"i254":9,"i255":10,"i256":10,"i257":10,"i258":10,"i259":10,"i260":10,"i261":10,"i262":9,"i263":10,"i264":10,"i265":10,"i266":10,"i267":10,"i268":9,"i269":10,"i270":10,"i271":10,"i272":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";
@@ -831,10 +831,9 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#checkEncryption--">checkEncryption</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i19" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#checkFamilies-java.util.Collection-">checkFamilies</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;byte[]&gt;&nbsp;families)</code>
-<div class="block">Check the collection of families for validity.</div>
-</td>
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#checkFamilies-java.util.Collection-org.apache.hadoop.hbase.client.Durability-">checkFamilies</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;byte[]&gt;&nbsp;families,
+             <a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;durability)</code>&nbsp;</td>
 </tr>
 <tr id="i20" class="altColor">
 <td class="colFirst"><code>(package private) void</code></td>
@@ -842,40 +841,45 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 </tr>
 <tr id="i21" 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#checkFamily-byte:A-org.apache.hadoop.hbase.client.Durability-">checkFamily</a></span>(byte[]&nbsp;family,
+           <a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;durability)</code>&nbsp;</td>
+</tr>
+<tr id="i22" 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#checkMutationType-org.apache.hadoop.hbase.client.Mutation-byte:A-">checkMutationType</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;mutation,
                  byte[]&nbsp;row)</code>&nbsp;</td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i23" 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#checkNegativeMemStoreDataSize-long-long-">checkNegativeMemStoreDataSize</a></span>(long&nbsp;memStoreDataSize,
                              long&nbsp;delta)</code>&nbsp;</td>
 </tr>
-<tr id="i23" class="rowColor">
+<tr id="i24" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#checkReadOnly--">checkReadOnly</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i24" class="altColor">
+<tr id="i25" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#checkReadsEnabled--">checkReadsEnabled</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i25" class="rowColor">
+<tr id="i26" 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#checkResources--">checkResources</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i26" class="altColor">
+<tr id="i27" 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#checkRow-byte:A-java.lang.String-">checkRow</a></span>(byte[]&nbsp;row,
         <a href="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;op)</code>
 <div class="block">Make sure this is a valid row for the HRegion</div>
 </td>
 </tr>
-<tr id="i27" class="rowColor">
+<tr id="i28" class="altColor">
 <td class="colFirst"><code>byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#checkSplit--">checkSplit</a></span>()</code>
 <div class="block">Return the splitpoint.</div>
 </td>
 </tr>
-<tr id="i28" class="altColor">
+<tr id="i29" 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#checkTargetRegion-byte:A-java.lang.String-java.lang.Object-">checkTargetRegion</a></span>(byte[]&nbsp;encodedRegionName,
                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;exceptionMsg,
@@ -884,54 +888,54 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
  the regionName is the primary region to our corresponding range for the secondary replica.</div>
 </td>
 </tr>
-<tr id="i29" class="rowColor">
+<tr id="i30" 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#checkTimestamps-java.util.Map-long-">checkTimestamps</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;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,
                long&nbsp;now)</code>
 <div class="block">Check the collection of families for valid timestamps</div>
 </td>
 </tr>
-<tr id="i30" class="altColor">
+<tr id="i31" 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#clearSplit--">clearSplit</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i31" class="rowColor">
+<tr id="i32" 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;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/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#close--">close</a></span>()</code>
 <div class="block">Close down this HRegion.</div>
 </td>
 </tr>
-<tr id="i32" class="altColor">
+<tr id="i33" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/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/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#close-boolean-">close</a></span>(boolean&nbsp;abort)</code>
 <div class="block">Close down this HRegion.</div>
 </td>
 </tr>
-<tr id="i33" class="rowColor">
+<tr id="i34" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#closeBulkRegionOperation--">closeBulkRegionOperation</a></span>()</code>
 <div class="block">Closes the lock.</div>
 </td>
 </tr>
-<tr id="i34" class="altColor">
+<tr id="i35" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#closeRegionOperation--">closeRegionOperation</a></span>()</code>
 <div class="block">Closes the region operation lock.</div>
 </td>
 </tr>
-<tr id="i35" class="rowColor">
+<tr id="i36" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#closeRegionOperation-org.apache.hadoop.hbase.regionserver.Region.Operation-">closeRegionOperation</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver">Region.Operation</a>&nbsp;operation)</code>
 <div class="block">Closes the region operation lock.</div>
 </td>
 </tr>
-<tr id="i36" class="altColor">
+<tr id="i37" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#compact-boolean-">compact</a></span>(boolean&nbsp;majorCompaction)</code>
 <div class="block">Synchronously compact all stores in the region.</div>
 </td>
 </tr>
-<tr id="i37" class="rowColor">
+<tr id="i38" 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#compact-org.apache.hadoop.hbase.regionserver.compactions.CompactionContext-org.apache.hadoop.hbase.regionserver.HStore-org.apache.hadoop.hbase.regionserver.throttle.ThroughputController-">compact</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&nbsp;compaction,
        <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
@@ -940,7 +944,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
  HStores if necessary.</div>
 </td>
 </tr>
-<tr id="i38" class="altColor">
+<tr id="i39" 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#compact-org.apache.hadoop.hbase.regionserver.compactions.CompactionContext-org.apache.hadoop.hbase.regionserver.HStore-org.apache.hadoop.hbase.regionserver.throttle.ThroughputController-org.apache.hadoop.hbase.security.User-">compact</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&nbsp;compaction,
        <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
@@ -949,20 +953,20 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <div class="block">We are trying to remove / relax the region read lock for compaction.</div>
 </td>
 </tr>
-<tr id="i39" class="rowColor">
+<tr id="i40" 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#compactStore-byte:A-org.apache.hadoop.hbase.regionserver.throttle.ThroughputController-">compactStore</a></span>(byte[]&nbsp;family,
             <a href="../../../../../org/apache/hadoop/hbase/regionserver/throttle/ThroughputController.html" title="interface in org.apache.hadoop.hbase.regionserver.throttle">ThroughputController</a>&nbsp;throughputController)</code>
 <div class="block">This is a helper function that compact the given store.</div>
 </td>
 </tr>
-<tr id="i40" class="altColor">
+<tr id="i41" 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#compactStores--">compactStores</a></span>()</code>
 <div class="block">This is a helper function that compact all the stores synchronously.</div>
 </td>
 </tr>
-<tr id="i41" class="rowColor">
+<tr id="i42" class="altColor">
 <td class="colFirst"><code>static <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#computeHDFSBlocksDistribution-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.RegionInfo-">computeHDFSBlocksDistribution</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                              <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;tableDescriptor,
@@ -970,7 +974,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <div class="block">This is a helper function to compute HDFS block distribution on demand</div>
 </td>
 </tr>
-<tr id="i42" class="altColor">
+<tr id="i43" class="rowColor">
 <td class="colFirst"><code>static <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#computeHDFSBlocksDistribution-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.fs.Path-">computeHDFSBlocksDistribution</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                              <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;tableDescriptor,
@@ -979,7 +983,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <div class="block">This is a helper function to compute HDFS block distribution on demand</div>
 </td>
 </tr>
-<tr id="i43" class="rowColor">
+<tr id="i44" 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#createHRegion-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.fs.Path-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.wal.WAL-">createHRegion</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;info,
              org.apache.hadoop.fs.Path&nbsp;rootDir,
@@ -987,7 +991,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
              <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;hTableDescriptor,
              <a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal)</code>&nbsp;</td>
 </tr>
-<tr id="i44" class="altColor">
+<tr id="i45" 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#createHRegion-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.fs.Path-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.wal.WAL-boolean-">createHRegion</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;info,
              org.apache.hadoop.fs.Path&nbsp;rootDir,
@@ -998,57 +1002,57 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <div class="block">Convenience method creating new HRegions.</div>
 </td>
 </tr>
-<tr id="i45" class="rowColor">
+<tr id="i46" class="altColor">
 <td class="colFirst"><code>(package private) static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#decorateRegionConfiguration-org.apache.hadoop.conf.Configuration-">decorateRegionConfiguration</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
 <div class="block">This method modifies the region's configuration in order to inject replication-related
  features</div>
 </td>
 </tr>
-<tr id="i46" class="altColor">
+<tr id="i47" 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#decrementCompactionsQueuedCount--">decrementCompactionsQueuedCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i47" class="rowColor">
+<tr id="i48" 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#decrMemStoreSize-long-long-long-">decrMemStoreSize</a></span>(long&nbsp;dataSizeDelta,
                 long&nbsp;heapSizeDelta,
                 long&nbsp;offHeapSizeDelta)</code>&nbsp;</td>
 </tr>
-<tr id="i48" class="altColor">
+<tr id="i49" 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#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 id="i49" class="rowColor">
+<tr id="i50" 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#delete-org.apache.hadoop.hbase.client.Delete-">delete</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">Deletes the specified cells/row.</div>
 </td>
 </tr>
-<tr id="i50" class="altColor">
+<tr id="i51" 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#delete-java.util.NavigableMap-org.apache.hadoop.hbase.client.Durability-">delete</a></span>(<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;<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/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;durability)</code>
 <div class="block">This is used only by unit tests.</div>
 </td>
 </tr>
-<tr id="i51" class="rowColor">
+<tr id="i52" 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#deregisterChildren-org.apache.hadoop.hbase.conf.ConfigurationManager-">deregisterChildren</a></span>(<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html" title="class in org.apache.hadoop.hbase.conf">ConfigurationManager</a>&nbsp;manager)</code>
 <div class="block">Needs to be called to deregister the children from the manager.</div>
 </td>
 </tr>
-<tr id="i52" class="altColor">
+<tr id="i53" 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#doAbortFlushToWAL-org.apache.hadoop.hbase.wal.WAL-long-java.util.Map-">doAbortFlushToWAL</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;flushOpSeqId,
                  <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;org.apache.hadoop.fs.Path&gt;&gt;&nbsp;committedFiles)</code>&nbsp;</td>
 </tr>
-<tr id="i53" class="rowColor">
+<tr id="i54" 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#doBatchMutate-org.apache.hadoop.hbase.client.Mutation-">doBatchMutate</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;mutation)</code>&nbsp;</td>
 </tr>
-<tr id="i54" class="altColor">
+<tr id="i55" 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#doCheckAndRowMutate-byte:A-byte:A-byte:A-org.apache.hadoop.hbase.CompareOperator-org.apache.hadoop.hbase.filter.ByteArrayComparable-org.apache.hadoop.hbase.io.TimeRange-org.apache.hadoop.hbase.client.RowMutations-org.apache.hadoop.hbase.client.Mutation-">doCheckAndRowMutate</a></span>(byte[]&nbsp;row,
                    byte[]&nbsp;family,
@@ -1061,19 +1065,19 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <div class="block">checkAndMutate and checkAndRowMutate are 90% the same.</div>
 </td>
 </tr>
-<tr id="i55" class="rowColor">
+<tr id="i56" class="altColor">
 <td class="colFirst"><code>private <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/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#doClose-boolean-org.apache.hadoop.hbase.monitoring.MonitoredTask-">doClose</a></span>(boolean&nbsp;abort,
        <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="i56" class="altColor">
+<tr id="i57" class="rowColor">
 <td class="colFirst"><code>private <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#doCoprocessorPreCall-org.apache.hadoop.hbase.regionserver.Region.Operation-org.apache.hadoop.hbase.client.Mutation-">doCoprocessorPreCall</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver">Region.Operation</a>&nbsp;op,
                     <a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;mutation)</code>
 <div class="block">Do coprocessor pre-increment or pre-append call.</div>
 </td>
 </tr>
-<tr id="i57" class="rowColor">
+<tr id="i58" class="altColor">
 <td class="colFirst"><code>private <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#doDelta-org.apache.hadoop.hbase.regionserver.Region.Operation-org.apache.hadoop.hbase.client.Mutation-long-long-boolean-">doDelta</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver">Region.Operation</a>&nbsp;op,
        <a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;mutation,
@@ -1083,19 +1087,19 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <div class="block">Add "deltas" to Cells.</div>
 </td>
 </tr>
-<tr id="i58" class="altColor">
+<tr id="i59" class="rowColor">
 <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#doDropStoreMemStoreContentsForSeqId-org.apache.hadoop.hbase.regionserver.HStore-long-">doDropStoreMemStoreContentsForSeqId</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;s,
                                    long&nbsp;currentSeqId)</code>&nbsp;</td>
 </tr>
-<tr id="i59" class="rowColor">
+<tr id="i60" 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#doMiniBatchMutate-org.apache.hadoop.hbase.regionserver.HRegion.BatchOperation-">doMiniBatchMutate</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;?&gt;&nbsp;batchOp)</code>
 <div class="block">Called to do a piece of the batch that came in to <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#batchMutate-org.apache.hadoop.hbase.client.Mutation:A-long-long-"><code>batchMutate(Mutation[], long, long)</code></a>
  In here we also handle replay of edits on region recover.</div>
 </td>
 </tr>
-<tr id="i60" class="altColor">
+<tr id="i61" 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#doProcessRowWithTimeout-org.apache.hadoop.hbase.regionserver.RowProcessor-long-org.apache.hadoop.hbase.regionserver.HRegion-java.util.List-org.apache.hadoop.hbase.wal.WALEdit-long-">doProcessRowWithTimeout</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;now,
@@ -1104,20 +1108,20 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
                        <a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;walEdit,
                        long&nbsp;timeout)</code>&nbsp;</td>
 </tr>
-<tr id="i61" class="rowColor">
+<tr id="i62" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#doRegionCompactionPrep--">doRegionCompactionPrep</a></span>()</code>
 <div class="block">Do preparation for pending compaction.</div>
 </td>
 </tr>
-<tr id="i62" class="altColor">
+<tr id="i63" class="rowColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#doSyncOfUnflushedWALChanges-org.apache.hadoop.hbase.wal.WAL-org.apache.hadoop.hbase.client.RegionInfo-">doSyncOfUnflushedWALChanges</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/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri)</code>
 <div class="block">Sync unflushed WAL changes.</div>
 </td>
 </tr>
-<tr id="i63" class="rowColor">
+<tr id="i64" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#doWALAppend-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-java.util.List-long-long-long-">doWALAppend</a></span>(<a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;walEdit,
            <a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;durability,
@@ -1126,7 +1130,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
            long&nbsp;nonceGroup,
            long&nbsp;nonce)</code>&nbsp;</td>
 </tr>
-<tr id="i64" class="altColor">
+<tr id="i65" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#doWALAppend-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-java.util.List-long-long-long-long-">doWALAppend</a></span>(<a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;walEdit,
            <a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;durability,
@@ -1136,20 +1140,20 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
            long&nbsp;nonce,
            long&nbsp;origLogSeqNum)</code>&nbsp;</td>
 </tr>
-<tr id="i65" class="rowColor">
+<tr id="i66" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#doWALAppend-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-long-long-">doWALAppend</a></span>(<a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;walEdit,
            <a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;durability,
            long&nbsp;nonceGroup,
            long&nbsp;nonce)</code>&nbsp;</td>
 </tr>
-<tr id="i66" class="altColor">
+<tr id="i67" 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="i67" class="rowColor">
+<tr id="i68" 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>
@@ -1157,17 +1161,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="i68" class="altColor">
+<tr id="i69" 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="i69" class="rowColor">
+<tr id="i70" 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="i70" class="altColor">
+<tr id="i71" 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>
@@ -1175,13 +1179,13 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
  the registered protocol handlers.</div>
 </td>
 </tr>
-<tr id="i71" class="rowColor">
+<tr id="i72" 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="i72" class="altColor">
+<tr id="i73" 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,
@@ -1189,31 +1193,31 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <div class="block">Flush the cache.</div>
 </td>
 </tr>
-<tr id="i73" class="rowColor">
+<tr id="i74" 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="i74" class="altColor">
+<tr id="i75" 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="i75" class="rowColor">
+<tr id="i76" 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="i76" class="altColor">
+<tr id="i77" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/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="i77" class="rowColor">
+<tr id="i78" 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,
@@ -1223,172 +1227,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="i78" class="altColor">
+<tr id="i79" 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="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#getBlockedRequestsCount--">getBlockedRequestsCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i80" class="altColor">
+<tr id="i81" 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="i81" class="rowColor">
+<tr id="i82" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getCheckAndMutateChecksFailed--">getCheckAndMutateChecksFailed</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i82" class="altColor">
+<tr id="i83" 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="i83" class="rowColor">
+<tr id="i84" 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="i84" class="altColor">
+<tr id="i85" 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="i85" class="rowColor">
+<tr id="i86" 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="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#getCpRequestsCount--">getCpRequestsCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i87" class="rowColor">
+<tr id="i88" 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="i88" class="altColor">
+<tr id="i89" 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="i89" class="rowColor">
+<tr id="i90" 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="i90" class="altColor">
+<tr id="i91" 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="i91" class="rowColor">
+<tr id="i92" 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="i92" class="altColor">
+<tr id="i93" 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="i93" class="rowColor">
+<tr id="i94" 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="i94" class="altColor">
+<tr id="i95" 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="i95" class="rowColor">
+<tr id="i96" 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="i96" class="altColor">
+<tr id="i97" 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="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#getMaxFlushedSeqId--">getMaxFlushedSeqId</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i98" class="altColor">
+<tr id="i99" 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="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#getMemStoreDataSize--">getMemStoreDataSize</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#getMemStoreFlushSize--">getMemStoreFlushSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i101" class="rowColor">
+<tr id="i102" 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="i102" class="altColor">
+<tr id="i103" 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="i103" class="rowColor">
+<tr id="i104" 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="i104" class="altColor">
+<tr id="i105" 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="i105" class="rowColor">
+<tr id="i106" 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="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#getNumMutationsWithoutWAL--">getNumMutationsWithoutWAL</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i107" class="rowColor">
+<tr id="i108" 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="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#getOldestSeqIdOfStore-byte:A-">getOldestSeqIdOfStore</a></span>(byte[]&nbsp;familyName)</code>&nbsp;</td>
 </tr>
-<tr id="i109" class="rowColor">
+<tr id="i110" 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="i110" class="altColor">
+<tr id="i111" 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="i111" class="rowColor">
+<tr id="i112" 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="i112" class="altColor">
+<tr id="i113" 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="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#getReadPoint--">getReadPoint</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i114" class="altColor">
+<tr id="i115" 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="i115" class="rowColor">
+<tr id="i116" 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="i116" class="altColor">
+<tr id="i117" 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>
@@ -1397,7 +1401,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 </div>
 </td>
 </tr>
-<tr id="i117" class="rowColor">
+<tr id="i118" 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>
@@ -1406,57 +1410,57 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 </div>
 </td>
 </tr>
-<tr id="i118" class="altColor">
+<tr id="i119" 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="i119" class="rowColor">
+<tr id="i120" 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="i120" class="altColor">
+<tr id="i121" 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="i121" class="rowColor">
+<tr id="i122" 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="i122" class="altColor">
+<tr id="i123" class="rowColor">
 <td class="colFirst"><code>(package private) <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#getRegionWALFileSystem--">getRegionWALFileSystem</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i123" class="rowColor">
+<tr id="i124" class="altColor">
 <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="i124" class="altColor">
+<tr id="i125" 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-">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="i125" class="rowColor">
+<tr id="i126" 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-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="i126" class="altColor">
+<tr id="i127" class="rowColor">
 <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="i127" class="rowColor">
+<tr id="i128" 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-">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="i128" class="altColor">
+<tr id="i129" 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-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>
@@ -1464,128 +1468,128 @@ 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="i129" class="rowColor">
+<tr id="i130" class="altColor">
 <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="i130" class="altColor">
+<tr id="i131" 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#getSmallestReadPoint--">getSmallestReadPoint</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i131" class="rowColor">
+<tr id="i132" class="altColor">
 <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="i132" class="altColor">
+<tr id="i133" class="rowColor">
 <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="i133" class="rowColor">
+<tr id="i134" class="altColor">
 <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="i134" class="altColor">
+<tr id="i135" 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="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="i135" class="rowColor">
+<tr id="i136" class="altColor">
 <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="i136" class="altColor">
+<tr id="i137" class="rowColor">
 <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="i137" class="rowColor">
+<tr id="i138" class="altColor">
 <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="i138" class="altColor">
+<tr id="i139" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/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="i139" class="rowColor">
+<tr id="i140" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getTableDescriptor--">getTableDescriptor</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i140" class="altColor">
+<tr id="i141" class="rowColor">
 <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="i141" class="rowColor">
+<tr id="i142" class="altColor">
 <td class="colFirst"><code>(package private) org.apache.hadoop.fs.FileSystem</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getWalFileSystem--">getWalFileSystem</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i142" class="altColor">
+<tr id="i143" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#getWALRegionDir--">getWALRegionDir</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i143" class="rowColor">
+<tr id="i144" 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#getWriteRequestsCount--">getWriteRequestsCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i144" class="altColor">
+<tr id="i145" 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#hashCode--">hashCode</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i145" class="rowColor">
+<tr id="i146" 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#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="i146" class="altColor">
+<tr id="i147" 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#hasReferences--">hasReferences</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i147" class="rowColor">
+<tr id="i148" 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#heapSize--">heapSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i148" class="altColor">
+<tr id="i149" 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-long-long-long-">incMemStoreSize</a></span>(long&nbsp;dataSizeDelta,
                long&nbsp;heapSizeDelta,
                long&nbsp;offHeapSizeDelta)</code>&nbsp;</td>
 </tr>
-<tr id="i149" class="rowColor">
+<tr id="i150" 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-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="i150" class="altColor">
+<tr id="i151" 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-">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="i151" class="rowColor">
+<tr id="i152" 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-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="i152" class="altColor">
+<tr id="i153" 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#incrementCompactionsQueuedCount--">incrementCompactionsQueuedCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i153" class="rowColor">
+<tr id="i154" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#incrementFlushesQueuedCount--">incrementFlushesQueuedCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i154" class="altColor">
+<tr id="i155" 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#initialize--">initialize</a></span>()</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -1593,45 +1597,45 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 </div>
 </td>
 </tr>
-<tr id="i155" class="rowColor">
+<tr id="i156" 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/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="i156" class="altColor">
+<tr id="i157" 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#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="i157" class="rowColor">
+<tr id="i158" 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#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="i158" class="altColor">
+<tr id="i159" 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#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="i159" class="rowColor">
+<t

<TRUNCATED>

[09/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 da040ad..d6702a7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.html
@@ -2957,7 +2957,7 @@
 <span class="sourceLineNo">2949</span>        if(family == null) {<a name="line.2949"></a>
 <span class="sourceLineNo">2950</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2950"></a>
 <span class="sourceLineNo">2951</span>        }<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>        checkFamily(family);<a name="line.2952"></a>
+<span class="sourceLineNo">2952</span>        checkFamily(family, delete.getDurability());<a name="line.2952"></a>
 <span class="sourceLineNo">2953</span>      }<a name="line.2953"></a>
 <span class="sourceLineNo">2954</span>    }<a name="line.2954"></a>
 <span class="sourceLineNo">2955</span>  }<a name="line.2955"></a>
@@ -3569,7 +3569,7 @@
 <span class="sourceLineNo">3561</span><a name="line.3561"></a>
 <span class="sourceLineNo">3562</span>    @Override<a name="line.3562"></a>
 <span class="sourceLineNo">3563</span>    public void checkAndPreparePut(Put p) throws IOException {<a name="line.3563"></a>
-<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet());<a name="line.3564"></a>
+<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet(), p.getDurability());<a name="line.3564"></a>
 <span class="sourceLineNo">3565</span>    }<a name="line.3565"></a>
 <span class="sourceLineNo">3566</span><a name="line.3566"></a>
 <span class="sourceLineNo">3567</span>    @Override<a name="line.3567"></a>
@@ -4462,4304 +4462,4307 @@
 <span class="sourceLineNo">4454</span>    store.add(cell, memstoreAccounting);<a name="line.4454"></a>
 <span class="sourceLineNo">4455</span>  }<a name="line.4455"></a>
 <span class="sourceLineNo">4456</span><a name="line.4456"></a>
-<span class="sourceLineNo">4457</span>  /**<a name="line.4457"></a>
-<span class="sourceLineNo">4458</span>   * Check the collection of families for validity.<a name="line.4458"></a>
-<span class="sourceLineNo">4459</span>   * @param families<a name="line.4459"></a>
-<span class="sourceLineNo">4460</span>   * @throws NoSuchColumnFamilyException<a name="line.4460"></a>
-<span class="sourceLineNo">4461</span>   */<a name="line.4461"></a>
-<span class="sourceLineNo">4462</span>  public void checkFamilies(Collection&lt;byte[]&gt; families) throws NoSuchColumnFamilyException {<a name="line.4462"></a>
-<span class="sourceLineNo">4463</span>    for (byte[] family : families) {<a name="line.4463"></a>
-<span class="sourceLineNo">4464</span>      checkFamily(family);<a name="line.4464"></a>
-<span class="sourceLineNo">4465</span>    }<a name="line.4465"></a>
-<span class="sourceLineNo">4466</span>  }<a name="line.4466"></a>
-<span class="sourceLineNo">4467</span><a name="line.4467"></a>
-<span class="sourceLineNo">4468</span>  /**<a name="line.4468"></a>
-<span class="sourceLineNo">4469</span>   * Check the collection of families for valid timestamps<a name="line.4469"></a>
-<span class="sourceLineNo">4470</span>   * @param familyMap<a name="line.4470"></a>
-<span class="sourceLineNo">4471</span>   * @param now current timestamp<a name="line.4471"></a>
-<span class="sourceLineNo">4472</span>   * @throws FailedSanityCheckException<a name="line.4472"></a>
-<span class="sourceLineNo">4473</span>   */<a name="line.4473"></a>
-<span class="sourceLineNo">4474</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4474"></a>
-<span class="sourceLineNo">4475</span>      throws FailedSanityCheckException {<a name="line.4475"></a>
-<span class="sourceLineNo">4476</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4476"></a>
-<span class="sourceLineNo">4477</span>      return;<a name="line.4477"></a>
-<span class="sourceLineNo">4478</span>    }<a name="line.4478"></a>
-<span class="sourceLineNo">4479</span>    long maxTs = now + timestampSlop;<a name="line.4479"></a>
-<span class="sourceLineNo">4480</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4480"></a>
-<span class="sourceLineNo">4481</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4481"></a>
-<span class="sourceLineNo">4482</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4482"></a>
-<span class="sourceLineNo">4483</span>      assert kvs instanceof RandomAccess;<a name="line.4483"></a>
-<span class="sourceLineNo">4484</span>      int listSize  = kvs.size();<a name="line.4484"></a>
-<span class="sourceLineNo">4485</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4485"></a>
-<span class="sourceLineNo">4486</span>        Cell cell = kvs.get(i);<a name="line.4486"></a>
-<span class="sourceLineNo">4487</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4487"></a>
-<span class="sourceLineNo">4488</span>        long ts = cell.getTimestamp();<a name="line.4488"></a>
-<span class="sourceLineNo">4489</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4489"></a>
-<span class="sourceLineNo">4490</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4490"></a>
-<span class="sourceLineNo">4491</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4491"></a>
-<span class="sourceLineNo">4492</span>        }<a name="line.4492"></a>
-<span class="sourceLineNo">4493</span>      }<a name="line.4493"></a>
+<span class="sourceLineNo">4457</span>  private void checkFamilies(Collection&lt;byte[]&gt; families, Durability durability)<a name="line.4457"></a>
+<span class="sourceLineNo">4458</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4458"></a>
+<span class="sourceLineNo">4459</span>    for (byte[] family : families) {<a name="line.4459"></a>
+<span class="sourceLineNo">4460</span>      checkFamily(family, durability);<a name="line.4460"></a>
+<span class="sourceLineNo">4461</span>    }<a name="line.4461"></a>
+<span class="sourceLineNo">4462</span>  }<a name="line.4462"></a>
+<span class="sourceLineNo">4463</span><a name="line.4463"></a>
+<span class="sourceLineNo">4464</span>  private void checkFamily(final byte[] family, Durability durability)<a name="line.4464"></a>
+<span class="sourceLineNo">4465</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4465"></a>
+<span class="sourceLineNo">4466</span>    checkFamily(family);<a name="line.4466"></a>
+<span class="sourceLineNo">4467</span>    if (durability.equals(Durability.SKIP_WAL)<a name="line.4467"></a>
+<span class="sourceLineNo">4468</span>        &amp;&amp; htableDescriptor.getColumnFamily(family).getScope()<a name="line.4468"></a>
+<span class="sourceLineNo">4469</span>        != HConstants.REPLICATION_SCOPE_LOCAL) {<a name="line.4469"></a>
+<span class="sourceLineNo">4470</span>      throw new InvalidMutationDurabilityException(<a name="line.4470"></a>
+<span class="sourceLineNo">4471</span>          "Mutation's durability is SKIP_WAL but table's column family " + Bytes.toString(family)<a name="line.4471"></a>
+<span class="sourceLineNo">4472</span>              + " need replication");<a name="line.4472"></a>
+<span class="sourceLineNo">4473</span>    }<a name="line.4473"></a>
+<span class="sourceLineNo">4474</span>  }<a name="line.4474"></a>
+<span class="sourceLineNo">4475</span><a name="line.4475"></a>
+<span class="sourceLineNo">4476</span>  void checkFamily(final byte[] family) throws NoSuchColumnFamilyException {<a name="line.4476"></a>
+<span class="sourceLineNo">4477</span>    if (!this.htableDescriptor.hasColumnFamily(family)) {<a name="line.4477"></a>
+<span class="sourceLineNo">4478</span>      throw new NoSuchColumnFamilyException(<a name="line.4478"></a>
+<span class="sourceLineNo">4479</span>          "Column family " + Bytes.toString(family) + " does not exist in region " + this<a name="line.4479"></a>
+<span class="sourceLineNo">4480</span>              + " in table " + this.htableDescriptor);<a name="line.4480"></a>
+<span class="sourceLineNo">4481</span>    }<a name="line.4481"></a>
+<span class="sourceLineNo">4482</span>  }<a name="line.4482"></a>
+<span class="sourceLineNo">4483</span><a name="line.4483"></a>
+<span class="sourceLineNo">4484</span>  /**<a name="line.4484"></a>
+<span class="sourceLineNo">4485</span>   * Check the collection of families for valid timestamps<a name="line.4485"></a>
+<span class="sourceLineNo">4486</span>   * @param familyMap<a name="line.4486"></a>
+<span class="sourceLineNo">4487</span>   * @param now current timestamp<a name="line.4487"></a>
+<span class="sourceLineNo">4488</span>   * @throws FailedSanityCheckException<a name="line.4488"></a>
+<span class="sourceLineNo">4489</span>   */<a name="line.4489"></a>
+<span class="sourceLineNo">4490</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4490"></a>
+<span class="sourceLineNo">4491</span>      throws FailedSanityCheckException {<a name="line.4491"></a>
+<span class="sourceLineNo">4492</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4492"></a>
+<span class="sourceLineNo">4493</span>      return;<a name="line.4493"></a>
 <span class="sourceLineNo">4494</span>    }<a name="line.4494"></a>
-<span class="sourceLineNo">4495</span>  }<a name="line.4495"></a>
-<span class="sourceLineNo">4496</span><a name="line.4496"></a>
-<span class="sourceLineNo">4497</span>  /*<a name="line.4497"></a>
-<span class="sourceLineNo">4498</span>   * @param size<a name="line.4498"></a>
-<span class="sourceLineNo">4499</span>   * @return True if size is over the flush threshold<a name="line.4499"></a>
-<span class="sourceLineNo">4500</span>   */<a name="line.4500"></a>
-<span class="sourceLineNo">4501</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4501"></a>
-<span class="sourceLineNo">4502</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4502"></a>
-<span class="sourceLineNo">4503</span>  }<a name="line.4503"></a>
-<span class="sourceLineNo">4504</span><a name="line.4504"></a>
-<span class="sourceLineNo">4505</span>  /**<a name="line.4505"></a>
-<span class="sourceLineNo">4506</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4506"></a>
-<span class="sourceLineNo">4507</span>   * the recovered edits back up into this region.<a name="line.4507"></a>
-<span class="sourceLineNo">4508</span>   *<a name="line.4508"></a>
-<span class="sourceLineNo">4509</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4509"></a>
-<span class="sourceLineNo">4510</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4510"></a>
-<span class="sourceLineNo">4511</span>   * reflected in the HFiles.)<a name="line.4511"></a>
-<span class="sourceLineNo">4512</span>   *<a name="line.4512"></a>
-<span class="sourceLineNo">4513</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4513"></a>
-<span class="sourceLineNo">4514</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4514"></a>
-<span class="sourceLineNo">4515</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4515"></a>
-<span class="sourceLineNo">4516</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4516"></a>
-<span class="sourceLineNo">4517</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4517"></a>
-<span class="sourceLineNo">4518</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4518"></a>
-<span class="sourceLineNo">4519</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4519"></a>
-<span class="sourceLineNo">4520</span>   * edits.<a name="line.4520"></a>
-<span class="sourceLineNo">4521</span>   *<a name="line.4521"></a>
-<span class="sourceLineNo">4522</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4522"></a>
-<span class="sourceLineNo">4523</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4523"></a>
-<span class="sourceLineNo">4524</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4524"></a>
-<span class="sourceLineNo">4525</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4525"></a>
-<span class="sourceLineNo">4526</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4526"></a>
-<span class="sourceLineNo">4527</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4527"></a>
-<span class="sourceLineNo">4528</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4528"></a>
-<span class="sourceLineNo">4529</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4529"></a>
-<span class="sourceLineNo">4530</span>   * make sense in a this single region context only -- until we online.<a name="line.4530"></a>
-<span class="sourceLineNo">4531</span>   *<a name="line.4531"></a>
-<span class="sourceLineNo">4532</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4532"></a>
-<span class="sourceLineNo">4533</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4533"></a>
-<span class="sourceLineNo">4534</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4534"></a>
-<span class="sourceLineNo">4535</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4535"></a>
-<span class="sourceLineNo">4536</span>   * @throws IOException<a name="line.4536"></a>
-<span class="sourceLineNo">4537</span>   */<a name="line.4537"></a>
-<span class="sourceLineNo">4538</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4538"></a>
-<span class="sourceLineNo">4539</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4539"></a>
-<span class="sourceLineNo">4540</span>      throws IOException {<a name="line.4540"></a>
-<span class="sourceLineNo">4541</span>    long minSeqIdForTheRegion = -1;<a name="line.4541"></a>
-<span class="sourceLineNo">4542</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4542"></a>
-<span class="sourceLineNo">4543</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4543"></a>
-<span class="sourceLineNo">4544</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4544"></a>
-<span class="sourceLineNo">4545</span>      }<a name="line.4545"></a>
-<span class="sourceLineNo">4546</span>    }<a name="line.4546"></a>
-<span class="sourceLineNo">4547</span>    long seqid = minSeqIdForTheRegion;<a name="line.4547"></a>
-<span class="sourceLineNo">4548</span><a name="line.4548"></a>
-<span class="sourceLineNo">4549</span>    FileSystem walFS = getWalFileSystem();<a name="line.4549"></a>
-<span class="sourceLineNo">4550</span>    FileSystem rootFS = getFilesystem();<a name="line.4550"></a>
-<span class="sourceLineNo">4551</span>    Path regionDir = getWALRegionDir();<a name="line.4551"></a>
-<span class="sourceLineNo">4552</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4552"></a>
-<span class="sourceLineNo">4553</span><a name="line.4553"></a>
-<span class="sourceLineNo">4554</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4554"></a>
-<span class="sourceLineNo">4555</span>    // under the root dir even if walDir is set.<a name="line.4555"></a>
-<span class="sourceLineNo">4556</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4556"></a>
-<span class="sourceLineNo">4557</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4557"></a>
-<span class="sourceLineNo">4558</span>      filesUnderRootDir =<a name="line.4558"></a>
-<span class="sourceLineNo">4559</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4559"></a>
-<span class="sourceLineNo">4560</span>      seqid = Math.max(seqid,<a name="line.4560"></a>
-<span class="sourceLineNo">4561</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4561"></a>
-<span class="sourceLineNo">4562</span>              defaultRegionDir));<a name="line.4562"></a>
-<span class="sourceLineNo">4563</span>    }<a name="line.4563"></a>
+<span class="sourceLineNo">4495</span>    long maxTs = now + timestampSlop;<a name="line.4495"></a>
+<span class="sourceLineNo">4496</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4496"></a>
+<span class="sourceLineNo">4497</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4497"></a>
+<span class="sourceLineNo">4498</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4498"></a>
+<span class="sourceLineNo">4499</span>      assert kvs instanceof RandomAccess;<a name="line.4499"></a>
+<span class="sourceLineNo">4500</span>      int listSize  = kvs.size();<a name="line.4500"></a>
+<span class="sourceLineNo">4501</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4501"></a>
+<span class="sourceLineNo">4502</span>        Cell cell = kvs.get(i);<a name="line.4502"></a>
+<span class="sourceLineNo">4503</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4503"></a>
+<span class="sourceLineNo">4504</span>        long ts = cell.getTimestamp();<a name="line.4504"></a>
+<span class="sourceLineNo">4505</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4505"></a>
+<span class="sourceLineNo">4506</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4506"></a>
+<span class="sourceLineNo">4507</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4507"></a>
+<span class="sourceLineNo">4508</span>        }<a name="line.4508"></a>
+<span class="sourceLineNo">4509</span>      }<a name="line.4509"></a>
+<span class="sourceLineNo">4510</span>    }<a name="line.4510"></a>
+<span class="sourceLineNo">4511</span>  }<a name="line.4511"></a>
+<span class="sourceLineNo">4512</span><a name="line.4512"></a>
+<span class="sourceLineNo">4513</span>  /*<a name="line.4513"></a>
+<span class="sourceLineNo">4514</span>   * @param size<a name="line.4514"></a>
+<span class="sourceLineNo">4515</span>   * @return True if size is over the flush threshold<a name="line.4515"></a>
+<span class="sourceLineNo">4516</span>   */<a name="line.4516"></a>
+<span class="sourceLineNo">4517</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4517"></a>
+<span class="sourceLineNo">4518</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4518"></a>
+<span class="sourceLineNo">4519</span>  }<a name="line.4519"></a>
+<span class="sourceLineNo">4520</span><a name="line.4520"></a>
+<span class="sourceLineNo">4521</span>  /**<a name="line.4521"></a>
+<span class="sourceLineNo">4522</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4522"></a>
+<span class="sourceLineNo">4523</span>   * the recovered edits back up into this region.<a name="line.4523"></a>
+<span class="sourceLineNo">4524</span>   *<a name="line.4524"></a>
+<span class="sourceLineNo">4525</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4525"></a>
+<span class="sourceLineNo">4526</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4526"></a>
+<span class="sourceLineNo">4527</span>   * reflected in the HFiles.)<a name="line.4527"></a>
+<span class="sourceLineNo">4528</span>   *<a name="line.4528"></a>
+<span class="sourceLineNo">4529</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4529"></a>
+<span class="sourceLineNo">4530</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4530"></a>
+<span class="sourceLineNo">4531</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4531"></a>
+<span class="sourceLineNo">4532</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4532"></a>
+<span class="sourceLineNo">4533</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4533"></a>
+<span class="sourceLineNo">4534</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4534"></a>
+<span class="sourceLineNo">4535</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4535"></a>
+<span class="sourceLineNo">4536</span>   * edits.<a name="line.4536"></a>
+<span class="sourceLineNo">4537</span>   *<a name="line.4537"></a>
+<span class="sourceLineNo">4538</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4538"></a>
+<span class="sourceLineNo">4539</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4539"></a>
+<span class="sourceLineNo">4540</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4540"></a>
+<span class="sourceLineNo">4541</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4541"></a>
+<span class="sourceLineNo">4542</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4542"></a>
+<span class="sourceLineNo">4543</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4543"></a>
+<span class="sourceLineNo">4544</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4544"></a>
+<span class="sourceLineNo">4545</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4545"></a>
+<span class="sourceLineNo">4546</span>   * make sense in a this single region context only -- until we online.<a name="line.4546"></a>
+<span class="sourceLineNo">4547</span>   *<a name="line.4547"></a>
+<span class="sourceLineNo">4548</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4548"></a>
+<span class="sourceLineNo">4549</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4549"></a>
+<span class="sourceLineNo">4550</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4550"></a>
+<span class="sourceLineNo">4551</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4551"></a>
+<span class="sourceLineNo">4552</span>   * @throws IOException<a name="line.4552"></a>
+<span class="sourceLineNo">4553</span>   */<a name="line.4553"></a>
+<span class="sourceLineNo">4554</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4554"></a>
+<span class="sourceLineNo">4555</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4555"></a>
+<span class="sourceLineNo">4556</span>      throws IOException {<a name="line.4556"></a>
+<span class="sourceLineNo">4557</span>    long minSeqIdForTheRegion = -1;<a name="line.4557"></a>
+<span class="sourceLineNo">4558</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4558"></a>
+<span class="sourceLineNo">4559</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4559"></a>
+<span class="sourceLineNo">4560</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4560"></a>
+<span class="sourceLineNo">4561</span>      }<a name="line.4561"></a>
+<span class="sourceLineNo">4562</span>    }<a name="line.4562"></a>
+<span class="sourceLineNo">4563</span>    long seqid = minSeqIdForTheRegion;<a name="line.4563"></a>
 <span class="sourceLineNo">4564</span><a name="line.4564"></a>
-<span class="sourceLineNo">4565</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4565"></a>
-<span class="sourceLineNo">4566</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4566"></a>
-<span class="sourceLineNo">4567</span>        files, reporter, regionDir));<a name="line.4567"></a>
-<span class="sourceLineNo">4568</span><a name="line.4568"></a>
-<span class="sourceLineNo">4569</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4569"></a>
-<span class="sourceLineNo">4570</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4570"></a>
-<span class="sourceLineNo">4571</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4571"></a>
-<span class="sourceLineNo">4572</span>    }<a name="line.4572"></a>
-<span class="sourceLineNo">4573</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4573"></a>
-<span class="sourceLineNo">4574</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4574"></a>
-<span class="sourceLineNo">4575</span>      // For debugging data loss issues!<a name="line.4575"></a>
-<span class="sourceLineNo">4576</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4576"></a>
-<span class="sourceLineNo">4577</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4577"></a>
-<span class="sourceLineNo">4578</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4578"></a>
-<span class="sourceLineNo">4579</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4579"></a>
-<span class="sourceLineNo">4580</span>      for (Path file: files) {<a name="line.4580"></a>
-<span class="sourceLineNo">4581</span>        fakeStoreFiles.add(<a name="line.4581"></a>
-<span class="sourceLineNo">4582</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4582"></a>
-<span class="sourceLineNo">4583</span>      }<a name="line.4583"></a>
-<span class="sourceLineNo">4584</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4584"></a>
-<span class="sourceLineNo">4585</span>    } else {<a name="line.4585"></a>
-<span class="sourceLineNo">4586</span>      if (filesUnderRootDir != null) {<a name="line.4586"></a>
-<span class="sourceLineNo">4587</span>        for (Path file : filesUnderRootDir) {<a name="line.4587"></a>
-<span class="sourceLineNo">4588</span>          if (!rootFS.delete(file, false)) {<a name="line.4588"></a>
-<span class="sourceLineNo">4589</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4589"></a>
-<span class="sourceLineNo">4590</span>          } else {<a name="line.4590"></a>
-<span class="sourceLineNo">4591</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4591"></a>
-<span class="sourceLineNo">4592</span>          }<a name="line.4592"></a>
-<span class="sourceLineNo">4593</span>        }<a name="line.4593"></a>
-<span class="sourceLineNo">4594</span>      }<a name="line.4594"></a>
-<span class="sourceLineNo">4595</span>      for (Path file: files) {<a name="line.4595"></a>
-<span class="sourceLineNo">4596</span>        if (!walFS.delete(file, false)) {<a name="line.4596"></a>
-<span class="sourceLineNo">4597</span>          LOG.error("Failed delete of " + file);<a name="line.4597"></a>
-<span class="sourceLineNo">4598</span>        } else {<a name="line.4598"></a>
-<span class="sourceLineNo">4599</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4599"></a>
-<span class="sourceLineNo">4600</span>        }<a name="line.4600"></a>
-<span class="sourceLineNo">4601</span>      }<a name="line.4601"></a>
-<span class="sourceLineNo">4602</span>    }<a name="line.4602"></a>
-<span class="sourceLineNo">4603</span>    return seqid;<a name="line.4603"></a>
-<span class="sourceLineNo">4604</span>  }<a name="line.4604"></a>
-<span class="sourceLineNo">4605</span><a name="line.4605"></a>
-<span class="sourceLineNo">4606</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4606"></a>
-<span class="sourceLineNo">4607</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4607"></a>
-<span class="sourceLineNo">4608</span>      throws IOException {<a name="line.4608"></a>
-<span class="sourceLineNo">4609</span>    long seqid = minSeqIdForTheRegion;<a name="line.4609"></a>
-<span class="sourceLineNo">4610</span>    if (LOG.isDebugEnabled()) {<a name="line.4610"></a>
-<span class="sourceLineNo">4611</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4611"></a>
-<span class="sourceLineNo">4612</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4612"></a>
-<span class="sourceLineNo">4613</span>    }<a name="line.4613"></a>
-<span class="sourceLineNo">4614</span><a name="line.4614"></a>
-<span class="sourceLineNo">4615</span>    if (files == null || files.isEmpty()) {<a name="line.4615"></a>
-<span class="sourceLineNo">4616</span>      return minSeqIdForTheRegion;<a name="line.4616"></a>
-<span class="sourceLineNo">4617</span>    }<a name="line.4617"></a>
-<span class="sourceLineNo">4618</span><a name="line.4618"></a>
-<span class="sourceLineNo">4619</span>    for (Path edits: files) {<a name="line.4619"></a>
-<span class="sourceLineNo">4620</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4620"></a>
-<span class="sourceLineNo">4621</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4621"></a>
-<span class="sourceLineNo">4622</span>        continue;<a name="line.4622"></a>
-<span class="sourceLineNo">4623</span>      }<a name="line.4623"></a>
-<span class="sourceLineNo">4624</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4624"></a>
-<span class="sourceLineNo">4625</span><a name="line.4625"></a>
-<span class="sourceLineNo">4626</span>      long maxSeqId;<a name="line.4626"></a>
-<span class="sourceLineNo">4627</span>      String fileName = edits.getName();<a name="line.4627"></a>
-<span class="sourceLineNo">4628</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4628"></a>
-<span class="sourceLineNo">4629</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4629"></a>
-<span class="sourceLineNo">4630</span>        if (LOG.isDebugEnabled()) {<a name="line.4630"></a>
-<span class="sourceLineNo">4631</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4631"></a>
-<span class="sourceLineNo">4632</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4632"></a>
-<span class="sourceLineNo">4633</span>              + ", skipped the whole file, path=" + edits;<a name="line.4633"></a>
-<span class="sourceLineNo">4634</span>          LOG.debug(msg);<a name="line.4634"></a>
-<span class="sourceLineNo">4635</span>        }<a name="line.4635"></a>
-<span class="sourceLineNo">4636</span>        continue;<a name="line.4636"></a>
-<span class="sourceLineNo">4637</span>      }<a name="line.4637"></a>
-<span class="sourceLineNo">4638</span><a name="line.4638"></a>
-<span class="sourceLineNo">4639</span>      try {<a name="line.4639"></a>
-<span class="sourceLineNo">4640</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4640"></a>
-<span class="sourceLineNo">4641</span>        // if seqId is greater<a name="line.4641"></a>
-<span class="sourceLineNo">4642</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4642"></a>
-<span class="sourceLineNo">4643</span>      } catch (IOException e) {<a name="line.4643"></a>
-<span class="sourceLineNo">4644</span>        boolean skipErrors = conf.getBoolean(<a name="line.4644"></a>
-<span class="sourceLineNo">4645</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4645"></a>
-<span class="sourceLineNo">4646</span>            conf.getBoolean(<a name="line.4646"></a>
-<span class="sourceLineNo">4647</span>                "hbase.skip.errors",<a name="line.4647"></a>
-<span class="sourceLineNo">4648</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4648"></a>
-<span class="sourceLineNo">4649</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4649"></a>
-<span class="sourceLineNo">4650</span>          LOG.warn(<a name="line.4650"></a>
-<span class="sourceLineNo">4651</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4651"></a>
-<span class="sourceLineNo">4652</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4652"></a>
-<span class="sourceLineNo">4653</span>        }<a name="line.4653"></a>
-<span class="sourceLineNo">4654</span>        if (skipErrors) {<a name="line.4654"></a>
-<span class="sourceLineNo">4655</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4655"></a>
-<span class="sourceLineNo">4656</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4656"></a>
-<span class="sourceLineNo">4657</span>              + "=true so continuing. Renamed " + edits +<a name="line.4657"></a>
-<span class="sourceLineNo">4658</span>              " as " + p, e);<a name="line.4658"></a>
-<span class="sourceLineNo">4659</span>        } else {<a name="line.4659"></a>
-<span class="sourceLineNo">4660</span>          throw e;<a name="line.4660"></a>
-<span class="sourceLineNo">4661</span>        }<a name="line.4661"></a>
-<span class="sourceLineNo">4662</span>      }<a name="line.4662"></a>
-<span class="sourceLineNo">4663</span>    }<a name="line.4663"></a>
-<span class="sourceLineNo">4664</span>    return seqid;<a name="line.4664"></a>
-<span class="sourceLineNo">4665</span>  }<a name="line.4665"></a>
-<span class="sourceLineNo">4666</span><a name="line.4666"></a>
-<span class="sourceLineNo">4667</span>  /*<a name="line.4667"></a>
-<span class="sourceLineNo">4668</span>   * @param edits File of recovered edits.<a name="line.4668"></a>
-<span class="sourceLineNo">4669</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4669"></a>
-<span class="sourceLineNo">4670</span>   * must be larger than this to be replayed for each store.<a name="line.4670"></a>
-<span class="sourceLineNo">4671</span>   * @param reporter<a name="line.4671"></a>
-<span class="sourceLineNo">4672</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4672"></a>
-<span class="sourceLineNo">4673</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4673"></a>
-<span class="sourceLineNo">4674</span>   * @throws IOException<a name="line.4674"></a>
-<span class="sourceLineNo">4675</span>   */<a name="line.4675"></a>
-<span class="sourceLineNo">4676</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4676"></a>
-<span class="sourceLineNo">4677</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4677"></a>
-<span class="sourceLineNo">4678</span>    throws IOException {<a name="line.4678"></a>
-<span class="sourceLineNo">4679</span>    String msg = "Replaying edits from " + edits;<a name="line.4679"></a>
-<span class="sourceLineNo">4680</span>    LOG.info(msg);<a name="line.4680"></a>
-<span class="sourceLineNo">4681</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4681"></a>
+<span class="sourceLineNo">4565</span>    FileSystem walFS = getWalFileSystem();<a name="line.4565"></a>
+<span class="sourceLineNo">4566</span>    FileSystem rootFS = getFilesystem();<a name="line.4566"></a>
+<span class="sourceLineNo">4567</span>    Path regionDir = getWALRegionDir();<a name="line.4567"></a>
+<span class="sourceLineNo">4568</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4568"></a>
+<span class="sourceLineNo">4569</span><a name="line.4569"></a>
+<span class="sourceLineNo">4570</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4570"></a>
+<span class="sourceLineNo">4571</span>    // under the root dir even if walDir is set.<a name="line.4571"></a>
+<span class="sourceLineNo">4572</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4572"></a>
+<span class="sourceLineNo">4573</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4573"></a>
+<span class="sourceLineNo">4574</span>      filesUnderRootDir =<a name="line.4574"></a>
+<span class="sourceLineNo">4575</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4575"></a>
+<span class="sourceLineNo">4576</span>      seqid = Math.max(seqid,<a name="line.4576"></a>
+<span class="sourceLineNo">4577</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4577"></a>
+<span class="sourceLineNo">4578</span>              defaultRegionDir));<a name="line.4578"></a>
+<span class="sourceLineNo">4579</span>    }<a name="line.4579"></a>
+<span class="sourceLineNo">4580</span><a name="line.4580"></a>
+<span class="sourceLineNo">4581</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4581"></a>
+<span class="sourceLineNo">4582</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4582"></a>
+<span class="sourceLineNo">4583</span>        files, reporter, regionDir));<a name="line.4583"></a>
+<span class="sourceLineNo">4584</span><a name="line.4584"></a>
+<span class="sourceLineNo">4585</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4585"></a>
+<span class="sourceLineNo">4586</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4586"></a>
+<span class="sourceLineNo">4587</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4587"></a>
+<span class="sourceLineNo">4588</span>    }<a name="line.4588"></a>
+<span class="sourceLineNo">4589</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4589"></a>
+<span class="sourceLineNo">4590</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4590"></a>
+<span class="sourceLineNo">4591</span>      // For debugging data loss issues!<a name="line.4591"></a>
+<span class="sourceLineNo">4592</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4592"></a>
+<span class="sourceLineNo">4593</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4593"></a>
+<span class="sourceLineNo">4594</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4594"></a>
+<span class="sourceLineNo">4595</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4595"></a>
+<span class="sourceLineNo">4596</span>      for (Path file: files) {<a name="line.4596"></a>
+<span class="sourceLineNo">4597</span>        fakeStoreFiles.add(<a name="line.4597"></a>
+<span class="sourceLineNo">4598</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4598"></a>
+<span class="sourceLineNo">4599</span>      }<a name="line.4599"></a>
+<span class="sourceLineNo">4600</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4600"></a>
+<span class="sourceLineNo">4601</span>    } else {<a name="line.4601"></a>
+<span class="sourceLineNo">4602</span>      if (filesUnderRootDir != null) {<a name="line.4602"></a>
+<span class="sourceLineNo">4603</span>        for (Path file : filesUnderRootDir) {<a name="line.4603"></a>
+<span class="sourceLineNo">4604</span>          if (!rootFS.delete(file, false)) {<a name="line.4604"></a>
+<span class="sourceLineNo">4605</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4605"></a>
+<span class="sourceLineNo">4606</span>          } else {<a name="line.4606"></a>
+<span class="sourceLineNo">4607</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4607"></a>
+<span class="sourceLineNo">4608</span>          }<a name="line.4608"></a>
+<span class="sourceLineNo">4609</span>        }<a name="line.4609"></a>
+<span class="sourceLineNo">4610</span>      }<a name="line.4610"></a>
+<span class="sourceLineNo">4611</span>      for (Path file: files) {<a name="line.4611"></a>
+<span class="sourceLineNo">4612</span>        if (!walFS.delete(file, false)) {<a name="line.4612"></a>
+<span class="sourceLineNo">4613</span>          LOG.error("Failed delete of " + file);<a name="line.4613"></a>
+<span class="sourceLineNo">4614</span>        } else {<a name="line.4614"></a>
+<span class="sourceLineNo">4615</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4615"></a>
+<span class="sourceLineNo">4616</span>        }<a name="line.4616"></a>
+<span class="sourceLineNo">4617</span>      }<a name="line.4617"></a>
+<span class="sourceLineNo">4618</span>    }<a name="line.4618"></a>
+<span class="sourceLineNo">4619</span>    return seqid;<a name="line.4619"></a>
+<span class="sourceLineNo">4620</span>  }<a name="line.4620"></a>
+<span class="sourceLineNo">4621</span><a name="line.4621"></a>
+<span class="sourceLineNo">4622</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4622"></a>
+<span class="sourceLineNo">4623</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4623"></a>
+<span class="sourceLineNo">4624</span>      throws IOException {<a name="line.4624"></a>
+<span class="sourceLineNo">4625</span>    long seqid = minSeqIdForTheRegion;<a name="line.4625"></a>
+<span class="sourceLineNo">4626</span>    if (LOG.isDebugEnabled()) {<a name="line.4626"></a>
+<span class="sourceLineNo">4627</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4627"></a>
+<span class="sourceLineNo">4628</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4628"></a>
+<span class="sourceLineNo">4629</span>    }<a name="line.4629"></a>
+<span class="sourceLineNo">4630</span><a name="line.4630"></a>
+<span class="sourceLineNo">4631</span>    if (files == null || files.isEmpty()) {<a name="line.4631"></a>
+<span class="sourceLineNo">4632</span>      return minSeqIdForTheRegion;<a name="line.4632"></a>
+<span class="sourceLineNo">4633</span>    }<a name="line.4633"></a>
+<span class="sourceLineNo">4634</span><a name="line.4634"></a>
+<span class="sourceLineNo">4635</span>    for (Path edits: files) {<a name="line.4635"></a>
+<span class="sourceLineNo">4636</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4636"></a>
+<span class="sourceLineNo">4637</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4637"></a>
+<span class="sourceLineNo">4638</span>        continue;<a name="line.4638"></a>
+<span class="sourceLineNo">4639</span>      }<a name="line.4639"></a>
+<span class="sourceLineNo">4640</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4640"></a>
+<span class="sourceLineNo">4641</span><a name="line.4641"></a>
+<span class="sourceLineNo">4642</span>      long maxSeqId;<a name="line.4642"></a>
+<span class="sourceLineNo">4643</span>      String fileName = edits.getName();<a name="line.4643"></a>
+<span class="sourceLineNo">4644</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4644"></a>
+<span class="sourceLineNo">4645</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4645"></a>
+<span class="sourceLineNo">4646</span>        if (LOG.isDebugEnabled()) {<a name="line.4646"></a>
+<span class="sourceLineNo">4647</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4647"></a>
+<span class="sourceLineNo">4648</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4648"></a>
+<span class="sourceLineNo">4649</span>              + ", skipped the whole file, path=" + edits;<a name="line.4649"></a>
+<span class="sourceLineNo">4650</span>          LOG.debug(msg);<a name="line.4650"></a>
+<span class="sourceLineNo">4651</span>        }<a name="line.4651"></a>
+<span class="sourceLineNo">4652</span>        continue;<a name="line.4652"></a>
+<span class="sourceLineNo">4653</span>      }<a name="line.4653"></a>
+<span class="sourceLineNo">4654</span><a name="line.4654"></a>
+<span class="sourceLineNo">4655</span>      try {<a name="line.4655"></a>
+<span class="sourceLineNo">4656</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4656"></a>
+<span class="sourceLineNo">4657</span>        // if seqId is greater<a name="line.4657"></a>
+<span class="sourceLineNo">4658</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4658"></a>
+<span class="sourceLineNo">4659</span>      } catch (IOException e) {<a name="line.4659"></a>
+<span class="sourceLineNo">4660</span>        boolean skipErrors = conf.getBoolean(<a name="line.4660"></a>
+<span class="sourceLineNo">4661</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4661"></a>
+<span class="sourceLineNo">4662</span>            conf.getBoolean(<a name="line.4662"></a>
+<span class="sourceLineNo">4663</span>                "hbase.skip.errors",<a name="line.4663"></a>
+<span class="sourceLineNo">4664</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4664"></a>
+<span class="sourceLineNo">4665</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4665"></a>
+<span class="sourceLineNo">4666</span>          LOG.warn(<a name="line.4666"></a>
+<span class="sourceLineNo">4667</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4667"></a>
+<span class="sourceLineNo">4668</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4668"></a>
+<span class="sourceLineNo">4669</span>        }<a name="line.4669"></a>
+<span class="sourceLineNo">4670</span>        if (skipErrors) {<a name="line.4670"></a>
+<span class="sourceLineNo">4671</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4671"></a>
+<span class="sourceLineNo">4672</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4672"></a>
+<span class="sourceLineNo">4673</span>              + "=true so continuing. Renamed " + edits +<a name="line.4673"></a>
+<span class="sourceLineNo">4674</span>              " as " + p, e);<a name="line.4674"></a>
+<span class="sourceLineNo">4675</span>        } else {<a name="line.4675"></a>
+<span class="sourceLineNo">4676</span>          throw e;<a name="line.4676"></a>
+<span class="sourceLineNo">4677</span>        }<a name="line.4677"></a>
+<span class="sourceLineNo">4678</span>      }<a name="line.4678"></a>
+<span class="sourceLineNo">4679</span>    }<a name="line.4679"></a>
+<span class="sourceLineNo">4680</span>    return seqid;<a name="line.4680"></a>
+<span class="sourceLineNo">4681</span>  }<a name="line.4681"></a>
 <span class="sourceLineNo">4682</span><a name="line.4682"></a>
-<span class="sourceLineNo">4683</span>    status.setStatus("Opening recovered edits");<a name="line.4683"></a>
-<span class="sourceLineNo">4684</span>    WAL.Reader reader = null;<a name="line.4684"></a>
-<span class="sourceLineNo">4685</span>    try {<a name="line.4685"></a>
-<span class="sourceLineNo">4686</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4686"></a>
-<span class="sourceLineNo">4687</span>      long currentEditSeqId = -1;<a name="line.4687"></a>
-<span class="sourceLineNo">4688</span>      long currentReplaySeqId = -1;<a name="line.4688"></a>
-<span class="sourceLineNo">4689</span>      long firstSeqIdInLog = -1;<a name="line.4689"></a>
-<span class="sourceLineNo">4690</span>      long skippedEdits = 0;<a name="line.4690"></a>
-<span class="sourceLineNo">4691</span>      long editsCount = 0;<a name="line.4691"></a>
-<span class="sourceLineNo">4692</span>      long intervalEdits = 0;<a name="line.4692"></a>
-<span class="sourceLineNo">4693</span>      WAL.Entry entry;<a name="line.4693"></a>
-<span class="sourceLineNo">4694</span>      HStore store = null;<a name="line.4694"></a>
-<span class="sourceLineNo">4695</span>      boolean reported_once = false;<a name="line.4695"></a>
-<span class="sourceLineNo">4696</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4696"></a>
-<span class="sourceLineNo">4697</span><a name="line.4697"></a>
-<span class="sourceLineNo">4698</span>      try {<a name="line.4698"></a>
-<span class="sourceLineNo">4699</span>        // How many edits seen before we check elapsed time<a name="line.4699"></a>
-<span class="sourceLineNo">4700</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4700"></a>
-<span class="sourceLineNo">4701</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4701"></a>
-<span class="sourceLineNo">4702</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4702"></a>
-<span class="sourceLineNo">4703</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4703"></a>
-<span class="sourceLineNo">4704</span><a name="line.4704"></a>
-<span class="sourceLineNo">4705</span>        if (coprocessorHost != null) {<a name="line.4705"></a>
-<span class="sourceLineNo">4706</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4706"></a>
-<span class="sourceLineNo">4707</span>        }<a name="line.4707"></a>
-<span class="sourceLineNo">4708</span><a name="line.4708"></a>
-<span class="sourceLineNo">4709</span>        while ((entry = reader.next()) != null) {<a name="line.4709"></a>
-<span class="sourceLineNo">4710</span>          WALKey key = entry.getKey();<a name="line.4710"></a>
-<span class="sourceLineNo">4711</span>          WALEdit val = entry.getEdit();<a name="line.4711"></a>
-<span class="sourceLineNo">4712</span><a name="line.4712"></a>
-<span class="sourceLineNo">4713</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4713"></a>
-<span class="sourceLineNo">4714</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4714"></a>
-<span class="sourceLineNo">4715</span>          }<a name="line.4715"></a>
-<span class="sourceLineNo">4716</span><a name="line.4716"></a>
-<span class="sourceLineNo">4717</span>          if (reporter != null) {<a name="line.4717"></a>
-<span class="sourceLineNo">4718</span>            intervalEdits += val.size();<a name="line.4718"></a>
-<span class="sourceLineNo">4719</span>            if (intervalEdits &gt;= interval) {<a name="line.4719"></a>
-<span class="sourceLineNo">4720</span>              // Number of edits interval reached<a name="line.4720"></a>
-<span class="sourceLineNo">4721</span>              intervalEdits = 0;<a name="line.4721"></a>
-<span class="sourceLineNo">4722</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4722"></a>
-<span class="sourceLineNo">4723</span>              if (lastReport + period &lt;= cur) {<a name="line.4723"></a>
-<span class="sourceLineNo">4724</span>                status.setStatus("Replaying edits..." +<a name="line.4724"></a>
-<span class="sourceLineNo">4725</span>                    " skipped=" + skippedEdits +<a name="line.4725"></a>
-<span class="sourceLineNo">4726</span>                    " edits=" + editsCount);<a name="line.4726"></a>
-<span class="sourceLineNo">4727</span>                // Timeout reached<a name="line.4727"></a>
-<span class="sourceLineNo">4728</span>                if(!reporter.progress()) {<a name="line.4728"></a>
-<span class="sourceLineNo">4729</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4729"></a>
-<span class="sourceLineNo">4730</span>                  LOG.warn(msg);<a name="line.4730"></a>
-<span class="sourceLineNo">4731</span>                  status.abort(msg);<a name="line.4731"></a>
-<span class="sourceLineNo">4732</span>                  throw new IOException(msg);<a name="line.4732"></a>
-<span class="sourceLineNo">4733</span>                }<a name="line.4733"></a>
-<span class="sourceLineNo">4734</span>                reported_once = true;<a name="line.4734"></a>
-<span class="sourceLineNo">4735</span>                lastReport = cur;<a name="line.4735"></a>
-<span class="sourceLineNo">4736</span>              }<a name="line.4736"></a>
-<span class="sourceLineNo">4737</span>            }<a name="line.4737"></a>
-<span class="sourceLineNo">4738</span>          }<a name="line.4738"></a>
-<span class="sourceLineNo">4739</span><a name="line.4739"></a>
-<span class="sourceLineNo">4740</span>          if (firstSeqIdInLog == -1) {<a name="line.4740"></a>
-<span class="sourceLineNo">4741</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4741"></a>
-<span class="sourceLineNo">4742</span>          }<a name="line.4742"></a>
-<span class="sourceLineNo">4743</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4743"></a>
-<span class="sourceLineNo">4744</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4744"></a>
-<span class="sourceLineNo">4745</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4745"></a>
-<span class="sourceLineNo">4746</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4746"></a>
-<span class="sourceLineNo">4747</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4747"></a>
-<span class="sourceLineNo">4748</span>                + "; edit=" + val);<a name="line.4748"></a>
-<span class="sourceLineNo">4749</span>          } else {<a name="line.4749"></a>
-<span class="sourceLineNo">4750</span>            currentEditSeqId = key.getSequenceId();<a name="line.4750"></a>
-<span class="sourceLineNo">4751</span>          }<a name="line.4751"></a>
-<span class="sourceLineNo">4752</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4752"></a>
-<span class="sourceLineNo">4753</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4753"></a>
-<span class="sourceLineNo">4754</span><a name="line.4754"></a>
-<span class="sourceLineNo">4755</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4755"></a>
-<span class="sourceLineNo">4756</span>          // instead of a KeyValue.<a name="line.4756"></a>
-<span class="sourceLineNo">4757</span>          if (coprocessorHost != null) {<a name="line.4757"></a>
-<span class="sourceLineNo">4758</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4758"></a>
-<span class="sourceLineNo">4759</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4759"></a>
-<span class="sourceLineNo">4760</span>              // if bypass this wal entry, ignore it ...<a name="line.4760"></a>
-<span class="sourceLineNo">4761</span>              continue;<a name="line.4761"></a>
-<span class="sourceLineNo">4762</span>            }<a name="line.4762"></a>
-<span class="sourceLineNo">4763</span>          }<a name="line.4763"></a>
-<span class="sourceLineNo">4764</span>          boolean checkRowWithinBoundary = false;<a name="line.4764"></a>
-<span class="sourceLineNo">4765</span>          // Check this edit is for this region.<a name="line.4765"></a>
-<span class="sourceLineNo">4766</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4766"></a>
-<span class="sourceLineNo">4767</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4767"></a>
-<span class="sourceLineNo">4768</span>            checkRowWithinBoundary = true;<a name="line.4768"></a>
-<span class="sourceLineNo">4769</span>          }<a name="line.4769"></a>
+<span class="sourceLineNo">4683</span>  /*<a name="line.4683"></a>
+<span class="sourceLineNo">4684</span>   * @param edits File of recovered edits.<a name="line.4684"></a>
+<span class="sourceLineNo">4685</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4685"></a>
+<span class="sourceLineNo">4686</span>   * must be larger than this to be replayed for each store.<a name="line.4686"></a>
+<span class="sourceLineNo">4687</span>   * @param reporter<a name="line.4687"></a>
+<span class="sourceLineNo">4688</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4688"></a>
+<span class="sourceLineNo">4689</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4689"></a>
+<span class="sourceLineNo">4690</span>   * @throws IOException<a name="line.4690"></a>
+<span class="sourceLineNo">4691</span>   */<a name="line.4691"></a>
+<span class="sourceLineNo">4692</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4692"></a>
+<span class="sourceLineNo">4693</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4693"></a>
+<span class="sourceLineNo">4694</span>    throws IOException {<a name="line.4694"></a>
+<span class="sourceLineNo">4695</span>    String msg = "Replaying edits from " + edits;<a name="line.4695"></a>
+<span class="sourceLineNo">4696</span>    LOG.info(msg);<a name="line.4696"></a>
+<span class="sourceLineNo">4697</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4697"></a>
+<span class="sourceLineNo">4698</span><a name="line.4698"></a>
+<span class="sourceLineNo">4699</span>    status.setStatus("Opening recovered edits");<a name="line.4699"></a>
+<span class="sourceLineNo">4700</span>    WAL.Reader reader = null;<a name="line.4700"></a>
+<span class="sourceLineNo">4701</span>    try {<a name="line.4701"></a>
+<span class="sourceLineNo">4702</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4702"></a>
+<span class="sourceLineNo">4703</span>      long currentEditSeqId = -1;<a name="line.4703"></a>
+<span class="sourceLineNo">4704</span>      long currentReplaySeqId = -1;<a name="line.4704"></a>
+<span class="sourceLineNo">4705</span>      long firstSeqIdInLog = -1;<a name="line.4705"></a>
+<span class="sourceLineNo">4706</span>      long skippedEdits = 0;<a name="line.4706"></a>
+<span class="sourceLineNo">4707</span>      long editsCount = 0;<a name="line.4707"></a>
+<span class="sourceLineNo">4708</span>      long intervalEdits = 0;<a name="line.4708"></a>
+<span class="sourceLineNo">4709</span>      WAL.Entry entry;<a name="line.4709"></a>
+<span class="sourceLineNo">4710</span>      HStore store = null;<a name="line.4710"></a>
+<span class="sourceLineNo">4711</span>      boolean reported_once = false;<a name="line.4711"></a>
+<span class="sourceLineNo">4712</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4712"></a>
+<span class="sourceLineNo">4713</span><a name="line.4713"></a>
+<span class="sourceLineNo">4714</span>      try {<a name="line.4714"></a>
+<span class="sourceLineNo">4715</span>        // How many edits seen before we check elapsed time<a name="line.4715"></a>
+<span class="sourceLineNo">4716</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4716"></a>
+<span class="sourceLineNo">4717</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4717"></a>
+<span class="sourceLineNo">4718</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4718"></a>
+<span class="sourceLineNo">4719</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4719"></a>
+<span class="sourceLineNo">4720</span><a name="line.4720"></a>
+<span class="sourceLineNo">4721</span>        if (coprocessorHost != null) {<a name="line.4721"></a>
+<span class="sourceLineNo">4722</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4722"></a>
+<span class="sourceLineNo">4723</span>        }<a name="line.4723"></a>
+<span class="sourceLineNo">4724</span><a name="line.4724"></a>
+<span class="sourceLineNo">4725</span>        while ((entry = reader.next()) != null) {<a name="line.4725"></a>
+<span class="sourceLineNo">4726</span>          WALKey key = entry.getKey();<a name="line.4726"></a>
+<span class="sourceLineNo">4727</span>          WALEdit val = entry.getEdit();<a name="line.4727"></a>
+<span class="sourceLineNo">4728</span><a name="line.4728"></a>
+<span class="sourceLineNo">4729</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4729"></a>
+<span class="sourceLineNo">4730</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4730"></a>
+<span class="sourceLineNo">4731</span>          }<a name="line.4731"></a>
+<span class="sourceLineNo">4732</span><a name="line.4732"></a>
+<span class="sourceLineNo">4733</span>          if (reporter != null) {<a name="line.4733"></a>
+<span class="sourceLineNo">4734</span>            intervalEdits += val.size();<a name="line.4734"></a>
+<span class="sourceLineNo">4735</span>            if (intervalEdits &gt;= interval) {<a name="line.4735"></a>
+<span class="sourceLineNo">4736</span>              // Number of edits interval reached<a name="line.4736"></a>
+<span class="sourceLineNo">4737</span>              intervalEdits = 0;<a name="line.4737"></a>
+<span class="sourceLineNo">4738</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4738"></a>
+<span class="sourceLineNo">4739</span>              if (lastReport + period &lt;= cur) {<a name="line.4739"></a>
+<span class="sourceLineNo">4740</span>                status.setStatus("Replaying edits..." +<a name="line.4740"></a>
+<span class="sourceLineNo">4741</span>                    " skipped=" + skippedEdits +<a name="line.4741"></a>
+<span class="sourceLineNo">4742</span>                    " edits=" + editsCount);<a name="line.4742"></a>
+<span class="sourceLineNo">4743</span>                // Timeout reached<a name="line.4743"></a>
+<span class="sourceLineNo">4744</span>                if(!reporter.progress()) {<a name="line.4744"></a>
+<span class="sourceLineNo">4745</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4745"></a>
+<span class="sourceLineNo">4746</span>                  LOG.warn(msg);<a name="line.4746"></a>
+<span class="sourceLineNo">4747</span>                  status.abort(msg);<a name="line.4747"></a>
+<span class="sourceLineNo">4748</span>                  throw new IOException(msg);<a name="line.4748"></a>
+<span class="sourceLineNo">4749</span>                }<a name="line.4749"></a>
+<span class="sourceLineNo">4750</span>                reported_once = true;<a name="line.4750"></a>
+<span class="sourceLineNo">4751</span>                lastReport = cur;<a name="line.4751"></a>
+<span class="sourceLineNo">4752</span>              }<a name="line.4752"></a>
+<span class="sourceLineNo">4753</span>            }<a name="line.4753"></a>
+<span class="sourceLineNo">4754</span>          }<a name="line.4754"></a>
+<span class="sourceLineNo">4755</span><a name="line.4755"></a>
+<span class="sourceLineNo">4756</span>          if (firstSeqIdInLog == -1) {<a name="line.4756"></a>
+<span class="sourceLineNo">4757</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4757"></a>
+<span class="sourceLineNo">4758</span>          }<a name="line.4758"></a>
+<span class="sourceLineNo">4759</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4759"></a>
+<span class="sourceLineNo">4760</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4760"></a>
+<span class="sourceLineNo">4761</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4761"></a>
+<span class="sourceLineNo">4762</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4762"></a>
+<span class="sourceLineNo">4763</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4763"></a>
+<span class="sourceLineNo">4764</span>                + "; edit=" + val);<a name="line.4764"></a>
+<span class="sourceLineNo">4765</span>          } else {<a name="line.4765"></a>
+<span class="sourceLineNo">4766</span>            currentEditSeqId = key.getSequenceId();<a name="line.4766"></a>
+<span class="sourceLineNo">4767</span>          }<a name="line.4767"></a>
+<span class="sourceLineNo">4768</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4768"></a>
+<span class="sourceLineNo">4769</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4769"></a>
 <span class="sourceLineNo">4770</span><a name="line.4770"></a>
-<span class="sourceLineNo">4771</span>          boolean flush = false;<a name="line.4771"></a>
-<span class="sourceLineNo">4772</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4772"></a>
-<span class="sourceLineNo">4773</span>          for (Cell cell: val.getCells()) {<a name="line.4773"></a>
-<span class="sourceLineNo">4774</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4774"></a>
-<span class="sourceLineNo">4775</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4775"></a>
-<span class="sourceLineNo">4776</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4776"></a>
-<span class="sourceLineNo">4777</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4777"></a>
-<span class="sourceLineNo">4778</span>              if (!checkRowWithinBoundary) {<a name="line.4778"></a>
-<span class="sourceLineNo">4779</span>                //this is a special edit, we should handle it<a name="line.4779"></a>
-<span class="sourceLineNo">4780</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4780"></a>
-<span class="sourceLineNo">4781</span>                if (compaction != null) {<a name="line.4781"></a>
-<span class="sourceLineNo">4782</span>                  //replay the compaction<a name="line.4782"></a>
-<span class="sourceLineNo">4783</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4783"></a>
-<span class="sourceLineNo">4784</span>                }<a name="line.4784"></a>
-<span class="sourceLineNo">4785</span>              }<a name="line.4785"></a>
-<span class="sourceLineNo">4786</span>              skippedEdits++;<a name="line.4786"></a>
-<span class="sourceLineNo">4787</span>              continue;<a name="line.4787"></a>
-<span class="sourceLineNo">4788</span>            }<a name="line.4788"></a>
-<span class="sourceLineNo">4789</span>            // Figure which store the edit is meant for.<a name="line.4789"></a>
-<span class="sourceLineNo">4790</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4790"></a>
-<span class="sourceLineNo">4791</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4791"></a>
-<span class="sourceLineNo">4792</span>              store = getStore(cell);<a name="line.4792"></a>
-<span class="sourceLineNo">4793</span>            }<a name="line.4793"></a>
-<span class="sourceLineNo">4794</span>            if (store == null) {<a name="line.4794"></a>
-<span class="sourceLineNo">4795</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4795"></a>
-<span class="sourceLineNo">4796</span>              // crash and redeploy?<a name="line.4796"></a>
-<span class="sourceLineNo">4797</span>              LOG.warn("No family for " + cell);<a name="line.4797"></a>
-<span class="sourceLineNo">4798</span>              skippedEdits++;<a name="line.4798"></a>
-<span class="sourceLineNo">4799</span>              continue;<a name="line.4799"></a>
-<span class="sourceLineNo">4800</span>            }<a name="line.4800"></a>
-<span class="sourceLineNo">4801</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4801"></a>
-<span class="sourceLineNo">4802</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4802"></a>
-<span class="sourceLineNo">4803</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4803"></a>
-<span class="sourceLineNo">4804</span>              skippedEdits++;<a name="line.4804"></a>
-<span class="sourceLineNo">4805</span>              continue;<a name="line.4805"></a>
-<span class="sourceLineNo">4806</span>            }<a name="line.4806"></a>
-<span class="sourceLineNo">4807</span>            // Now, figure if we should skip this edit.<a name="line.4807"></a>
-<span class="sourceLineNo">4808</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4808"></a>
-<span class="sourceLineNo">4809</span>                .getName())) {<a name="line.4809"></a>
-<span class="sourceLineNo">4810</span>              skippedEdits++;<a name="line.4810"></a>
-<span class="sourceLineNo">4811</span>              continue;<a name="line.4811"></a>
-<span class="sourceLineNo">4812</span>            }<a name="line.4812"></a>
-<span class="sourceLineNo">4813</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4813"></a>
-<span class="sourceLineNo">4814</span><a name="line.4814"></a>
-<span class="sourceLineNo">4815</span>            restoreEdit(store, cell, memStoreSizing);<a name="line.4815"></a>
-<span class="sourceLineNo">4816</span>            editsCount++;<a name="line.4816"></a>
-<span class="sourceLineNo">4817</span>          }<a name="line.4817"></a>
-<span class="sourceLineNo">4818</span>          MemStoreSize mss = memStoreSizing.getMemStoreSize();<a name="line.4818"></a>
-<span class="sourceLineNo">4819</span>          incMemStoreSize(mss);<a name="line.4819"></a>
-<span class="sourceLineNo">4820</span>          flush = isFlushSize(this.memStoreSizing.getMemStoreSize());<a name="line.4820"></a>
-<span class="sourceLineNo">4821</span>          if (flush) {<a name="line.4821"></a>
-<span class="sourceLineNo">4822</span>            internalFlushcache(null, currentEditSeqId, stores.values(), status, false,<a name="line.4822"></a>
-<span class="sourceLineNo">4823</span>              FlushLifeCycleTracker.DUMMY);<a name="line.4823"></a>
-<span class="sourceLineNo">4824</span>          }<a name="line.4824"></a>
-<span class="sourceLineNo">4825</span><a name="line.4825"></a>
-<span class="sourceLineNo">4826</span>          if (coprocessorHost != null) {<a name="line.4826"></a>
-<span class="sourceLineNo">4827</span>            coprocessorHost.postWALRestore(this.getRegionInfo(), key, val);<a name="line.4827"></a>
-<span class="sourceLineNo">4828</span>          }<a name="line.4828"></a>
-<span class="sourceLineNo">4829</span>        }<a name="line.4829"></a>
+<span class="sourceLineNo">4771</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4771"></a>
+<span class="sourceLineNo">4772</span>          // instead of a KeyValue.<a name="line.4772"></a>
+<span class="sourceLineNo">4773</span>          if (coprocessorHost != null) {<a name="line.4773"></a>
+<span class="sourceLineNo">4774</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4774"></a>
+<span class="sourceLineNo">4775</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4775"></a>
+<span class="sourceLineNo">4776</span>              // if bypass this wal entry, ignore it ...<a name="line.4776"></a>
+<span class="sourceLineNo">4777</span>              continue;<a name="line.4777"></a>
+<span class="sourceLineNo">4778</span>            }<a name="line.4778"></a>
+<span class="sourceLineNo">4779</span>          }<a name="line.4779"></a>
+<span class="sourceLineNo">4780</span>          boolean checkRowWithinBoundary = false;<a name="line.4780"></a>
+<span class="sourceLineNo">4781</span>          // Check this edit is for this region.<a name="line.4781"></a>
+<span class="sourceLineNo">4782</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4782"></a>
+<span class="sourceLineNo">4783</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4783"></a>
+<span class="sourceLineNo">4784</span>            checkRowWithinBoundary = true;<a name="line.4784"></a>
+<span class="sourceLineNo">4785</span>          }<a name="line.4785"></a>
+<span class="sourceLineNo">4786</span><a name="line.4786"></a>
+<span class="sourceLineNo">4787</span>          boolean flush = false;<a name="line.4787"></a>
+<span class="sourceLineNo">4788</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4788"></a>
+<span class="sourceLineNo">4789</span>          for (Cell cell: val.getCells()) {<a name="line.4789"></a>
+<span class="sourceLineNo">4790</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4790"></a>
+<span class="sourceLineNo">4791</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4791"></a>
+<span class="sourceLineNo">4792</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4792"></a>
+<span class="sourceLineNo">4793</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4793"></a>
+<span class="sourceLineNo">4794</span>              if (!checkRowWithinBoundary) {<a name="line.4794"></a>
+<span class="sourceLineNo">4795</span>                //this is a special edit, we should handle it<a name="line.4795"></a>
+<span class="sourceLineNo">4796</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4796"></a>
+<span class="sourceLineNo">4797</span>                if (compaction != null) {<a name="line.4797"></a>
+<span class="sourceLineNo">4798</span>                  //replay the compaction<a name="line.4798"></a>
+<span class="sourceLineNo">4799</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4799"></a>
+<span class="sourceLineNo">4800</span>                }<a name="line.4800"></a>
+<span class="sourceLineNo">4801</span>              }<a name="line.4801"></a>
+<span class="sourceLineNo">4802</span>              skippedEdits++;<a name="line.4802"></a>
+<span class="sourceLineNo">4803</span>              continue;<a name="line.4803"></a>
+<span class="sourceLineNo">4804</span>            }<a name="line.4804"></a>
+<span class="sourceLineNo">4805</span>            // Figure which store the edit is meant for.<a name="line.4805"></a>
+<span class="sourceLineNo">4806</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4806"></a>
+<span class="sourceLineNo">4807</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4807"></a>
+<span class="sourceLineNo">4808</span>              store = getStore(cell);<a name="line.4808"></a>
+<span class="sourceLineNo">4809</span>            }<a name="line.4809"></a>
+<span class="sourceLineNo">4810</span>            if (store == null) {<a name="line.4810"></a>
+<span class="sourceLineNo">4811</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4811"></a>
+<span class="sourceLineNo">4812</span>              // crash and redeploy?<a name="line.4812"></a>
+<span class="sourceLineNo">4813</span>              LOG.warn("No family for " + cell);<a name="line.4813"></a>
+<span class="sourceLineNo">4814</span>              skippedEdits++;<a name="line.4814"></a>
+<span class="sourceLineNo">4815</span>              continue;<a name="line.4815"></a>
+<span class="sourceLineNo">4816</span>            }<a name="line.4816"></a>
+<span class="sourceLineNo">4817</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4817"></a>
+<span class="sourceLineNo">4818</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4818"></a>
+<span class="sourceLineNo">4819</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4819"></a>
+<span class="sourceLineNo">4820</span>              skippedEdits++;<a name="line.4820"></a>
+<span class="sourceLineNo">4821</span>              continue;<a name="line.4821"></a>
+<span class="sourceLineNo">4822</span>            }<a name="line.4822"></a>
+<span class="sourceLineNo">4823</span>            // Now, figure if we should skip this edit.<a name="line.4823"></a>
+<span class="sourceLineNo">4824</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4824"></a>
+<span class="sourceLineNo">4825</span>                .getName())) {<a name="line.4825"></a>
+<span class="sourceLineNo">4826</span>              skippedEdits++;<a name="line.4826"></a>
+<span class="sourceLineNo">4827</span>              continue;<a name="line.4827"></a>
+<span class="sourceLineNo">4828</span>            }<a name="line.4828"></a>
+<span class="sourceLineNo">4829</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4829"></a>
 <span class="sourceLineNo">4830</span><a name="line.4830"></a>
-<span class="sourceLineNo">4831</span>        if (coprocessorHost != null) {<a name="line.4831"></a>
-<span class="sourceLineNo">4832</span>          coprocessorHost.postReplayWALs(this.getRegionInfo(), edits);<a name="line.4832"></a>
-<span class="sourceLineNo">4833</span>        }<a name="line.4833"></a>
-<span class="sourceLineNo">4834</span>      } catch (EOFException eof) {<a name="line.4834"></a>
-<span class="sourceLineNo">4835</span>        Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4835"></a>
-<span class="sourceLineNo">4836</span>        msg = "EnLongAddered EOF. Most likely due to Master failure during " +<a name="line.4836"></a>
-<span class="sourceLineNo">4837</span>            "wal splitting, so we have this data in another edit.  " +<a name="line.4837"></a>
-<span class="sourceLineNo">4838</span>            "Continuing, but renaming " + edits + " as " + p;<a name="line.4838"></a>
-<span class="sourceLineNo">4839</span>        LOG.warn(msg, eof);<a name="line.4839"></a>
-<span class="sourceLineNo">4840</span>        status.abort(msg);<a name="line.4840"></a>
-<span class="sourceLineNo">4841</span>      } catch (IOException ioe) {<a name="line.4841"></a>
-<span class="sourceLineNo">4842</span>        // If the IOE resulted from bad file format,<a name="line.4842"></a>
-<span class="sourceLineNo">4843</span>        // then this problem is idempotent and retrying won't help<a name="line.4843"></a>
-<span class="sourceLineNo">4844</span>        if (ioe.getCause() instanceof ParseException) {<a name="line.4844"></a>
-<span class="sourceLineNo">4845</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4845"></a>
-<span class="sourceLineNo">4846</span>          msg = "File corruption enLongAddered!  " +<a name="line.4846"></a>
-<span class="sourceLineNo">4847</span>              "Continuing, but renaming " + edits + " as " + p;<a name="line.4847"></a>
-<span class="sourceLineNo">4848</span>          LOG.warn(msg, ioe);<a name="line.4848"></a>
-<span class="sourceLineNo">4849</span>          status.setStatus(msg);<a name="line.4849"></a>
-<span class="sourceLineNo">4850</span>        } else {<a name="line.4850"></a>
-<span class="sourceLineNo">4851</span>          status.abort(StringUtils.stringifyException(ioe));<a name="line.4851"></a>
-<span class="sourceLineNo">4852</span>          // other IO errors may be transient (bad network connection,<a name="line.4852"></a>
-<span class="sourceLineNo">4853</span>          // checksum exception on one datanode, etc).  throw &amp; retry<a name="line.4853"></a>
-<span class="sourceLineNo">4854</span>          throw ioe;<a name="line.4854"></a>
-<span class="sourceLineNo">4855</span>        }<a name="line.4855"></a>
-<span class="sourceLineNo">4856</span>      }<a name="line.4856"></a>
-<span class="sourceLineNo">4857</span>      if (reporter != null &amp;&amp; !reported_once) {<a name="line.4857"></a>
-<span class="sourceLineNo">4858</span>        reporter.progress();<a name="line.4858"></a>
-<span class="sourceLineNo">4859</span>      }<a name="line.4859"></a>
-<span class="sourceLineNo">4860</span>      msg = "Applied " + editsCount + ", skipped " + skippedEdits +<a name="line.4860"></a>
-<span class="sourceLineNo">4861</span>        ", firstSequenceIdInLog=" + firstSeqIdInLog +<a name="line.4861"></a>
-<span class="sourceLineNo">4862</span>        ", maxSequenceIdInLog=" + currentEditSeqId + ", path=" + edits;<a name="line.4862"></a>
-<span class="sourceLineNo">4863</span>      status.markComplete(msg);<a name="line.4863"></a>
-<span class="sourceLineNo">4864</span>      LOG.debug(msg);<a name="line.4864"></a>
-<span class="sourceLineNo">4865</span>      return currentEditSeqId;<a name="line.4865"></a>
-<span class="sourceLineNo">4866</span>    } finally {<a name="line.4866"></a>
-<span class="sourceLineNo">4867</span>      status.cleanup();<a name="line.4867"></a>
-<span class="sourceLineNo">4868</span>      if (reader != null) {<a name="line.4868"></a>
-<span class="sourceLineNo">4869</span>         reader.close();<a name="line.4869"></a>
-<span class="sourceLineNo">4870</span>      }<a name="line.4870"></a>
-<span class="sourceLineNo">4871</span>    }<a name="line.4871"></a>
-<span class="sourceLineNo">4872</span>  }<a name="line.4872"></a>
-<span class="sourceLineNo">4873</span><a name="line.4873"></a>
-<span class="sourceLineNo">4874</span>  /**<a name="line.4874"></a>
-<span class="sourceLineNo">4875</span>   * Call to complete a compaction. Its for the case where we find in the WAL a compaction<a name="line.4875"></a>
-<span class="sourceLineNo">4876</span>   * that was not finished.  We could find one recovering a WAL after a regionserver crash.<a name="line.4876"></a>
-<span class="sourceLineNo">4877</span>   * See HBASE-2331.<a name="line.4877"></a>
-<span class="sourceLineNo">4878</span>   */<a name="line.4878"></a>
-<span class="sourceLineNo">4879</span>  void replayWALCompactionMarker(CompactionDescriptor compaction, boolean pickCompactionFiles,<a name="line.4879"></a>
-<span class="sourceLineNo">4880</span>      boolean removeFiles, long replaySeqId)<a name="line.4880"></a>
-<span class="sourceLineNo">4881</span>      throws IOException {<a name="line.4881"></a>
-<span class="sourceLineNo">4882</span>    try {<a name="line.4882"></a>
-<span class="sourceLineNo">4883</span>      checkTargetRegion(compaction.getEncodedRegionName().toByteArray(),<a name="line.4883"></a>
-<span class="sourceLineNo">4884</span>        "Compaction marker from WAL ", compaction);<a name="line.4884"></a>
-<span class="sourceLineNo">4885</span>    } catch (WrongRegionException wre) {<a name="line.4885"></a>
-<span class="sourceLineNo">4886</span>      if (RegionReplicaUtil.isDefaultReplica(this.getRegionInfo())) {<a name="line.4886"></a>
-<span class="sourceLineNo">4887</span>        // skip the compaction marker since it is not for this region<a name="line.4887"></a>
-<span class="sourceLineNo">4888</span>        return;<a name="line.4888"></a>
-<span class="sourceLineNo">4889</span>      }<a name="line.4889"></a>
-<span class="sourceLineNo">4890</span>      throw wre;<a name="line.4890"></a>
-<span class="sourceLineNo">4891</span>    }<a name="line.4891"></a>
-<span class="sourceLineNo">4892</span><a name="line.4892"></a>
-<span class="sourceLineNo">4893</span>    synchronized (writestate) {<a name="line.4893"></a>
-<span class="sourceLineNo">4894</span>      if (replaySeqId &lt; lastReplayedOpenRegionSeqId) {<a name="line.4894"></a>
-<span class="sourceLineNo">4895</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4895"></a>
-<span class="sourceLineNo">4896</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4896"></a>
-<span class="sourceLineNo">4897</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4897"></a>
-<span class="sourceLineNo">4898</span>            + "lastReplayedOpenRegionSeqId of " + lastReplayedOpenRegionSeqId);<a name="line.4898"></a>
-<span class="sourceLineNo">4899</span>        return;<a name="line.4899"></a>
-<span class="sourceLineNo">4900</span>      }<a name="line.4900"></a>
-<span class="sourceLineNo">4901</span>      if (replaySeqId &lt; lastReplayedCompactionSeqId) {<a name="line.4901"></a>
-<span class="sourceLineNo">4902</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4902"></a>
-<span class="sourceLineNo">4903</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4903"></a>
-<span class="sourceLineNo">4904</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4904"></a>
-<span class="sourceLineNo">4905</span>            + "lastReplayedCompactionSeqId of " + lastReplayedCompactionSeqId);<a name="line.4905"></a>
-<span class="sourceLineNo">4906</span>        return;<a name="line.4906"></a>
-<span class="sourceLineNo">4907</span>      } else {<a name="line.4907"></a>
-<span class="sourceLineNo">4908</span>        lastReplayedCompactionSeqId = replaySeqId;<a name="line.4908"></a>
-<span class="sourceLineNo">4909</span>      }<a name="line.4909"></a>
-<span class

<TRUNCATED>

[25/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/src-html/org/apache/hadoop/hbase/client/HTable.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/HTable.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/HTable.html
index 00f0250..95d0370 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/HTable.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/HTable.html
@@ -495,813 +495,798 @@
 <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 void delete(final Delete delete)<a name="line.490"></a>
-<span class="sourceLineNo">491</span>  throws IOException {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    CancellableRegionServerCallable&lt;SingleResponse&gt; callable =<a name="line.492"></a>
-<span class="sourceLineNo">493</span>        new CancellableRegionServerCallable&lt;SingleResponse&gt;(<a name="line.493"></a>
-<span class="sourceLineNo">494</span>            connection, getName(), delete.getRow(), this.rpcControllerFactory.newController(),<a name="line.494"></a>
-<span class="sourceLineNo">495</span>            writeRpcTimeoutMs, new RetryingTimeTracker().start(), delete.getPriority()) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>      @Override<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      protected SingleResponse rpcCall() throws Exception {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>        MutateRequest request = RequestConverter.buildMutateRequest(<a name="line.498"></a>
-<span class="sourceLineNo">499</span>          getLocation().getRegionInfo().getRegionName(), delete);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        MutateResponse response = doMutate(request);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>        return ResponseConverter.getResult(request, response, getRpcControllerCellScanner());<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>    List&lt;Delete&gt; rows = Collections.singletonList(delete);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    AsyncProcessTask task = AsyncProcessTask.newBuilder()<a name="line.505"></a>
-<span class="sourceLineNo">506</span>            .setPool(pool)<a name="line.506"></a>
-<span class="sourceLineNo">507</span>            .setTableName(tableName)<a name="line.507"></a>
-<span class="sourceLineNo">508</span>            .setRowAccess(rows)<a name="line.508"></a>
-<span class="sourceLineNo">509</span>            .setCallable(callable)<a name="line.509"></a>
-<span class="sourceLineNo">510</span>            .setRpcTimeout(writeRpcTimeoutMs)<a name="line.510"></a>
-<span class="sourceLineNo">511</span>            .setOperationTimeout(operationTimeoutMs)<a name="line.511"></a>
-<span class="sourceLineNo">512</span>            .setSubmittedRows(AsyncProcessTask.SubmittedRows.ALL)<a name="line.512"></a>
-<span class="sourceLineNo">513</span>            .build();<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    AsyncRequestFuture ars = multiAp.submit(task);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    ars.waitUntilDone();<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    if (ars.hasError()) {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      throw ars.getErrors();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    }<a name="line.518"></a>
-<span class="sourceLineNo">519</span>  }<a name="line.519"></a>
-<span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span>  @Override<a name="line.521"></a>
-<span class="sourceLineNo">522</span>  public void delete(final List&lt;Delete&gt; deletes)<a name="line.522"></a>
-<span class="sourceLineNo">523</span>  throws IOException {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    Object[] results = new Object[deletes.size()];<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    try {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>      batch(deletes, results, writeRpcTimeoutMs);<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    } catch (InterruptedException e) {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>      throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    } finally {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      // TODO: to be consistent with batch put(), do not modify input list<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      // mutate list so that it is empty for complete success, or contains only failed records<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      // results are returned in the same order as the requests in list walk the list backwards,<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      // so we can remove from list without impacting the indexes of earlier members<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      for (int i = results.length - 1; i&gt;=0; i--) {<a name="line.534"></a>
-<span class="sourceLineNo">535</span>        // if result is not null, it succeeded<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        if (results[i] instanceof Result) {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>          deletes.remove(i);<a name="line.537"></a>
-<span class="sourceLineNo">538</span>        }<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      }<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    }<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  }<a name="line.541"></a>
-<span class="sourceLineNo">542</span><a name="line.542"></a>
-<span class="sourceLineNo">543</span>  @Override<a name="line.543"></a>
-<span class="sourceLineNo">544</span>  public void put(final Put put) throws IOException {<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    validatePut(put);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    ClientServiceCallable&lt;Void&gt; callable =<a name="line.546"></a>
-<span class="sourceLineNo">547</span>        new ClientServiceCallable&lt;Void&gt;(this.connection, getName(), put.getRow(),<a name="line.547"></a>
-<span class="sourceLineNo">548</span>            this.rpcControllerFactory.newController(), put.getPriority()) {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      @Override<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      protected Void rpcCall() throws Exception {<a name="line.550"></a>
-<span class="sourceLineNo">551</span>        MutateRequest request =<a name="line.551"></a>
-<span class="sourceLineNo">552</span>            RequestConverter.buildMutateRequest(getLocation().getRegionInfo().getRegionName(), put);<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        doMutate(request);<a name="line.553"></a>
-<span class="sourceLineNo">554</span>        return null;<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    };<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    rpcCallerFactory.&lt;Void&gt; newCaller(this.writeRpcTimeoutMs).callWithRetries(callable,<a name="line.557"></a>
-<span class="sourceLineNo">558</span>        this.operationTimeoutMs);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>  }<a name="line.559"></a>
-<span class="sourceLineNo">560</span><a name="line.560"></a>
-<span class="sourceLineNo">561</span>  @Override<a name="line.561"></a>
-<span class="sourceLineNo">562</span>  public void put(final List&lt;Put&gt; puts) throws IOException {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    for (Put put : puts) {<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      validatePut(put);<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    }<a name="line.565"></a>
-<span class="sourceLineNo">566</span>    Object[] results = new Object[puts.size()];<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    try {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      batch(puts, results, writeRpcTimeoutMs);<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    } catch (InterruptedException e) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      throw (InterruptedIOException) new InterruptedIOException().initCause(e);<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    }<a name="line.571"></a>
-<span class="sourceLineNo">572</span>  }<a name="line.572"></a>
-<span class="sourceLineNo">573</span><a name="line.573"></a>
-<span class="sourceLineNo">574</span>  @Override<a name="line.574"></a>
-<span class="sourceLineNo">575</span>  public void mutateRow(final RowMutations rm) throws IOException {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    CancellableRegionServerCallable&lt;MultiResponse&gt; callable =<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      new CancellableRegionServerCallable&lt;MultiResponse&gt;(this.connection, getName(), rm.getRow(),<a name="line.577"></a>
-<span class="sourceLineNo">578</span>          rpcControllerFactory.newController(), writeRpcTimeoutMs,<a name="line.578"></a>
-<span class="sourceLineNo">579</span>          new RetryingTimeTracker().start(), rm.getMaxPriority()) {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      @Override<a name="line.580"></a>
-<span class="sourceLineNo">581</span>      protected MultiResponse rpcCall() throws Exception {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>        RegionAction.Builder regionMutationBuilder = RequestConverter.buildRegionAction(<a name="line.582"></a>
-<span class="sourceLineNo">583</span>            getLocation().getRegionInfo().getRegionName(), rm);<a name="line.583"></a>
-<span class="sourceLineNo">584</span>        regionMutationBuilder.setAtomic(true);<a name="line.584"></a>
-<span class="sourceLineNo">585</span>        MultiRequest request =<a name="line.585"></a>
-<span class="sourceLineNo">586</span>            MultiRequest.newBuilder().addRegionAction(regionMutationBuilder.build()).build();<a name="line.586"></a>
-<span class="sourceLineNo">587</span>        ClientProtos.MultiResponse response = doMulti(request);<a name="line.587"></a>
-<span class="sourceLineNo">588</span>        ClientProtos.RegionActionResult res = response.getRegionActionResultList().get(0);<a name="line.588"></a>
-<span class="sourceLineNo">589</span>        if (res.hasException()) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>          Throwable ex = ProtobufUtil.toException(res.getException());<a name="line.590"></a>
-<span class="sourceLineNo">591</span>          if (ex instanceof IOException) {<a name="line.591"></a>
-<span class="sourceLineNo">592</span>            throw (IOException) ex;<a name="line.592"></a>
-<span class="sourceLineNo">593</span>          }<a name="line.593"></a>
-<span class="sourceLineNo">594</span>          throw new IOException("Failed to mutate row: " + Bytes.toStringBinary(rm.getRow()), ex);<a name="line.594"></a>
-<span class="sourceLineNo">595</span>        }<a name="line.595"></a>
-<span class="sourceLineNo">596</span>        return ResponseConverter.getResults(request, response, getRpcControllerCellScanner());<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>    AsyncProcessTask task = AsyncProcessTask.newBuilder()<a name="line.599"></a>
-<span class="sourceLineNo">600</span>            .setPool(pool)<a name="line.600"></a>
-<span class="sourceLineNo">601</span>            .setTableName(tableName)<a name="line.601"></a>
-<span class="sourceLineNo">602</span>            .setRowAccess(rm.getMutations())<a name="line.602"></a>
-<span class="sourceLineNo">603</span>            .setCallable(callable)<a name="line.603"></a>
-<span class="sourceLineNo">604</span>            .setRpcTimeout(writeRpcTimeoutMs)<a name="line.604"></a>
-<span class="sourceLineNo">605</span>            .setOperationTimeout(operationTimeoutMs)<a name="line.605"></a>
-<span class="sourceLineNo">606</span>            .setSubmittedRows(AsyncProcessTask.SubmittedRows.ALL)<a name="line.606"></a>
-<span class="sourceLineNo">607</span>            .build();<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    AsyncRequestFuture ars = multiAp.submit(task);<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    ars.waitUntilDone();<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    if (ars.hasError()) {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>      throw ars.getErrors();<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><a name="line.614"></a>
-<span class="sourceLineNo">615</span>  @Override<a name="line.615"></a>
-<span class="sourceLineNo">616</span>  public Result append(final Append append) throws IOException {<a name="line.616"></a>
-<span class="sourceLineNo">617</span>    checkHasFamilies(append);<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    NoncedRegionServerCallable&lt;Result&gt; callable =<a name="line.618"></a>
-<span class="sourceLineNo">619</span>        new NoncedRegionServerCallable&lt;Result&gt;(this.connection, getName(), append.getRow(),<a name="line.619"></a>
-<span class="sourceLineNo">620</span>            this.rpcControllerFactory.newController(), append.getPriority()) {<a name="line.620"></a>
-<span class="sourceLineNo">621</span>      @Override<a name="line.621"></a>
-<span class="sourceLineNo">622</span>      protected Result rpcCall() throws Exception {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>        MutateRequest request = RequestConverter.buildMutateRequest(<a name="line.623"></a>
-<span class="sourceLineNo">624</span>          getLocation().getRegionInfo().getRegionName(), append, getNonceGroup(), getNonce());<a name="line.624"></a>
-<span class="sourceLineNo">625</span>        MutateResponse response = doMutate(request);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>        if (!response.hasResult()) return null;<a name="line.626"></a>
-<span class="sourceLineNo">627</span>        return ProtobufUtil.toResult(response.getResult(), getRpcControllerCellScanner());<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      }<a name="line.628"></a>
-<span class="sourceLineNo">629</span>    };<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    return rpcCallerFactory.&lt;Result&gt; newCaller(this.writeRpcTimeoutMs).<a name="line.630"></a>
-<span class="sourceLineNo">631</span>        callWithRetries(callable, this.operationTimeoutMs);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>  }<a name="line.632"></a>
-<span class="sourceLineNo">633</span><a name="line.633"></a>
-<span class="sourceLineNo">634</span>  @Override<a name="line.634"></a>
-<span class="sourceLineNo">635</span>  public Result increment(final Increment increment) throws IOException {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    checkHasFamilies(increment);<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    NoncedRegionServerCallable&lt;Result&gt; callable =<a name="line.637"></a>
-<span class="sourceLineNo">638</span>        new NoncedRegionServerCallable&lt;Result&gt;(this.connection, getName(), increment.getRow(),<a name="line.638"></a>
-<span class="sourceLineNo">639</span>            this.rpcControllerFactory.newController(), increment.getPriority()) {<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      @Override<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      protected Result rpcCall() throws Exception {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>        MutateRequest request = RequestConverter.buildMutateRequest(<a name="line.642"></a>
-<span class="sourceLineNo">643</span>          getLocation().getRegionInfo().getRegionName(), increment, getNonceGroup(), getNonce());<a name="line.643"></a>
-<span class="sourceLineNo">644</span>        MutateResponse response = doMutate(request);<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        // Should this check for null like append does?<a name="line.645"></a>
-<span class="sourceLineNo">646</span>        return ProtobufUtil.toResult(response.getResult(), getRpcControllerCellScanner());<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      }<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    };<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    return rpcCallerFactory.&lt;Result&gt; newCaller(writeRpcTimeoutMs).callWithRetries(callable,<a name="line.649"></a>
-<span class="sourceLineNo">650</span>        this.operationTimeoutMs);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>  }<a name="line.651"></a>
-<span class="sourceLineNo">652</span><a name="line.652"></a>
-<span class="sourceLineNo">653</span>  @Override<a name="line.653"></a>
-<span class="sourceLineNo">654</span>  public long incrementColumnValue(final byte [] row, final byte [] family,<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      final byte [] qualifier, final long amount)<a name="line.655"></a>
-<span class="sourceLineNo">656</span>  throws IOException {<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    return incrementColumnValue(row, family, qualifier, amount, Durability.SYNC_WAL);<a name="line.657"></a>
-<span class="sourceLineNo">658</span>  }<a name="line.658"></a>
+<span class="sourceLineNo">490</span>  public void delete(final Delete delete) throws IOException {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    ClientServiceCallable&lt;Void&gt; callable =<a name="line.491"></a>
+<span class="sourceLineNo">492</span>        new ClientServiceCallable&lt;Void&gt;(this.connection, getName(), delete.getRow(),<a name="line.492"></a>
+<span class="sourceLineNo">493</span>            this.rpcControllerFactory.newController(), delete.getPriority()) {<a name="line.493"></a>
+<span class="sourceLineNo">494</span>      @Override<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      protected Void rpcCall() throws Exception {<a name="line.495"></a>
+<span class="sourceLineNo">496</span>        MutateRequest request = RequestConverter<a name="line.496"></a>
+<span class="sourceLineNo">497</span>            .buildMutateRequest(getLocation().getRegionInfo().getRegionName(), delete);<a name="line.497"></a>
+<span class="sourceLineNo">498</span>        doMutate(request);<a name="line.498"></a>
+<span class="sourceLineNo">499</span>        return null;<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      }<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    };<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    rpcCallerFactory.&lt;Void&gt;newCaller(this.writeRpcTimeoutMs)<a name="line.502"></a>
+<span class="sourceLineNo">503</span>        .callWithRetries(callable, this.operationTimeoutMs);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>  }<a name="line.504"></a>
+<span class="sourceLineNo">505</span><a name="line.505"></a>
+<span class="sourceLineNo">506</span>  @Override<a name="line.506"></a>
+<span class="sourceLineNo">507</span>  public void delete(final List&lt;Delete&gt; deletes)<a name="line.507"></a>
+<span class="sourceLineNo">508</span>  throws IOException {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    Object[] results = new Object[deletes.size()];<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    try {<a name="line.510"></a>
+<span class="sourceLineNo">511</span>      batch(deletes, results, writeRpcTimeoutMs);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    } catch (InterruptedException e) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>      throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    } finally {<a name="line.514"></a>
+<span class="sourceLineNo">515</span>      // TODO: to be consistent with batch put(), do not modify input list<a name="line.515"></a>
+<span class="sourceLineNo">516</span>      // mutate list so that it is empty for complete success, or contains only failed records<a name="line.516"></a>
+<span class="sourceLineNo">517</span>      // results are returned in the same order as the requests in list walk the list backwards,<a name="line.517"></a>
+<span class="sourceLineNo">518</span>      // so we can remove from list without impacting the indexes of earlier members<a name="line.518"></a>
+<span class="sourceLineNo">519</span>      for (int i = results.length - 1; i&gt;=0; i--) {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>        // if result is not null, it succeeded<a name="line.520"></a>
+<span class="sourceLineNo">521</span>        if (results[i] instanceof Result) {<a name="line.521"></a>
+<span class="sourceLineNo">522</span>          deletes.remove(i);<a name="line.522"></a>
+<span class="sourceLineNo">523</span>        }<a name="line.523"></a>
+<span class="sourceLineNo">524</span>      }<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
+<span class="sourceLineNo">526</span>  }<a name="line.526"></a>
+<span class="sourceLineNo">527</span><a name="line.527"></a>
+<span class="sourceLineNo">528</span>  @Override<a name="line.528"></a>
+<span class="sourceLineNo">529</span>  public void put(final Put put) throws IOException {<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    validatePut(put);<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    ClientServiceCallable&lt;Void&gt; callable =<a name="line.531"></a>
+<span class="sourceLineNo">532</span>        new ClientServiceCallable&lt;Void&gt;(this.connection, getName(), put.getRow(),<a name="line.532"></a>
+<span class="sourceLineNo">533</span>            this.rpcControllerFactory.newController(), put.getPriority()) {<a name="line.533"></a>
+<span class="sourceLineNo">534</span>      @Override<a name="line.534"></a>
+<span class="sourceLineNo">535</span>      protected Void rpcCall() throws Exception {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>        MutateRequest request =<a name="line.536"></a>
+<span class="sourceLineNo">537</span>            RequestConverter.buildMutateRequest(getLocation().getRegionInfo().getRegionName(), put);<a name="line.537"></a>
+<span class="sourceLineNo">538</span>        doMutate(request);<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        return null;<a name="line.539"></a>
+<span class="sourceLineNo">540</span>      }<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    };<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    rpcCallerFactory.&lt;Void&gt; newCaller(this.writeRpcTimeoutMs).callWithRetries(callable,<a name="line.542"></a>
+<span class="sourceLineNo">543</span>        this.operationTimeoutMs);<a name="line.543"></a>
+<span class="sourceLineNo">544</span>  }<a name="line.544"></a>
+<span class="sourceLineNo">545</span><a name="line.545"></a>
+<span class="sourceLineNo">546</span>  @Override<a name="line.546"></a>
+<span class="sourceLineNo">547</span>  public void put(final List&lt;Put&gt; puts) throws IOException {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    for (Put put : puts) {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      validatePut(put);<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    }<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    Object[] results = new Object[puts.size()];<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    try {<a name="line.552"></a>
+<span class="sourceLineNo">553</span>      batch(puts, results, writeRpcTimeoutMs);<a name="line.553"></a>
+<span class="sourceLineNo">554</span>    } catch (InterruptedException e) {<a name="line.554"></a>
+<span class="sourceLineNo">555</span>      throw (InterruptedIOException) new InterruptedIOException().initCause(e);<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    }<a name="line.556"></a>
+<span class="sourceLineNo">557</span>  }<a name="line.557"></a>
+<span class="sourceLineNo">558</span><a name="line.558"></a>
+<span class="sourceLineNo">559</span>  @Override<a name="line.559"></a>
+<span class="sourceLineNo">560</span>  public void mutateRow(final RowMutations rm) throws IOException {<a name="line.560"></a>
+<span class="sourceLineNo">561</span>    CancellableRegionServerCallable&lt;MultiResponse&gt; callable =<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      new CancellableRegionServerCallable&lt;MultiResponse&gt;(this.connection, getName(), rm.getRow(),<a name="line.562"></a>
+<span class="sourceLineNo">563</span>          rpcControllerFactory.newController(), writeRpcTimeoutMs,<a name="line.563"></a>
+<span class="sourceLineNo">564</span>          new RetryingTimeTracker().start(), rm.getMaxPriority()) {<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      @Override<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      protected MultiResponse rpcCall() throws Exception {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>        RegionAction.Builder regionMutationBuilder = RequestConverter.buildRegionAction(<a name="line.567"></a>
+<span class="sourceLineNo">568</span>            getLocation().getRegionInfo().getRegionName(), rm);<a name="line.568"></a>
+<span class="sourceLineNo">569</span>        regionMutationBuilder.setAtomic(true);<a name="line.569"></a>
+<span class="sourceLineNo">570</span>        MultiRequest request =<a name="line.570"></a>
+<span class="sourceLineNo">571</span>            MultiRequest.newBuilder().addRegionAction(regionMutationBuilder.build()).build();<a name="line.571"></a>
+<span class="sourceLineNo">572</span>        ClientProtos.MultiResponse response = doMulti(request);<a name="line.572"></a>
+<span class="sourceLineNo">573</span>        ClientProtos.RegionActionResult res = response.getRegionActionResultList().get(0);<a name="line.573"></a>
+<span class="sourceLineNo">574</span>        if (res.hasException()) {<a name="line.574"></a>
+<span class="sourceLineNo">575</span>          Throwable ex = ProtobufUtil.toException(res.getException());<a name="line.575"></a>
+<span class="sourceLineNo">576</span>          if (ex instanceof IOException) {<a name="line.576"></a>
+<span class="sourceLineNo">577</span>            throw (IOException) ex;<a name="line.577"></a>
+<span class="sourceLineNo">578</span>          }<a name="line.578"></a>
+<span class="sourceLineNo">579</span>          throw new IOException("Failed to mutate row: " + Bytes.toStringBinary(rm.getRow()), ex);<a name="line.579"></a>
+<span class="sourceLineNo">580</span>        }<a name="line.580"></a>
+<span class="sourceLineNo">581</span>        return ResponseConverter.getResults(request, response, getRpcControllerCellScanner());<a name="line.581"></a>
+<span class="sourceLineNo">582</span>      }<a name="line.582"></a>
+<span class="sourceLineNo">583</span>    };<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    AsyncProcessTask task = AsyncProcessTask.newBuilder()<a name="line.584"></a>
+<span class="sourceLineNo">585</span>            .setPool(pool)<a name="line.585"></a>
+<span class="sourceLineNo">586</span>            .setTableName(tableName)<a name="line.586"></a>
+<span class="sourceLineNo">587</span>            .setRowAccess(rm.getMutations())<a name="line.587"></a>
+<span class="sourceLineNo">588</span>            .setCallable(callable)<a name="line.588"></a>
+<span class="sourceLineNo">589</span>            .setRpcTimeout(writeRpcTimeoutMs)<a name="line.589"></a>
+<span class="sourceLineNo">590</span>            .setOperationTimeout(operationTimeoutMs)<a name="line.590"></a>
+<span class="sourceLineNo">591</span>            .setSubmittedRows(AsyncProcessTask.SubmittedRows.ALL)<a name="line.591"></a>
+<span class="sourceLineNo">592</span>            .build();<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    AsyncRequestFuture ars = multiAp.submit(task);<a name="line.593"></a>
+<span class="sourceLineNo">594</span>    ars.waitUntilDone();<a name="line.594"></a>
+<span class="sourceLineNo">595</span>    if (ars.hasError()) {<a name="line.595"></a>
+<span class="sourceLineNo">596</span>      throw ars.getErrors();<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>  @Override<a name="line.600"></a>
+<span class="sourceLineNo">601</span>  public Result append(final Append append) throws IOException {<a name="line.601"></a>
+<span class="sourceLineNo">602</span>    checkHasFamilies(append);<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    NoncedRegionServerCallable&lt;Result&gt; callable =<a name="line.603"></a>
+<span class="sourceLineNo">604</span>        new NoncedRegionServerCallable&lt;Result&gt;(this.connection, getName(), append.getRow(),<a name="line.604"></a>
+<span class="sourceLineNo">605</span>            this.rpcControllerFactory.newController(), append.getPriority()) {<a name="line.605"></a>
+<span class="sourceLineNo">606</span>      @Override<a name="line.606"></a>
+<span class="sourceLineNo">607</span>      protected Result rpcCall() throws Exception {<a name="line.607"></a>
+<span class="sourceLineNo">608</span>        MutateRequest request = RequestConverter.buildMutateRequest(<a name="line.608"></a>
+<span class="sourceLineNo">609</span>          getLocation().getRegionInfo().getRegionName(), append, getNonceGroup(), getNonce());<a name="line.609"></a>
+<span class="sourceLineNo">610</span>        MutateResponse response = doMutate(request);<a name="line.610"></a>
+<span class="sourceLineNo">611</span>        if (!response.hasResult()) return null;<a name="line.611"></a>
+<span class="sourceLineNo">612</span>        return ProtobufUtil.toResult(response.getResult(), getRpcControllerCellScanner());<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      }<a name="line.613"></a>
+<span class="sourceLineNo">614</span>    };<a name="line.614"></a>
+<span class="sourceLineNo">615</span>    return rpcCallerFactory.&lt;Result&gt; newCaller(this.writeRpcTimeoutMs).<a name="line.615"></a>
+<span class="sourceLineNo">616</span>        callWithRetries(callable, this.operationTimeoutMs);<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>  @Override<a name="line.619"></a>
+<span class="sourceLineNo">620</span>  public Result increment(final Increment increment) throws IOException {<a name="line.620"></a>
+<span class="sourceLineNo">621</span>    checkHasFamilies(increment);<a name="line.621"></a>
+<span class="sourceLineNo">622</span>    NoncedRegionServerCallable&lt;Result&gt; callable =<a name="line.622"></a>
+<span class="sourceLineNo">623</span>        new NoncedRegionServerCallable&lt;Result&gt;(this.connection, getName(), increment.getRow(),<a name="line.623"></a>
+<span class="sourceLineNo">624</span>            this.rpcControllerFactory.newController(), increment.getPriority()) {<a name="line.624"></a>
+<span class="sourceLineNo">625</span>      @Override<a name="line.625"></a>
+<span class="sourceLineNo">626</span>      protected Result rpcCall() throws Exception {<a name="line.626"></a>
+<span class="sourceLineNo">627</span>        MutateRequest request = RequestConverter.buildMutateRequest(<a name="line.627"></a>
+<span class="sourceLineNo">628</span>          getLocation().getRegionInfo().getRegionName(), increment, getNonceGroup(), getNonce());<a name="line.628"></a>
+<span class="sourceLineNo">629</span>        MutateResponse response = doMutate(request);<a name="line.629"></a>
+<span class="sourceLineNo">630</span>        // Should this check for null like append does?<a name="line.630"></a>
+<span class="sourceLineNo">631</span>        return ProtobufUtil.toResult(response.getResult(), getRpcControllerCellScanner());<a name="line.631"></a>
+<span class="sourceLineNo">632</span>      }<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    };<a name="line.633"></a>
+<span class="sourceLineNo">634</span>    return rpcCallerFactory.&lt;Result&gt; newCaller(writeRpcTimeoutMs).callWithRetries(callable,<a name="line.634"></a>
+<span class="sourceLineNo">635</span>        this.operationTimeoutMs);<a name="line.635"></a>
+<span class="sourceLineNo">636</span>  }<a name="line.636"></a>
+<span class="sourceLineNo">637</span><a name="line.637"></a>
+<span class="sourceLineNo">638</span>  @Override<a name="line.638"></a>
+<span class="sourceLineNo">639</span>  public long incrementColumnValue(final byte [] row, final byte [] family,<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      final byte [] qualifier, final long amount)<a name="line.640"></a>
+<span class="sourceLineNo">641</span>  throws IOException {<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    return incrementColumnValue(row, family, qualifier, amount, Durability.SYNC_WAL);<a name="line.642"></a>
+<span class="sourceLineNo">643</span>  }<a name="line.643"></a>
+<span class="sourceLineNo">644</span><a name="line.644"></a>
+<span class="sourceLineNo">645</span>  @Override<a name="line.645"></a>
+<span class="sourceLineNo">646</span>  public long incrementColumnValue(final byte [] row, final byte [] family,<a name="line.646"></a>
+<span class="sourceLineNo">647</span>      final byte [] qualifier, final long amount, final Durability durability)<a name="line.647"></a>
+<span class="sourceLineNo">648</span>  throws IOException {<a name="line.648"></a>
+<span class="sourceLineNo">649</span>    NullPointerException npe = null;<a name="line.649"></a>
+<span class="sourceLineNo">650</span>    if (row == null) {<a name="line.650"></a>
+<span class="sourceLineNo">651</span>      npe = new NullPointerException("row is null");<a name="line.651"></a>
+<span class="sourceLineNo">652</span>    } else if (family == null) {<a name="line.652"></a>
+<span class="sourceLineNo">653</span>      npe = new NullPointerException("family is null");<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    }<a name="line.654"></a>
+<span class="sourceLineNo">655</span>    if (npe != null) {<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      throw new IOException(<a name="line.656"></a>
+<span class="sourceLineNo">657</span>          "Invalid arguments to incrementColumnValue", npe);<a name="line.657"></a>
+<span class="sourceLineNo">658</span>    }<a name="line.658"></a>
 <span class="sourceLineNo">659</span><a name="line.659"></a>
-<span class="sourceLineNo">660</span>  @Override<a name="line.660"></a>
-<span class="sourceLineNo">661</span>  public long incrementColumnValue(final byte [] row, final byte [] family,<a name="line.661"></a>
-<span class="sourceLineNo">662</span>      final byte [] qualifier, final long amount, final Durability durability)<a name="line.662"></a>
-<span class="sourceLineNo">663</span>  throws IOException {<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    NullPointerException npe = null;<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    if (row == null) {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      npe = new NullPointerException("row is null");<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    } else if (family == null) {<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      npe = new NullPointerException("family is null");<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    }<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    if (npe != null) {<a name="line.670"></a>
-<span class="sourceLineNo">671</span>      throw new IOException(<a name="line.671"></a>
-<span class="sourceLineNo">672</span>          "Invalid arguments to incrementColumnValue", npe);<a name="line.672"></a>
-<span class="sourceLineNo">673</span>    }<a name="line.673"></a>
-<span class="sourceLineNo">674</span><a name="line.674"></a>
-<span class="sourceLineNo">675</span>    NoncedRegionServerCallable&lt;Long&gt; callable =<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        new NoncedRegionServerCallable&lt;Long&gt;(this.connection, getName(), row,<a name="line.676"></a>
-<span class="sourceLineNo">677</span>            this.rpcControllerFactory.newController(), HConstants.PRIORITY_UNSET) {<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      @Override<a name="line.678"></a>
-<span class="sourceLineNo">679</span>      protected Long rpcCall() throws Exception {<a name="line.679"></a>
-<span class="sourceLineNo">680</span>        MutateRequest request = RequestConverter.buildIncrementRequest(<a name="line.680"></a>
-<span class="sourceLineNo">681</span>          getLocation().getRegionInfo().getRegionName(), row, family,<a name="line.681"></a>
-<span class="sourceLineNo">682</span>          qualifier, amount, durability, getNonceGroup(), getNonce());<a name="line.682"></a>
-<span class="sourceLineNo">683</span>        MutateResponse response = doMutate(request);<a name="line.683"></a>
-<span class="sourceLineNo">684</span>        Result result = ProtobufUtil.toResult(response.getResult(), getRpcControllerCellScanner());<a name="line.684"></a>
-<span class="sourceLineNo">685</span>        return Long.valueOf(Bytes.toLong(result.getValue(family, qualifier)));<a name="line.685"></a>
-<span class="sourceLineNo">686</span>      }<a name="line.686"></a>
-<span class="sourceLineNo">687</span>    };<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    return rpcCallerFactory.&lt;Long&gt; newCaller(this.writeRpcTimeoutMs).<a name="line.688"></a>
-<span class="sourceLineNo">689</span>        callWithRetries(callable, this.operationTimeoutMs);<a name="line.689"></a>
-<span class="sourceLineNo">690</span>  }<a name="line.690"></a>
-<span class="sourceLineNo">691</span><a name="line.691"></a>
-<span class="sourceLineNo">692</span>  @Override<a name="line.692"></a>
-<span class="sourceLineNo">693</span>  @Deprecated<a name="line.693"></a>
-<span class="sourceLineNo">694</span>  public boolean checkAndPut(final byte [] row, final byte [] family, final byte [] qualifier,<a name="line.694"></a>
-<span class="sourceLineNo">695</span>      final byte [] value, final Put put) throws IOException {<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    return doCheckAndPut(row, family, qualifier, CompareOperator.EQUAL.name(), value, null, put);<a name="line.696"></a>
-<span class="sourceLineNo">697</span>  }<a name="line.697"></a>
-<span class="sourceLineNo">698</span><a name="line.698"></a>
-<span class="sourceLineNo">699</span>  @Override<a name="line.699"></a>
-<span class="sourceLineNo">700</span>  @Deprecated<a name="line.700"></a>
-<span class="sourceLineNo">701</span>  public boolean checkAndPut(final byte [] row, final byte [] family, final byte [] qualifier,<a name="line.701"></a>
-<span class="sourceLineNo">702</span>      final CompareOp compareOp, final byte [] value, final Put put) throws IOException {<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    return doCheckAndPut(row, family, qualifier, compareOp.name(), value, null, put);<a name="line.703"></a>
-<span class="sourceLineNo">704</span>  }<a name="line.704"></a>
-<span class="sourceLineNo">705</span><a name="line.705"></a>
-<span class="sourceLineNo">706</span>  @Override<a name="line.706"></a>
-<span class="sourceLineNo">707</span>  @Deprecated<a name="line.707"></a>
-<span class="sourceLineNo">708</span>  public boolean checkAndPut(final byte [] row, final byte [] family, final byte [] qualifier,<a name="line.708"></a>
-<span class="sourceLineNo">709</span>      final CompareOperator op, final byte [] value, final Put put) throws IOException {<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    // The name of the operators in CompareOperator are intentionally those of the<a name="line.710"></a>
-<span class="sourceLineNo">711</span>    // operators in the filter's CompareOp enum.<a name="line.711"></a>
-<span class="sourceLineNo">712</span>    return doCheckAndPut(row, family, qualifier, op.name(), value, null, put);<a name="line.712"></a>
-<span class="sourceLineNo">713</span>  }<a name="line.713"></a>
-<span class="sourceLineNo">714</span><a name="line.714"></a>
-<span class="sourceLineNo">715</span>  private boolean doCheckAndPut(final byte[] row, final byte[] family, final byte[] qualifier,<a name="line.715"></a>
-<span class="sourceLineNo">716</span>    final String opName, final byte[] value, final TimeRange timeRange, final Put put)<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    throws IOException {<a name="line.717"></a>
-<span class="sourceLineNo">718</span>    ClientServiceCallable&lt;Boolean&gt; callable =<a name="line.718"></a>
-<span class="sourceLineNo">719</span>        new ClientServiceCallable&lt;Boolean&gt;(this.connection, getName(), row,<a name="line.719"></a>
-<span class="sourceLineNo">720</span>            this.rpcControllerFactory.newController(), put.getPriority()) {<a name="line.720"></a>
-<span class="sourceLineNo">721</span>      @Override<a name="line.721"></a>
-<span class="sourceLineNo">722</span>      protected Boolean rpcCall() throws Exception {<a name="line.722"></a>
-<span class="sourceLineNo">723</span>        CompareType compareType = CompareType.valueOf(opName);<a name="line.723"></a>
-<span class="sourceLineNo">724</span>        MutateRequest request = RequestConverter.buildMutateRequest(<a name="line.724"></a>
-<span class="sourceLineNo">725</span>            getLocation().getRegionInfo().getRegionName(), row, family, qualifier,<a name="line.725"></a>
-<span class="sourceLineNo">726</span>            new BinaryComparator(value), compareType, timeRange, put);<a name="line.726"></a>
-<span class="sourceLineNo">727</span>        MutateResponse response = doMutate(request);<a name="line.727"></a>
-<span class="sourceLineNo">728</span>        return Boolean.valueOf(response.getProcessed());<a name="line.728"></a>
-<span class="sourceLineNo">729</span>      }<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    };<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    return rpcCallerFactory.&lt;Boolean&gt; newCaller(this.writeRpcTimeoutMs)<a name="line.731"></a>
-<span class="sourceLineNo">732</span>        .callWithRetries(callable, this.operationTimeoutMs);<a name="line.732"></a>
+<span class="sourceLineNo">660</span>    NoncedRegionServerCallable&lt;Long&gt; callable =<a name="line.660"></a>
+<span class="sourceLineNo">661</span>        new NoncedRegionServerCallable&lt;Long&gt;(this.connection, getName(), row,<a name="line.661"></a>
+<span class="sourceLineNo">662</span>            this.rpcControllerFactory.newController(), HConstants.PRIORITY_UNSET) {<a name="line.662"></a>
+<span class="sourceLineNo">663</span>      @Override<a name="line.663"></a>
+<span class="sourceLineNo">664</span>      protected Long rpcCall() throws Exception {<a name="line.664"></a>
+<span class="sourceLineNo">665</span>        MutateRequest request = RequestConverter.buildIncrementRequest(<a name="line.665"></a>
+<span class="sourceLineNo">666</span>          getLocation().getRegionInfo().getRegionName(), row, family,<a name="line.666"></a>
+<span class="sourceLineNo">667</span>          qualifier, amount, durability, getNonceGroup(), getNonce());<a name="line.667"></a>
+<span class="sourceLineNo">668</span>        MutateResponse response = doMutate(request);<a name="line.668"></a>
+<span class="sourceLineNo">669</span>        Result result = ProtobufUtil.toResult(response.getResult(), getRpcControllerCellScanner());<a name="line.669"></a>
+<span class="sourceLineNo">670</span>        return Long.valueOf(Bytes.toLong(result.getValue(family, qualifier)));<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>    return rpcCallerFactory.&lt;Long&gt; newCaller(this.writeRpcTimeoutMs).<a name="line.673"></a>
+<span class="sourceLineNo">674</span>        callWithRetries(callable, this.operationTimeoutMs);<a name="line.674"></a>
+<span class="sourceLineNo">675</span>  }<a name="line.675"></a>
+<span class="sourceLineNo">676</span><a name="line.676"></a>
+<span class="sourceLineNo">677</span>  @Override<a name="line.677"></a>
+<span class="sourceLineNo">678</span>  @Deprecated<a name="line.678"></a>
+<span class="sourceLineNo">679</span>  public boolean checkAndPut(final byte [] row, final byte [] family, final byte [] qualifier,<a name="line.679"></a>
+<span class="sourceLineNo">680</span>      final byte [] value, final Put put) throws IOException {<a name="line.680"></a>
+<span class="sourceLineNo">681</span>    return doCheckAndPut(row, family, qualifier, CompareOperator.EQUAL.name(), value, null, put);<a name="line.681"></a>
+<span class="sourceLineNo">682</span>  }<a name="line.682"></a>
+<span class="sourceLineNo">683</span><a name="line.683"></a>
+<span class="sourceLineNo">684</span>  @Override<a name="line.684"></a>
+<span class="sourceLineNo">685</span>  @Deprecated<a name="line.685"></a>
+<span class="sourceLineNo">686</span>  public boolean checkAndPut(final byte [] row, final byte [] family, final byte [] qualifier,<a name="line.686"></a>
+<span class="sourceLineNo">687</span>      final CompareOp compareOp, final byte [] value, final Put put) throws IOException {<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    return doCheckAndPut(row, family, qualifier, compareOp.name(), value, null, put);<a name="line.688"></a>
+<span class="sourceLineNo">689</span>  }<a name="line.689"></a>
+<span class="sourceLineNo">690</span><a name="line.690"></a>
+<span class="sourceLineNo">691</span>  @Override<a name="line.691"></a>
+<span class="sourceLineNo">692</span>  @Deprecated<a name="line.692"></a>
+<span class="sourceLineNo">693</span>  public boolean checkAndPut(final byte [] row, final byte [] family, final byte [] qualifier,<a name="line.693"></a>
+<span class="sourceLineNo">694</span>      final CompareOperator op, final byte [] value, final Put put) throws IOException {<a name="line.694"></a>
+<span class="sourceLineNo">695</span>    // The name of the operators in CompareOperator are intentionally those of the<a name="line.695"></a>
+<span class="sourceLineNo">696</span>    // operators in the filter's CompareOp enum.<a name="line.696"></a>
+<span class="sourceLineNo">697</span>    return doCheckAndPut(row, family, qualifier, op.name(), value, null, put);<a name="line.697"></a>
+<span class="sourceLineNo">698</span>  }<a name="line.698"></a>
+<span class="sourceLineNo">699</span><a name="line.699"></a>
+<span class="sourceLineNo">700</span>  private boolean doCheckAndPut(final byte[] row, final byte[] family, final byte[] qualifier,<a name="line.700"></a>
+<span class="sourceLineNo">701</span>    final String opName, final byte[] value, final TimeRange timeRange, final Put put)<a name="line.701"></a>
+<span class="sourceLineNo">702</span>    throws IOException {<a name="line.702"></a>
+<span class="sourceLineNo">703</span>    ClientServiceCallable&lt;Boolean&gt; callable =<a name="line.703"></a>
+<span class="sourceLineNo">704</span>        new ClientServiceCallable&lt;Boolean&gt;(this.connection, getName(), row,<a name="line.704"></a>
+<span class="sourceLineNo">705</span>            this.rpcControllerFactory.newController(), put.getPriority()) {<a name="line.705"></a>
+<span class="sourceLineNo">706</span>      @Override<a name="line.706"></a>
+<span class="sourceLineNo">707</span>      protected Boolean rpcCall() throws Exception {<a name="line.707"></a>
+<span class="sourceLineNo">708</span>        CompareType compareType = CompareType.valueOf(opName);<a name="line.708"></a>
+<span class="sourceLineNo">709</span>        MutateRequest request = RequestConverter.buildMutateRequest(<a name="line.709"></a>
+<span class="sourceLineNo">710</span>            getLocation().getRegionInfo().getRegionName(), row, family, qualifier,<a name="line.710"></a>
+<span class="sourceLineNo">711</span>            new BinaryComparator(value), compareType, timeRange, put);<a name="line.711"></a>
+<span class="sourceLineNo">712</span>        MutateResponse response = doMutate(request);<a name="line.712"></a>
+<span class="sourceLineNo">713</span>        return Boolean.valueOf(response.getProcessed());<a name="line.713"></a>
+<span class="sourceLineNo">714</span>      }<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    };<a name="line.715"></a>
+<span class="sourceLineNo">716</span>    return rpcCallerFactory.&lt;Boolean&gt; newCaller(this.writeRpcTimeoutMs)<a name="line.716"></a>
+<span class="sourceLineNo">717</span>        .callWithRetries(callable, this.operationTimeoutMs);<a name="line.717"></a>
+<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
+<span class="sourceLineNo">719</span><a name="line.719"></a>
+<span class="sourceLineNo">720</span>  @Override<a name="line.720"></a>
+<span class="sourceLineNo">721</span>  @Deprecated<a name="line.721"></a>
+<span class="sourceLineNo">722</span>  public boolean checkAndDelete(final byte[] row, final byte[] family, final byte[] qualifier,<a name="line.722"></a>
+<span class="sourceLineNo">723</span>    final byte[] value, final Delete delete) throws IOException {<a name="line.723"></a>
+<span class="sourceLineNo">724</span>    return doCheckAndDelete(row, family, qualifier, CompareOperator.EQUAL.name(), value, null,<a name="line.724"></a>
+<span class="sourceLineNo">725</span>      delete);<a name="line.725"></a>
+<span class="sourceLineNo">726</span>  }<a name="line.726"></a>
+<span class="sourceLineNo">727</span><a name="line.727"></a>
+<span class="sourceLineNo">728</span>  @Override<a name="line.728"></a>
+<span class="sourceLineNo">729</span>  @Deprecated<a name="line.729"></a>
+<span class="sourceLineNo">730</span>  public boolean checkAndDelete(final byte[] row, final byte[] family, final byte[] qualifier,<a name="line.730"></a>
+<span class="sourceLineNo">731</span>    final CompareOp compareOp, final byte[] value, final Delete delete) throws IOException {<a name="line.731"></a>
+<span class="sourceLineNo">732</span>    return doCheckAndDelete(row, family, qualifier, compareOp.name(), value, null, delete);<a name="line.732"></a>
 <span class="sourceLineNo">733</span>  }<a name="line.733"></a>
 <span class="sourceLineNo">734</span><a name="line.734"></a>
 <span class="sourceLineNo">735</span>  @Override<a name="line.735"></a>
 <span class="sourceLineNo">736</span>  @Deprecated<a name="line.736"></a>
 <span class="sourceLineNo">737</span>  public boolean checkAndDelete(final byte[] row, final byte[] family, final byte[] qualifier,<a name="line.737"></a>
-<span class="sourceLineNo">738</span>    final byte[] value, final Delete delete) throws IOException {<a name="line.738"></a>
-<span class="sourceLineNo">739</span>    return doCheckAndDelete(row, family, qualifier, CompareOperator.EQUAL.name(), value, null,<a name="line.739"></a>
-<span class="sourceLineNo">740</span>      delete);<a name="line.740"></a>
-<span class="sourceLineNo">741</span>  }<a name="line.741"></a>
-<span class="sourceLineNo">742</span><a name="line.742"></a>
-<span class="sourceLineNo">743</span>  @Override<a name="line.743"></a>
-<span class="sourceLineNo">744</span>  @Deprecated<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  public boolean checkAndDelete(final byte[] row, final byte[] family, final byte[] qualifier,<a name="line.745"></a>
-<span class="sourceLineNo">746</span>    final CompareOp compareOp, final byte[] value, final Delete delete) throws IOException {<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    return doCheckAndDelete(row, family, qualifier, compareOp.name(), value, null, delete);<a name="line.747"></a>
-<span class="sourceLineNo">748</span>  }<a name="line.748"></a>
-<span class="sourceLineNo">749</span><a name="line.749"></a>
-<span class="sourceLineNo">750</span>  @Override<a name="line.750"></a>
-<span class="sourceLineNo">751</span>  @Deprecated<a name="line.751"></a>
-<span class="sourceLineNo">752</span>  public boolean checkAndDelete(final byte[] row, final byte[] family, final byte[] qualifier,<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    final CompareOperator op, final byte[] value, final Delete delete) throws IOException {<a name="line.753"></a>
-<span class="sourceLineNo">754</span>    return doCheckAndDelete(row, family, qualifier, op.name(), value, null, delete);<a name="line.754"></a>
-<span class="sourceLineNo">755</span>  }<a name="line.755"></a>
-<span class="sourceLineNo">756</span><a name="line.756"></a>
-<span class="sourceLineNo">757</span>  private boolean doCheckAndDelete(final byte[] row, final byte[] family, final byte[] qualifier,<a name="line.757"></a>
-<span class="sourceLineNo">758</span>    final String opName, final byte[] value, final TimeRange timeRange, final Delete delete)<a name="line.758"></a>
-<span class="sourceLineNo">759</span>    throws IOException {<a name="line.759"></a>
-<span class="sourceLineNo">760</span>    CancellableRegionServerCallable&lt;SingleResponse&gt; callable =<a name="line.760"></a>
-<span class="sourceLineNo">761</span>      new CancellableRegionServerCallable&lt;SingleResponse&gt;(this.connection, getName(), row,<a name="line.761"></a>
-<span class="sourceLineNo">762</span>        this.rpcControllerFactory.newController(), writeRpcTimeoutMs,<a name="line.762"></a>
-<span class="sourceLineNo">763</span>        new RetryingTimeTracker().start(), delete.getPriority()) {<a name="line.763"></a>
-<span class="sourceLineNo">764</span>        @Override<a name="line.764"></a>
-<span class="sourceLineNo">765</span>        protected SingleResponse rpcCall() throws Exception {<a name="line.765"></a>
-<span class="sourceLineNo">766</span>          CompareType compareType = CompareType.valueOf(opName);<a name="line.766"></a>
-<span class="sourceLineNo">767</span>          MutateRequest request = RequestConverter<a name="line.767"></a>
-<span class="sourceLineNo">768</span>            .buildMutateRequest(getLocation().getRegionInfo().getRegionName(), row, family,<a name="line.768"></a>
-<span class="sourceLineNo">769</span>              qualifier, new BinaryComparator(value), compareType, timeRange, delete);<a name="line.769"></a>
-<span class="sourceLineNo">770</span>          MutateResponse response = doMutate(request);<a name="line.770"></a>
-<span class="sourceLineNo">771</span>          return ResponseConverter.getResult(request, response, getRpcControllerCellScanner());<a name="line.771"></a>
-<span class="sourceLineNo">772</span>        }<a name="line.772"></a>
-<span class="sourceLineNo">773</span>      };<a name="line.773"></a>
-<span class="sourceLineNo">774</span>    List&lt;Delete&gt; rows = Collections.singletonList(delete);<a name="line.774"></a>
-<span class="sourceLineNo">775</span>    Object[] results = new Object[1];<a name="line.775"></a>
-<span class="sourceLineNo">776</span>    AsyncProcessTask task =<a name="line.776"></a>
-<span class="sourceLineNo">777</span>      AsyncProcessTask.newBuilder().setPool(pool).setTableName(tableName).setRowAccess(rows)<a name="line.777"></a>
-<span class="sourceLineNo">778</span>        .setCallable(callable)<a name="line.778"></a>
-<span class="sourceLineNo">779</span>        // TODO any better timeout?<a name="line.779"></a>
-<span class="sourceLineNo">780</span>        .setRpcTimeout(Math.max(readRpcTimeoutMs, writeRpcTimeoutMs))<a name="line.780"></a>
-<span class="sourceLineNo">781</span>        .setOperationTimeout(operationTimeoutMs)<a name="line.781"></a>
-<span class="sourceLineNo">782</span>        .setSubmittedRows(AsyncProcessTask.SubmittedRows.ALL).setResults(results).build();<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    AsyncRequestFuture ars = multiAp.submit(task);<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    ars.waitUntilDone();<a name="line.784"></a>
-<span class="sourceLineNo">785</span>    if (ars.hasError()) {<a name="line.785"></a>
-<span class="sourceLineNo">786</span>      throw ars.getErrors();<a name="line.786"></a>
-<span class="sourceLineNo">787</span>    }<a name="line.787"></a>
-<span class="sourceLineNo">788</span>    return ((SingleResponse.Entry) results[0]).isProcessed();<a name="line.788"></a>
-<span class="sourceLineNo">789</span>  }<a name="line.789"></a>
-<span class="sourceLineNo">790</span><a name="line.790"></a>
-<span class="sourceLineNo">791</span>  @Override<a name="line.791"></a>
-<span class="sourceLineNo">792</span>  public CheckAndMutateBuilder checkAndMutate(byte[] row, byte[] family) {<a name="line.792"></a>
-<span class="sourceLineNo">793</span>    return new CheckAndMutateBuilderImpl(row, family);<a name="line.793"></a>
-<span class="sourceLineNo">794</span>  }<a name="line.794"></a>
-<span class="sourceLineNo">795</span><a name="line.795"></a>
-<span class="sourceLineNo">796</span>  private boolean doCheckAndMutate(final byte[] row, final byte[] family, final byte[] qualifier,<a name="line.796"></a>
-<span class="sourceLineNo">797</span>    final String opName, final byte[] value, final TimeRange timeRange, final RowMutations rm)<a name="line.797"></a>
-<span class="sourceLineNo">798</span>    throws IOException {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>    CancellableRegionServerCallable&lt;MultiResponse&gt; callable =<a name="line.799"></a>
-<span class="sourceLineNo">800</span>    new CancellableRegionServerCallable&lt;MultiResponse&gt;(connection, getName(), rm.getRow(),<a name="line.800"></a>
-<span class="sourceLineNo">801</span>    rpcControllerFactory.newController(), writeRpcTimeoutMs, new RetryingTimeTracker().start(),<a name="line.801"></a>
-<span class="sourceLineNo">802</span>        rm.getMaxPriority()) {<a name="line.802"></a>
-<span class="sourceLineNo">803</span>      @Override<a name="line.803"></a>
-<span class="sourceLineNo">804</span>      protected MultiResponse rpcCall() throws Exception {<a name="line.804"></a>
-<span class="sourceLineNo">805</span>        CompareType compareType = CompareType.valueOf(opName);<a name="line.805"></a>
-<span class="sourceLineNo">806</span>        MultiRequest request = RequestConverter<a name="line.806"></a>
-<span class="sourceLineNo">807</span>          .buildMutateRequest(getLocation().getRegionInfo().getRegionName(), row, family, qualifier,<a name="line.807"></a>
-<span class="sourceLineNo">808</span>            new BinaryComparator(value), compareType, timeRange, rm);<a name="line.808"></a>
-<span class="sourceLineNo">809</span>        ClientProtos.MultiResponse response = doMulti(request);<a name="line.809"></a>
-<span class="sourceLineNo">810</span>        ClientProtos.RegionActionResult res = response.getRegionActionResultList().get(0);<a name="line.810"></a>
-<span class="sourceLineNo">811</span>        if (res.hasException()) {<a name="line.811"></a>
-<span class="sourceLineNo">812</span>          Throwable ex = ProtobufUtil.toException(res.getException());<a name="line.812"></a>
-<span class="sourceLineNo">813</span>          if (ex instanceof IOException) {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>            throw (IOException) ex;<a name="line.814"></a>
-<span class="sourceLineNo">815</span>          }<a name="line.815"></a>
-<span class="sourceLineNo">816</span>          throw new IOException(<a name="line.816"></a>
-<span class="sourceLineNo">817</span>            "Failed to checkAndMutate row: " + Bytes.toStringBinary(rm.getRow()), ex);<a name="line.817"></a>
-<span class="sourceLineNo">818</span>        }<a name="line.818"></a>
-<span class="sourceLineNo">819</span>        return ResponseConverter.getResults(request, response, getRpcControllerCellScanner());<a name="line.819"></a>
-<span class="sourceLineNo">820</span>      }<a name="line.820"></a>
-<span class="sourceLineNo">821</span>    };<a name="line.821"></a>
-<span class="sourceLineNo">822</span><a name="line.822"></a>
-<span class="sourceLineNo">823</span>    /**<a name="line.823"></a>
-<span class="sourceLineNo">824</span>     *  Currently, we use one array to store 'processed' flag which is returned by server.<a name="line.824"></a>
-<span class="sourceLineNo">825</span>     *  It is excessive to send such a large array, but that is required by the framework right now<a name="line.825"></a>
-<span class="sourceLineNo">826</span>     * */<a name="line.826"></a>
-<span class="sourceLineNo">827</span>    Object[] results = new Object[rm.getMutations().size()];<a name="line.827"></a>
-<span class="sourceLineNo">828</span>    AsyncProcessTask task = AsyncProcessTask.newBuilder()<a name="line.828"></a>
-<span class="sourceLineNo">829</span>    .setPool(pool)<a name="line.829"></a>
-<span class="sourceLineNo">830</span>    .setTableName(tableName)<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    .setRowAccess(rm.getMutations())<a name="line.831"></a>
-<span class="sourceLineNo">832</span>    .setResults(results)<a name="line.832"></a>
-<span class="sourceLineNo">833</span>    .setCallable(callable)<a name="line.833"></a>
-<span class="sourceLineNo">834</span>    // TODO any better timeout?<a name="line.834"></a>
-<span class="sourceLineNo">835</span>    .setRpcTimeout(Math.max(readRpcTimeoutMs, writeRpcTimeoutMs))<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    .setOperationTimeout(operationTimeoutMs)<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    .setSubmittedRows(AsyncProcessTask.SubmittedRows.ALL)<a name="line.837"></a>
-<span class="sourceLineNo">838</span>    .build();<a name="line.838"></a>
-<span class="sourceLineNo">839</span>    AsyncRequestFuture ars = multiAp.submit(task);<a name="line.839"></a>
-<span class="sourceLineNo">840</span>    ars.waitUntilDone();<a name="line.840"></a>
-<span class="sourceLineNo">841</span>    if (ars.hasError()) {<a name="line.841"></a>
-<span class="sourceLineNo">842</span>      throw ars.getErrors();<a name="line.842"></a>
-<span class="sourceLineNo">843</span>    }<a name="line.843"></a>
-<span class="sourceLineNo">844</span><a name="line.844"></a>
-<span class="sourceLineNo">845</span>    return ((Result)results[0]).getExists();<a name="line.845"></a>
+<span class="sourceLineNo">738</span>    final CompareOperator op, final byte[] value, final Delete delete) throws IOException {<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    return doCheckAndDelete(row, family, qualifier, op.name(), value, null, delete);<a name="line.739"></a>
+<span class="sourceLineNo">740</span>  }<a name="line.740"></a>
+<span class="sourceLineNo">741</span><a name="line.741"></a>
+<span class="sourceLineNo">742</span>  private boolean doCheckAndDelete(final byte[] row, final byte[] family, final byte[] qualifier,<a name="line.742"></a>
+<span class="sourceLineNo">743</span>    final String opName, final byte[] value, final TimeRange timeRange, final Delete delete)<a name="line.743"></a>
+<span class="sourceLineNo">744</span>    throws IOException {<a name="line.744"></a>
+<span class="sourceLineNo">745</span>    CancellableRegionServerCallable&lt;SingleResponse&gt; callable =<a name="line.745"></a>
+<span class="sourceLineNo">746</span>      new CancellableRegionServerCallable&lt;SingleResponse&gt;(this.connection, getName(), row,<a name="line.746"></a>
+<span class="sourceLineNo">747</span>        this.rpcControllerFactory.newController(), writeRpcTimeoutMs,<a name="line.747"></a>
+<span class="sourceLineNo">748</span>        new RetryingTimeTracker().start(), delete.getPriority()) {<a name="line.748"></a>
+<span class="sourceLineNo">749</span>        @Override<a name="line.749"></a>
+<span class="sourceLineNo">750</span>        protected SingleResponse rpcCall() throws Exception {<a name="line.750"></a>
+<span class="sourceLineNo">751</span>          CompareType compareType = CompareType.valueOf(opName);<a name="line.751"></a>
+<span class="sourceLineNo">752</span>          MutateRequest request = RequestConverter<a name="line.752"></a>
+<span class="sourceLineNo">753</span>            .buildMutateRequest(getLocation().getRegionInfo().getRegionName(), row, family,<a name="line.753"></a>
+<span class="sourceLineNo">754</span>              qualifier, new BinaryComparator(value), compareType, timeRange, delete);<a name="line.754"></a>
+<span class="sourceLineNo">755</span>          MutateResponse response = doMutate(request);<a name="line.755"></a>
+<span class="sourceLineNo">756</span>          return ResponseConverter.getResult(request, response, getRpcControllerCellScanner());<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>    List&lt;Delete&gt; rows = Collections.singletonList(delete);<a name="line.759"></a>
+<span class="sourceLineNo">760</span>    Object[] results = new Object[1];<a name="line.760"></a>
+<span class="sourceLineNo">761</span>    AsyncProcessTask task =<a name="line.761"></a>
+<span class="sourceLineNo">762</span>      AsyncProcessTask.newBuilder().setPool(pool).setTableName(tableName).setRowAccess(rows)<a name="line.762"></a>
+<span class="sourceLineNo">763</span>        .setCallable(callable)<a name="line.763"></a>
+<span class="sourceLineNo">764</span>        // TODO any better timeout?<a name="line.764"></a>
+<span class="sourceLineNo">765</span>        .setRpcTimeout(Math.max(readRpcTimeoutMs, writeRpcTimeoutMs))<a name="line.765"></a>
+<span class="sourceLineNo">766</span>        .setOperationTimeout(operationTimeoutMs)<a name="line.766"></a>
+<span class="sourceLineNo">767</span>        .setSubmittedRows(AsyncProcessTask.SubmittedRows.ALL).setResults(results).build();<a name="line.767"></a>
+<span class="sourceLineNo">768</span>    AsyncRequestFuture ars = multiAp.submit(task);<a name="line.768"></a>
+<span class="sourceLineNo">769</span>    ars.waitUntilDone();<a name="line.769"></a>
+<span class="sourceLineNo">770</span>    if (ars.hasError()) {<a name="line.770"></a>
+<span class="sourceLineNo">771</span>      throw ars.getErrors();<a name="line.771"></a>
+<span class="sourceLineNo">772</span>    }<a name="line.772"></a>
+<span class="sourceLineNo">773</span>    return ((SingleResponse.Entry) results[0]).isProcessed();<a name="line.773"></a>
+<span class="sourceLineNo">774</span>  }<a name="line.774"></a>
+<span class="sourceLineNo">775</span><a name="line.775"></a>
+<span class="sourceLineNo">776</span>  @Override<a name="line.776"></a>
+<span class="sourceLineNo">777</span>  public CheckAndMutateBuilder checkAndMutate(byte[] row, byte[] family) {<a name="line.777"></a>
+<span class="sourceLineNo">778</span>    return new CheckAndMutateBuilderImpl(row, family);<a name="line.778"></a>
+<span class="sourceLineNo">779</span>  }<a name="line.779"></a>
+<span class="sourceLineNo">780</span><a name="line.780"></a>
+<span class="sourceLineNo">781</span>  private boolean doCheckAndMutate(final byte[] row, final byte[] family, final byte[] qualifier,<a name="line.781"></a>
+<span class="sourceLineNo">782</span>    final String opName, final byte[] value, final TimeRange timeRange, final RowMutations rm)<a name="line.782"></a>
+<span class="sourceLineNo">783</span>    throws IOException {<a name="line.783"></a>
+<span class="sourceLineNo">784</span>    CancellableRegionServerCallable&lt;MultiResponse&gt; callable =<a name="line.784"></a>
+<span class="sourceLineNo">785</span>    new CancellableRegionServerCallable&lt;MultiResponse&gt;(connection, getName(), rm.getRow(),<a name="line.785"></a>
+<span class="sourceLineNo">786</span>    rpcControllerFactory.newController(), writeRpcTimeoutMs, new RetryingTimeTracker().start(),<a name="line.786"></a>
+<span class="sourceLineNo">787</span>        rm.getMaxPriority()) {<a name="line.787"></a>
+<span class="sourceLineNo">788</span>      @Override<a name="line.788"></a>
+<span class="sourceLineNo">789</span>      protected MultiResponse rpcCall() throws Exception {<a name="line.789"></a>
+<span class="sourceLineNo">790</span>        CompareType compareType = CompareType.valueOf(opName);<a name="line.790"></a>
+<span class="sourceLineNo">791</span>        MultiRequest request = RequestConverter<a name="line.791"></a>
+<span class="sourceLineNo">792</span>          .buildMutateRequest(getLocation().getRegionInfo().getRegionName(), row, family, qualifier,<a name="line.792"></a>
+<span class="sourceLineNo">793</span>            new BinaryComparator(value), compareType, timeRange, rm);<a name="line.793"></a>
+<span class="sourceLineNo">794</span>        ClientProtos.MultiResponse response = doMulti(request);<a name="line.794"></a>
+<span class="sourceLineNo">795</span>        ClientProtos.RegionActionResult res = response.getRegionActionResultList().get(0);<a name="line.795"></a>
+<span class="sourceLineNo">796</span>        if (res.hasException()) {<a name="line.796"></a>
+<span class="sourceLineNo">797</span>          Throwable ex = ProtobufUtil.toException(res.getException());<a name="line.797"></a>
+<span class="sourceLineNo">798</span>          if (ex instanceof IOException) {<a name="line.798"></a>
+<span class="sourceLineNo">799</span>            throw (IOException) ex;<a name="line.799"></a>
+<span class="sourceLineNo">800</span>          }<a name="line.800"></a>
+<span class="sourceLineNo">801</span>          throw new IOException(<a name="line.801"></a>
+<span class="sourceLineNo">802</span>            "Failed to checkAndMutate row: " + Bytes.toStringBinary(rm.getRow()), ex);<a name="line.802"></a>
+<span class="sourceLineNo">803</span>        }<a name="line.803"></a>
+<span class="sourceLineNo">804</span>        return ResponseConverter.getResults(request, response, getRpcControllerCellScanner());<a name="line.804"></a>
+<span class="sourceLineNo">805</span>      }<a name="line.805"></a>
+<span class="sourceLineNo">806</span>    };<a name="line.806"></a>
+<span class="sourceLineNo">807</span><a name="line.807"></a>
+<span class="sourceLineNo">808</span>    /**<a name="line.808"></a>
+<span class="sourceLineNo">809</span>     *  Currently, we use one array to store 'processed' flag which is returned by server.<a name="line.809"></a>
+<span class="sourceLineNo">810</span>     *  It is excessive to send such a large array, but that is required by the framework right now<a name="line.810"></a>
+<span class="sourceLineNo">811</span>     * */<a name="line.811"></a>
+<span class="sourceLineNo">812</span>    Object[] results = new Object[rm.getMutations().size()];<a name="line.812"></a>
+<span class="sourceLineNo">813</span>    AsyncProcessTask task = AsyncProcessTask.newBuilder()<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    .setPool(pool)<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    .setTableName(tableName)<a name="line.815"></a>
+<span class="sourceLineNo">816</span>    .setRowAccess(rm.getMutations())<a name="line.816"></a>
+<span class="sourceLineNo">817</span>    .setResults(results)<a name="line.817"></a>
+<span class="sourceLineNo">818</span>    .setCallable(callable)<a name="line.818"></a>
+<span class="sourceLineNo">819</span>    // TODO any better timeout?<a name="line.819"></a>
+<span class="sourceLineNo">820</span>    .setRpcTimeout(Math.max(readRpcTimeoutMs, writeRpcTimeoutMs))<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    .setOperationTimeout(operationTimeoutMs)<a name="line.821"></a>
+<span class="sourceLineNo">822</span>    .setSubmittedRows(AsyncProcessTask.SubmittedRows.ALL)<a name="line.822"></a>
+<span class="sourceLineNo">823</span>    .build();<a name="line.823"></a>
+<span class="sourceLineNo">824</span>    AsyncRequestFuture ars = multiAp.submit(task);<a name="line.824"></a>
+<span class="sourceLineNo">825</span>    ars.waitUntilDone();<a name="line.825"></a>
+<span class="sourceLineNo">826</span>    if (ars.hasError()) {<a name="line.826"></a>
+<span class="sourceLineNo">827</span>      throw ars.getErrors();<a name="line.827"></a>
+<span class="sourceLineNo">828</span>    }<a name="line.828"></a>
+<span class="sourceLineNo">829</span><a name="line.829"></a>
+<span class="sourceLineNo">830</span>    return ((Result)results[0]).getExists();<a name="line.830"></a>
+<span class="sourceLineNo">831</span>  }<a name="line.831"></a>
+<span class="sourceLineNo">832</span><a name="line.832"></a>
+<span class="sourceLineNo">833</span>  @Override<a name="line.833"></a>
+<span class="sourceLineNo">834</span>  @Deprecated<a name="line.834"></a>
+<span class="sourceLineNo">835</span>  public boolean checkAndMutate(final byte [] row, final byte [] family, final byte [] qualifier,<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    final CompareOp compareOp, final byte [] value, final RowMutations rm)<a name="line.836"></a>
+<span class="sourceLineNo">837</span>  throws IOException {<a name="line.837"></a>
+<span class="sourceLineNo">838</span>    return doCheckAndMutate(row, family, qualifier, compareOp.name(), value, null, rm);<a name="line.838"></a>
+<span class="sourceLineNo">839</span>  }<a name="line.839"></a>
+<span class="sourceLineNo">840</span><a name="line.840"></a>
+<span class="sourceLineNo">841</span>  @Override<a name="line.841"></a>
+<span class="sourceLineNo">842</span>  @Deprecated<a name="line.842"></a>
+<span class="sourceLineNo">843</span>  public boolean checkAndMutate(final byte [] row, final byte [] family, final byte [] qualifier,<a name="line.843"></a>
+<span class="sourceLineNo">844</span>      final CompareOperator op, final byte [] value, final RowMutations rm) throws IOException {<a name="line.844"></a>
+<span class="sourceLineNo">845</span>    return doCheckAndMutate(row, family, qualifier, op.name(), value, null, rm);<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>  @Override<a name="line.848"></a>
-<span class="sourceLineNo">849</span>  @Deprecated<a name="line.849"></a>
-<span class="sourceLineNo">850</span>  public boolean checkAndMutate(final byte [] row, final byte [] family, final byte [] qualifier,<a name="line.850"></a>
-<span class="sourceLineNo">851</span>    final CompareOp compareOp, final byte [] value, final RowMutations rm)<a name="line.851"></a>
-<span class="sourceLineNo">852</span>  throws IOException {<a name="line.852"></a>
-<span class="sourceLineNo">853</span>    return doCheckAndMutate(row, family, qualifier, compareOp.name(), value, null, rm);<a name="line.853"></a>
-<span class="sourceLineNo">854</span>  }<a name="line.854"></a>
-<span class="sourceLineNo">855</span><a name="line.855"></a>
-<span class="sourceLineNo">856</span>  @Override<a name="line.856"></a>
-<span class="sourceLineNo">857</span>  @Deprecated<a name="line.857"></a>
-<span class="sourceLineNo">858</span>  public boolean checkAndMutate(final byte [] row, final byte [] family, final byte [] qualifier,<a name="line.858"></a>
-<span class="sourceLineNo">859</span>      final CompareOperator op, final byte [] value, final RowMutations rm) throws IOException {<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    return doCheckAndMutate(row, family, qualifier, op.name(), value, null, rm);<a name="line.860"></a>
-<span class="sourceLineNo">861</span>  }<a name="line.861"></a>
-<span class="sourceLineNo">862</span><a name="line.862"></a>
-<span class="sourceLineNo">863</span>  @Override<a name="line.863"></a>
-<span class="sourceLineNo">864</span>  public boolean exists(final Get get) throws IOException {<a name="line.864"></a>
-<span class="sourceLineNo">865</span>    Result r = get(get, true);<a name="line.865"></a>
-<span class="sourceLineNo">866</span>    assert r.getExists() != null;<a name="line.866"></a>
-<span class="sourceLineNo">867</span>    return r.getExists();<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>  @Override<a name="line.870"></a>
-<span class="sourceLineNo">871</span>  public boolean[] exists(List&lt;Get&gt; gets) throws IOException {<a name="line.871"></a>
-<span class="sourceLineNo">872</span>    if (gets.isEmpty()) return new boolean[]{};<a name="line.872"></a>
-<span class="sourceLineNo">873</span>    if (gets.size() == 1) return new boolean[]{exists(gets.get(0))};<a name="line.873"></a>
-<span class="sourceLineNo">874</span><a name="line.874"></a>
-<span class="sourceLineNo">875</span>    ArrayList&lt;Get&gt; exists = new ArrayList&lt;&gt;(gets.size());<a name="line.875"></a>
-<span class="sourceLineNo">876</span>    for (Get g: gets){<a name="line.876"></a>
-<span class="sourceLineNo">877</span>      Get ge = new Get(g);<a name="line.877"></a>
-<span class="sourceLineNo">878</span>      ge.setCheckExistenceOnly(true);<a name="line.878"></a>
-<span class="sourceLineNo">879</span>      exists.add(ge);<a name="line.879"></a>
+<span class="sourceLineNo">849</span>  public boolean exists(final Get get) throws IOException {<a name="line.849"></a>
+<span class="sourceLineNo">850</span>    Result r = get(get, true);<a name="line.850"></a>
+<span class="sourceLineNo">851</span>    assert r.getExists() != null;<a name="line.851"></a>
+<span class="sourceLineNo">852</span>    return r.getExists();<a name="line.852"></a>
+<span class="sourceLineNo">853</span>  }<a name="line.853"></a>
+<span class="sourceLineNo">854</span><a name="line.854"></a>
+<span class="sourceLineNo">855</span>  @Override<a name="line.855"></a>
+<span class="sourceLineNo">856</span>  public boolean[] exists(List&lt;Get&gt; gets) throws IOException {<a name="line.856"></a>
+<span class="sourceLineNo">857</span>    if (gets.isEmpty()) return new boolean[]{};<a name="line.857"></a>
+<span class="sourceLineNo">858</span>    if (gets.size() == 1) return new boolean[]{exists(gets.get(0))};<a name="line.858"></a>
+<span class="sourceLineNo">859</span><a name="line.859"></a>
+<span class="sourceLineNo">860</span>    ArrayList&lt;Get&gt; exists = new ArrayList&lt;&gt;(gets.size());<a name="line.860"></a>
+<span class="sourceLineNo">861</span>    for (Get g: gets){<a name="line.861"></a>
+<span class="sourceLineNo">862</span>      Get ge = new Get(g);<a name="line.862"></a>
+<span class="sourceLineNo">863</span>      ge.setCheckExistenceOnly(true);<a name="line.863"></a>
+<span class="sourceLineNo">864</span>      exists.add(ge);<a name="line.864"></a>
+<span class="sourceLineNo">865</span>    }<a name="line.865"></a>
+<span class="sourceLineNo">866</span><a name="line.866"></a>
+<span class="sourceLineNo">867</span>    Object[] r1= new Object[exists.size()];<a name="line.867"></a>
+<span class="sourceLineNo">868</span>    try {<a name="line.868"></a>
+<span class="sourceLineNo">869</span>      batch(exists, r1, readRpcTimeoutMs);<a name="line.869"></a>
+<span class="sourceLineNo">870</span>    } catch (InterruptedException e) {<a name="line.870"></a>
+<span class="sourceLineNo">871</span>      throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.871"></a>
+<span class="sourceLineNo">872</span>    }<a name="line.872"></a>
+<span class="sourceLineNo">873</span><a name="line.873"></a>
+<span class="sourceLineNo">874</span>    // translate.<a name="line.874"></a>
+<span class="sourceLineNo">875</span>    boolean[] results = new boolean[r1.length];<a name="line.875"></a>
+<span class="sourceLineNo">876</span>    int i = 0;<a name="line.876"></a>
+<span class="sourceLineNo">877</span>    for (Object o : r1) {<a name="line.877"></a>
+<span class="sourceLineNo">878</span>      // batch ensures if there is a failure we get an exception instead<a name="line.878"></a>
+<span class="sourceLineNo">879</span>      results[i++] = ((Result)o).getExists();<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>    Object[] r1= new Object[exists.size()];<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    try {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      batch(exists, r1, readRpcTimeoutMs);<a name="line.884"></a>
-<span class="sourceLineNo">885</span>    } catch (InterruptedException e) {<a name="line.885"></a>
-<span class="sourceLineNo">886</span>      throw (InterruptedIOException)new InterruptedIOException().initCause(e);<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>    // translate.<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    boolean[] results = new boolean[r1.length];<a name="line.890"></a>
-<span class="sourceLineNo">891</span>    int i = 0;<a name="line.891"></a>
-<span class="sourceLineNo">892</span>    for (Object o : r1) {<a name="line.892"></a>
-<span class="sourceLineNo">893</span>      // batch ensures if there is a failure we get an exception instead<a name="line.893"></a>
-<span class="sourceLineNo">894</span>      results[i++] = ((Result)o).getExists();<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    }<a name="line.895"></a>
-<span class="sourceLineNo">896</span><a name="line.896"></a>
-<span class="sourceLineNo">897</span>    return results;<a name="line.897"></a>
-<span class="sourceLineNo">898</span>  }<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>   * Process a mixed batch of Get, Put and Delete actions. All actions for a<a name="line.901"></a>
-<span class="sourceLineNo">902</span>   * RegionServer are forwarded in one RPC call. Queries are executed in parallel.<a name="line.902"></a>
-<span class="sourceLineNo">903</span>   *<a name="line.903"></a>
-<span class="sourceLineNo">904</span>   * @param list The collection of actions.<a name="line.904"></a>
-<span class="sourceLineNo">905</span>   * @param results An empty array, same size as list. If an exception is thrown,<a name="line.905"></a>
-<span class="sourceLineNo">906</span>   *   you can test here for partial results, and to determine which actions<a name="line.906"></a>
-<span class="sourceLineNo">907</span>   *   processed successfully.<a name="line.907"></a>
-<span class="sourceLineNo">908</span>   * @throws IOException if there are problems talking to META. Per-item<a name="line.908"></a>
-<span class="sourceLineNo">909</span>   *   exceptions are stored in the results array.<a name="line.909"></a>
-<span class="sourceLineNo">910</span>   */<a name="line.910"></a>
-<span class="sourceLineNo">911</span>  public &lt;R&gt; void processBatchCallback(<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    final List&lt;? extends Row&gt; list, final Object[] results, final Batch.Callback&lt;R&gt; callback)<a name="line.912"></a>
-<span class="sourceLineNo">913</span>    throws IOException, InterruptedException {<a name="line.913"></a>
-<span class="sourceLineNo">914</span>    this.batchCallback(list, results, callback);<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>  @Override<a name="line.917"></a>
-<span class="sourceLineNo">918</span>  public void close() throws IOException {<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    if (this.closed) {<a name="line.919"></a>
-<span class="sourceLineNo">920</span>      return;<a name="line.920"></a>
-<span class="sourceLineNo">921</span>    }<a name="line.921"></a>
-<span class="sourceLineNo">922</span>    if (cleanupPoolOnClose) {<a name="line.922"></a>
-<span class="sourceLineNo">923</span>      this.pool.shutdown();<a name="line.923"></a>
-<span class="sourceLineNo">924</span>      try {<a name="line.924"></a>
-<span class="sourceLineNo">925</span>        boolean terminated = false;<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        do {<a name="line.926"></a>
-<span class="sourceLineNo">927</span>          // wait until the pool has terminated<a name="line.927"></a>
-<span class="sourceLineNo">928</span>          terminated = this.pool.awaitTermination(60, TimeUnit.SECONDS);<a name="line.928"></a>
-<span class="sourceLineNo">929</span>        } while (!terminated);<a name="line.929"></a>
-<span class="sourceLineNo">930</span>      } catch (InterruptedException e) {<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        this.pool.shutdownNow();<a name="line.931"></a>
-<span class="sourceLineNo">932</span>        LOG.warn("waitForTermination interrupted");<a name="line.932"></a>
-<span class="sourceLineNo">933</span>      }<a name="line.933"></a>
-<span class="sourceLineNo">934</span>    }<a name="line.934"></a>
-<span class="sourceLineNo">935</span>    this.closed = true;<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>  // validate for well-formedness<a name="line.938"></a>
-<span class="sourceLineNo">939</span>  public void validatePut(final Put put) throws IllegalArgumentException {<a name="line.939"></a>
-<span class="sourceLineNo">940</span>    validatePut(put, connConfiguration.getMaxKeyValueSize());<a name="line.940"></a>
-<span class="sourceLineNo">941</span>  }<a name="line.941"></a>
-<span class="sourceLineNo">942</span><a name="line.942"></a>
-<span class="sourceLineNo">943</span>  // validate for well-formedness<a name="line.943"></a>
-<span class="sourceLineNo">944</span>  public static void validatePut(Put put, int maxKeyValueSize) throws IllegalArgumentException {<a name="line.944"></a>
-<span class="sourceLineNo">945</span>    if (put.isEmpty()) {<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      throw new IllegalArgumentException("No columns to insert");<a name="line.946"></a>
-<span class="sourceLineNo">947</span>    }<a name="line.947"></a>
-<span class="sourceLineNo">948</span>    if (maxKeyValueSize &gt; 0) {<a name="line.948"></a>
-<span class="sourceLineNo">949</span>      for (List&lt;Cell&gt; list : put.getFamilyCellMap().values()) {<a name="line.949"></a>
-<span class="sourceLineNo">950</span>        for (Cell cell : list) {<a name="line.950"></a>
-<span class="sourceLineNo">951</span>          if (KeyValueUtil.length(cell) &gt; maxKeyValueSize) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>            throw new IllegalArgumentException("KeyValue size too large");<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>      }<a name="line.955"></a>
-<span class="sourceLineNo">956</span>    }<a name="line.956"></a>
-<span class="sourceLineNo">957</span>  }<a name="line.957"></a>
-<span class="sourceLineNo">958</span><a name="line.958"></a>
-<span class="sourceLineNo">959</span>  /**<a name="line.959"></a>
-<span class="sourceLineNo">960</span>   * The pool is used for mutli requests for this HTable<a name="line.960"></a>
-<span class="sourceLineNo">961</span>   * @return the pool used for mutli<a name="line.961"></a>
-<span class="sourceLineNo">962</span>   */<a name="line.962"></a>
-<span class="sourceLineNo">963</span>  ExecutorService getPool() {<a name="line.963"></a>
-<span class="sourceLineNo">964</span>    return this.pool;<a name="line.964"></a>
-<s

<TRUNCATED>

[06/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 bf5541c..e72af4a 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, 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, getWALRegionDir, getWriteRequestsCount, hashCode, hasReferences, heapSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateHStore, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLoadingC
 fsOnDemandDefault, 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, 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, getMemStoreDa
 taSize, 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, getWALRegionDir, 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>
 </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/fa850293/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 8e0da94..5cdd140 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, 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, getWALRegionDir, getWriteRequestsCount, hashCode, hasReferences, heapSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateHStore, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClose
 d, 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>
+<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, 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, getMaxFlushedSeqId, getMaxS
 toreSeqId, 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, getWALRegionDir, getWriteRequestsCount, hashCode, hasReferences, heapSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateHStore, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, i
 sLoadingCfsOnDemandDefault, 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/fa850293/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 e49a0dc..ab19f12 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
@@ -1123,56 +1123,64 @@
 </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">TestAsyncTable.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTable.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestTableOperationException.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.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">TestCIPutRpcTimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIPutRpcTimeout.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncTable.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTable.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">TestRestoreSnapshotFromClientWithRegionReplicas.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientWithRegionReplicas.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCIPutRpcTimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIPutRpcTimeout.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">TestLimitedScanWithFilter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestLimitedScanWithFilter.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRestoreSnapshotFromClientWithRegionReplicas.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientWithRegionReplicas.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">TestDropTimeoutRequest.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestDropTimeoutRequest.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestLimitedScanWithFilter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestLimitedScanWithFilter.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">TestFlushFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFlushFromClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestDropTimeoutRequest.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestDropTimeoutRequest.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">TestAsyncToolAdminApi.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncToolAdminApi.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFlushFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFlushFromClient.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">TestSeparateClientZKCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncToolAdminApi.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncToolAdminApi.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">TestRawAsyncTablePartialScan.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncTablePartialScan.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSeparateClientZKCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.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">TestResult.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestResult.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRawAsyncTablePartialScan.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncTablePartialScan.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">TestFromClientSideScanExcpetion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestResult.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestResult.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">TestRestoreSnapshotFromClientGetCompactionState.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientGetCompactionState.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFromClientSideScanExcpetion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.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">TestRestoreSnapshotFromClientGetCompactionState.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientGetCompactionState.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">TestMobCloneSnapshotFromClientNormal.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobCloneSnapshotFromClientNormal.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">TestInvalidMutationDurabilityException.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.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">TestMobRestoreSnapshotFromClientClone.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientClone.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 27b5d7e..4c74942 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
@@ -919,8 +919,16 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestTableOperationException.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.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">TestLimitedScanWithFilter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestLimitedScanWithFilter.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestInvalidMutationDurabilityException.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.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">TestRawAsyncTableLimitedScanWithFilter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncTableLimitedScanWithFilter.html#UTIL">UTIL</a></span></code>&nbsp;</td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 693c0ed..badc980 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, 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, getWALRegionDir, getWriteRequestsCount, hashCode, hasReferences, heapSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, 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>
+<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, 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, getLockedRows, getMaxFlu
 shedSeqId, 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, getWALRegionDir, getWriteRequestsCount, hashCode, hasReferences, heapSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, is
 LoadingCfsOnDemandDefault, 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/fa850293/testdevapidocs/org/apache/hadoop/hbase/client/TestIntraRowPagination.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestIntraRowPagination.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestIntraRowPagination.html
index cb4f546..d20871c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestIntraRowPagination.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestIntraRowPagination.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestInterfaceAlign.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/client/TestLeaseRenewal.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestIntraRowPagination.html" target="_top">Frames</a></li>
@@ -285,7 +285,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/client/TestInterfaceAlign.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/client/TestLeaseRenewal.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestIntraRowPagination.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/testdevapidocs/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html
new file mode 100644
index 0000000..25f7879
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html
@@ -0,0 +1,654 @@
+<!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>TestInvalidMutationDurabilityException (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="TestInvalidMutationDurabilityException (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"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};
+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/TestInvalidMutationDurabilityException.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestIntraRowPagination.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestLeaseRenewal.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" target="_top">Frames</a></li>
+<li><a href="TestInvalidMutationDurabilityException.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.client</div>
+<h2 title="Class TestInvalidMutationDurabilityException" class="title">Class TestInvalidMutationDurabilityException</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.client.TestInvalidMutationDurabilityException</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/client/TestInvalidMutationDurabilityException.html#line.36">TestInvalidMutationDurabilityException</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>private static byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#CF">CF</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"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#CQ">CQ</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static org.apache.hadoop.hbase.TableName</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#TABLE_NEED_REPLICATE">TABLE_NEED_REPLICATE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static org.apache.hadoop.hbase.TableName</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#TABLE_NOT_REPLICATE">TABLE_NOT_REPLICATE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static org.apache.hadoop.hbase.client.Table</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#tableNeedReplicate">tableNeedReplicate</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static org.apache.hadoop.hbase.client.Table</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#tableNotReplicate">tableNotReplicate</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/client/TestInvalidMutationDurabilityException.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/client/TestInvalidMutationDurabilityException.html#TestInvalidMutationDurabilityException--">TestInvalidMutationDurabilityException</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>private org.apache.hadoop.hbase.client.Append</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#newAppendWithSkipWAL--">newAppendWithSkipWAL</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>private org.apache.hadoop.hbase.client.Delete</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#newDeleteWithSkipWAL--">newDeleteWithSkipWAL</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>private org.apache.hadoop.hbase.client.Increment</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#newIncrementWithSkipWAL--">newIncrementWithSkipWAL</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>private org.apache.hadoop.hbase.client.Put</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#newPutWithSkipWAL--">newPutWithSkipWAL</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#setUp--">setUp</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#tearDown--">tearDown</a></span>()</code>&nbsp;</td>
+</tr>
+<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/client/TestInvalidMutationDurabilityException.html#testAppendToTableNeedReplicate--">testAppendToTableNeedReplicate</a></span>()</code>&nbsp;</td>
+</tr>
+<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/client/TestInvalidMutationDurabilityException.html#testAppendToTableNotReplicate--">testAppendToTableNotReplicate</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#testCheckWithMutateToTableNeedReplicate--">testCheckWithMutateToTableNeedReplicate</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#testCheckWithMutateToTableNotReplicate--">testCheckWithMutateToTableNotReplicate</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#testDeleteToTableNeedReplicate--">testDeleteToTableNeedReplicate</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#testDeleteToTableNotReplicate--">testDeleteToTableNotReplicate</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i12" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#testIncrementToTableNeedReplicate--">testIncrementToTableNeedReplicate</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i13" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#testIncrementToTableNotReplicate--">testIncrementToTableNotReplicate</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i14" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#testPutToTableNeedReplicate--">testPutToTableNeedReplicate</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i15" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#testPutToTableNotReplicate--">testPutToTableNotReplicate</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/client/TestInvalidMutationDurabilityException.html#line.39">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/client/TestInvalidMutationDurabilityException.html#line.42">UTIL</a></pre>
+</li>
+</ul>
+<a name="TABLE_NOT_REPLICATE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>TABLE_NOT_REPLICATE</h4>
+<pre>private static&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#line.44">TABLE_NOT_REPLICATE</a></pre>
+</li>
+</ul>
+<a name="TABLE_NEED_REPLICATE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>TABLE_NEED_REPLICATE</h4>
+<pre>private static&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#line.46">TABLE_NEED_REPLICATE</a></pre>
+</li>
+</ul>
+<a name="CF">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CF</h4>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#line.48">CF</a></pre>
+</li>
+</ul>
+<a name="CQ">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CQ</h4>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#line.50">CQ</a></pre>
+</li>
+</ul>
+<a name="tableNotReplicate">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>tableNotReplicate</h4>
+<pre>private static&nbsp;org.apache.hadoop.hbase.client.Table <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#line.52">tableNotReplicate</a></pre>
+</li>
+</ul>
+<a name="tableNeedReplicate">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>tableNeedReplicate</h4>
+<pre>private static&nbsp;org.apache.hadoop.hbase.client.Table <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#line.54">tableNeedReplicate</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="TestInvalidMutationDurabilityException--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestInvalidMutationDurabilityException</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#line.36">TestInvalidMutationDurabilityException</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/client/TestInvalidMutationDurabilityException.html#line.57">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/client/TestInvalidMutationDurabilityException.html#line.69">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="newPutWithSkipWAL--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>newPutWithSkipWAL</h4>
+<pre>private&nbsp;org.apache.hadoop.hbase.client.Put&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#line.77">newPutWithSkipWAL</a>()</pre>
+</li>
+</ul>
+<a name="testPutToTableNotReplicate--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testPutToTableNotReplicate</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#line.85">testPutToTableNotReplicate</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="testPutToTableNeedReplicate--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testPutToTableNeedReplicate</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#line.90">testPutToTableNeedReplicate</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="newDeleteWithSkipWAL--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>newDeleteWithSkipWAL</h4>
+<pre>private&nbsp;org.apache.hadoop.hbase.client.Delete&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#line.94">newDeleteWithSkipWAL</a>()</pre>
+</li>
+</ul>
+<a name="testDeleteToTableNotReplicate--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testDeleteToTableNotReplicate</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#line.102">testDeleteToTableNotReplicate</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="testDeleteToTableNeedReplicate--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testDeleteToTableNeedReplicate</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#line.107">testDeleteToTableNeedReplicate</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="newAppendWithSkipWAL--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>newAppendWithSkipWAL</h4>
+<pre>private&nbsp;org.apache.hadoop.hbase.client.Append&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#line.111">newAppendWithSkipWAL</a>()</pre>
+</li>
+</ul>
+<a name="testAppendToTableNotReplicate--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testAppendToTableNotReplicate</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#line.119">testAppendToTableNotReplicate</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="testAppendToTableNeedReplicate--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testAppendToTableNeedReplicate</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#line.124">testAppendToTableNeedReplicate</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="newIncrementWithSkipWAL--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>newIncrementWithSkipWAL</h4>
+<pre>private&nbsp;org.apache.hadoop.hbase.client.Increment&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#line.128">newIncrementWithSkipWAL</a>()</pre>
+</li>
+</ul>
+<a name="testIncrementToTableNotReplicate--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testIncrementToTableNotReplicate</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#line.136">testIncrementToTableNotReplicate</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="testIncrementToTableNeedReplicate--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testIncrementToTableNeedReplicate</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#line.141">testIncrementToTableNeedReplicate</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="testCheckWithMutateToTableNotReplicate--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testCheckWithMutateToTableNotReplicate</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#line.146">testCheckWithMutateToTableNotReplicate</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="testCheckWithMutateToTableNeedReplicate--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testCheckWithMutateToTableNeedReplicate</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#line.152">testCheckWithMutateToTableNeedReplicate</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/TestInvalidMutationDurabilityException.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestIntraRowPagination.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestLeaseRenewal.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" target="_top">Frames</a></li>
+<li><a href="TestInvalidMutationDurabilityException.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/fa850293/testdevapidocs/org/apache/hadoop/hbase/client/TestLeaseRenewal.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestLeaseRenewal.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestLeaseRenewal.html
index 46ce7d1..cecd871 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestLeaseRenewal.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestLeaseRenewal.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/client/TestIntraRowPagination.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestLimitedScanWithFilter.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -473,7 +473,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/client/TestIntraRowPagination.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestLimitedScanWithFilter.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/testdevapidocs/org/apache/hadoop/hbase/client/TestTableFavoredNodes.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestTableFavoredNodes.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestTableFavoredNodes.html
index df72d01..fee168e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestTableFavoredNodes.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestTableFavoredNodes.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestTableDescriptorUtils.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/client/TestTableShell.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestTableFavoredNodes.html" target="_top">Frames</a></li>
@@ -585,7 +585,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/client/TestTableDescriptorUtils.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/client/TestTableShell.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestTableFavoredNodes.html" target="_top">Frames</a></li>


[22/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 da040ad..d6702a7 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
@@ -2957,7 +2957,7 @@
 <span class="sourceLineNo">2949</span>        if(family == null) {<a name="line.2949"></a>
 <span class="sourceLineNo">2950</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2950"></a>
 <span class="sourceLineNo">2951</span>        }<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>        checkFamily(family);<a name="line.2952"></a>
+<span class="sourceLineNo">2952</span>        checkFamily(family, delete.getDurability());<a name="line.2952"></a>
 <span class="sourceLineNo">2953</span>      }<a name="line.2953"></a>
 <span class="sourceLineNo">2954</span>    }<a name="line.2954"></a>
 <span class="sourceLineNo">2955</span>  }<a name="line.2955"></a>
@@ -3569,7 +3569,7 @@
 <span class="sourceLineNo">3561</span><a name="line.3561"></a>
 <span class="sourceLineNo">3562</span>    @Override<a name="line.3562"></a>
 <span class="sourceLineNo">3563</span>    public void checkAndPreparePut(Put p) throws IOException {<a name="line.3563"></a>
-<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet());<a name="line.3564"></a>
+<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet(), p.getDurability());<a name="line.3564"></a>
 <span class="sourceLineNo">3565</span>    }<a name="line.3565"></a>
 <span class="sourceLineNo">3566</span><a name="line.3566"></a>
 <span class="sourceLineNo">3567</span>    @Override<a name="line.3567"></a>
@@ -4462,4304 +4462,4307 @@
 <span class="sourceLineNo">4454</span>    store.add(cell, memstoreAccounting);<a name="line.4454"></a>
 <span class="sourceLineNo">4455</span>  }<a name="line.4455"></a>
 <span class="sourceLineNo">4456</span><a name="line.4456"></a>
-<span class="sourceLineNo">4457</span>  /**<a name="line.4457"></a>
-<span class="sourceLineNo">4458</span>   * Check the collection of families for validity.<a name="line.4458"></a>
-<span class="sourceLineNo">4459</span>   * @param families<a name="line.4459"></a>
-<span class="sourceLineNo">4460</span>   * @throws NoSuchColumnFamilyException<a name="line.4460"></a>
-<span class="sourceLineNo">4461</span>   */<a name="line.4461"></a>
-<span class="sourceLineNo">4462</span>  public void checkFamilies(Collection&lt;byte[]&gt; families) throws NoSuchColumnFamilyException {<a name="line.4462"></a>
-<span class="sourceLineNo">4463</span>    for (byte[] family : families) {<a name="line.4463"></a>
-<span class="sourceLineNo">4464</span>      checkFamily(family);<a name="line.4464"></a>
-<span class="sourceLineNo">4465</span>    }<a name="line.4465"></a>
-<span class="sourceLineNo">4466</span>  }<a name="line.4466"></a>
-<span class="sourceLineNo">4467</span><a name="line.4467"></a>
-<span class="sourceLineNo">4468</span>  /**<a name="line.4468"></a>
-<span class="sourceLineNo">4469</span>   * Check the collection of families for valid timestamps<a name="line.4469"></a>
-<span class="sourceLineNo">4470</span>   * @param familyMap<a name="line.4470"></a>
-<span class="sourceLineNo">4471</span>   * @param now current timestamp<a name="line.4471"></a>
-<span class="sourceLineNo">4472</span>   * @throws FailedSanityCheckException<a name="line.4472"></a>
-<span class="sourceLineNo">4473</span>   */<a name="line.4473"></a>
-<span class="sourceLineNo">4474</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4474"></a>
-<span class="sourceLineNo">4475</span>      throws FailedSanityCheckException {<a name="line.4475"></a>
-<span class="sourceLineNo">4476</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4476"></a>
-<span class="sourceLineNo">4477</span>      return;<a name="line.4477"></a>
-<span class="sourceLineNo">4478</span>    }<a name="line.4478"></a>
-<span class="sourceLineNo">4479</span>    long maxTs = now + timestampSlop;<a name="line.4479"></a>
-<span class="sourceLineNo">4480</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4480"></a>
-<span class="sourceLineNo">4481</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4481"></a>
-<span class="sourceLineNo">4482</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4482"></a>
-<span class="sourceLineNo">4483</span>      assert kvs instanceof RandomAccess;<a name="line.4483"></a>
-<span class="sourceLineNo">4484</span>      int listSize  = kvs.size();<a name="line.4484"></a>
-<span class="sourceLineNo">4485</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4485"></a>
-<span class="sourceLineNo">4486</span>        Cell cell = kvs.get(i);<a name="line.4486"></a>
-<span class="sourceLineNo">4487</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4487"></a>
-<span class="sourceLineNo">4488</span>        long ts = cell.getTimestamp();<a name="line.4488"></a>
-<span class="sourceLineNo">4489</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4489"></a>
-<span class="sourceLineNo">4490</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4490"></a>
-<span class="sourceLineNo">4491</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4491"></a>
-<span class="sourceLineNo">4492</span>        }<a name="line.4492"></a>
-<span class="sourceLineNo">4493</span>      }<a name="line.4493"></a>
+<span class="sourceLineNo">4457</span>  private void checkFamilies(Collection&lt;byte[]&gt; families, Durability durability)<a name="line.4457"></a>
+<span class="sourceLineNo">4458</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4458"></a>
+<span class="sourceLineNo">4459</span>    for (byte[] family : families) {<a name="line.4459"></a>
+<span class="sourceLineNo">4460</span>      checkFamily(family, durability);<a name="line.4460"></a>
+<span class="sourceLineNo">4461</span>    }<a name="line.4461"></a>
+<span class="sourceLineNo">4462</span>  }<a name="line.4462"></a>
+<span class="sourceLineNo">4463</span><a name="line.4463"></a>
+<span class="sourceLineNo">4464</span>  private void checkFamily(final byte[] family, Durability durability)<a name="line.4464"></a>
+<span class="sourceLineNo">4465</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4465"></a>
+<span class="sourceLineNo">4466</span>    checkFamily(family);<a name="line.4466"></a>
+<span class="sourceLineNo">4467</span>    if (durability.equals(Durability.SKIP_WAL)<a name="line.4467"></a>
+<span class="sourceLineNo">4468</span>        &amp;&amp; htableDescriptor.getColumnFamily(family).getScope()<a name="line.4468"></a>
+<span class="sourceLineNo">4469</span>        != HConstants.REPLICATION_SCOPE_LOCAL) {<a name="line.4469"></a>
+<span class="sourceLineNo">4470</span>      throw new InvalidMutationDurabilityException(<a name="line.4470"></a>
+<span class="sourceLineNo">4471</span>          "Mutation's durability is SKIP_WAL but table's column family " + Bytes.toString(family)<a name="line.4471"></a>
+<span class="sourceLineNo">4472</span>              + " need replication");<a name="line.4472"></a>
+<span class="sourceLineNo">4473</span>    }<a name="line.4473"></a>
+<span class="sourceLineNo">4474</span>  }<a name="line.4474"></a>
+<span class="sourceLineNo">4475</span><a name="line.4475"></a>
+<span class="sourceLineNo">4476</span>  void checkFamily(final byte[] family) throws NoSuchColumnFamilyException {<a name="line.4476"></a>
+<span class="sourceLineNo">4477</span>    if (!this.htableDescriptor.hasColumnFamily(family)) {<a name="line.4477"></a>
+<span class="sourceLineNo">4478</span>      throw new NoSuchColumnFamilyException(<a name="line.4478"></a>
+<span class="sourceLineNo">4479</span>          "Column family " + Bytes.toString(family) + " does not exist in region " + this<a name="line.4479"></a>
+<span class="sourceLineNo">4480</span>              + " in table " + this.htableDescriptor);<a name="line.4480"></a>
+<span class="sourceLineNo">4481</span>    }<a name="line.4481"></a>
+<span class="sourceLineNo">4482</span>  }<a name="line.4482"></a>
+<span class="sourceLineNo">4483</span><a name="line.4483"></a>
+<span class="sourceLineNo">4484</span>  /**<a name="line.4484"></a>
+<span class="sourceLineNo">4485</span>   * Check the collection of families for valid timestamps<a name="line.4485"></a>
+<span class="sourceLineNo">4486</span>   * @param familyMap<a name="line.4486"></a>
+<span class="sourceLineNo">4487</span>   * @param now current timestamp<a name="line.4487"></a>
+<span class="sourceLineNo">4488</span>   * @throws FailedSanityCheckException<a name="line.4488"></a>
+<span class="sourceLineNo">4489</span>   */<a name="line.4489"></a>
+<span class="sourceLineNo">4490</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4490"></a>
+<span class="sourceLineNo">4491</span>      throws FailedSanityCheckException {<a name="line.4491"></a>
+<span class="sourceLineNo">4492</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4492"></a>
+<span class="sourceLineNo">4493</span>      return;<a name="line.4493"></a>
 <span class="sourceLineNo">4494</span>    }<a name="line.4494"></a>
-<span class="sourceLineNo">4495</span>  }<a name="line.4495"></a>
-<span class="sourceLineNo">4496</span><a name="line.4496"></a>
-<span class="sourceLineNo">4497</span>  /*<a name="line.4497"></a>
-<span class="sourceLineNo">4498</span>   * @param size<a name="line.4498"></a>
-<span class="sourceLineNo">4499</span>   * @return True if size is over the flush threshold<a name="line.4499"></a>
-<span class="sourceLineNo">4500</span>   */<a name="line.4500"></a>
-<span class="sourceLineNo">4501</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4501"></a>
-<span class="sourceLineNo">4502</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4502"></a>
-<span class="sourceLineNo">4503</span>  }<a name="line.4503"></a>
-<span class="sourceLineNo">4504</span><a name="line.4504"></a>
-<span class="sourceLineNo">4505</span>  /**<a name="line.4505"></a>
-<span class="sourceLineNo">4506</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4506"></a>
-<span class="sourceLineNo">4507</span>   * the recovered edits back up into this region.<a name="line.4507"></a>
-<span class="sourceLineNo">4508</span>   *<a name="line.4508"></a>
-<span class="sourceLineNo">4509</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4509"></a>
-<span class="sourceLineNo">4510</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4510"></a>
-<span class="sourceLineNo">4511</span>   * reflected in the HFiles.)<a name="line.4511"></a>
-<span class="sourceLineNo">4512</span>   *<a name="line.4512"></a>
-<span class="sourceLineNo">4513</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4513"></a>
-<span class="sourceLineNo">4514</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4514"></a>
-<span class="sourceLineNo">4515</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4515"></a>
-<span class="sourceLineNo">4516</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4516"></a>
-<span class="sourceLineNo">4517</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4517"></a>
-<span class="sourceLineNo">4518</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4518"></a>
-<span class="sourceLineNo">4519</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4519"></a>
-<span class="sourceLineNo">4520</span>   * edits.<a name="line.4520"></a>
-<span class="sourceLineNo">4521</span>   *<a name="line.4521"></a>
-<span class="sourceLineNo">4522</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4522"></a>
-<span class="sourceLineNo">4523</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4523"></a>
-<span class="sourceLineNo">4524</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4524"></a>
-<span class="sourceLineNo">4525</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4525"></a>
-<span class="sourceLineNo">4526</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4526"></a>
-<span class="sourceLineNo">4527</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4527"></a>
-<span class="sourceLineNo">4528</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4528"></a>
-<span class="sourceLineNo">4529</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4529"></a>
-<span class="sourceLineNo">4530</span>   * make sense in a this single region context only -- until we online.<a name="line.4530"></a>
-<span class="sourceLineNo">4531</span>   *<a name="line.4531"></a>
-<span class="sourceLineNo">4532</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4532"></a>
-<span class="sourceLineNo">4533</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4533"></a>
-<span class="sourceLineNo">4534</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4534"></a>
-<span class="sourceLineNo">4535</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4535"></a>
-<span class="sourceLineNo">4536</span>   * @throws IOException<a name="line.4536"></a>
-<span class="sourceLineNo">4537</span>   */<a name="line.4537"></a>
-<span class="sourceLineNo">4538</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4538"></a>
-<span class="sourceLineNo">4539</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4539"></a>
-<span class="sourceLineNo">4540</span>      throws IOException {<a name="line.4540"></a>
-<span class="sourceLineNo">4541</span>    long minSeqIdForTheRegion = -1;<a name="line.4541"></a>
-<span class="sourceLineNo">4542</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4542"></a>
-<span class="sourceLineNo">4543</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4543"></a>
-<span class="sourceLineNo">4544</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4544"></a>
-<span class="sourceLineNo">4545</span>      }<a name="line.4545"></a>
-<span class="sourceLineNo">4546</span>    }<a name="line.4546"></a>
-<span class="sourceLineNo">4547</span>    long seqid = minSeqIdForTheRegion;<a name="line.4547"></a>
-<span class="sourceLineNo">4548</span><a name="line.4548"></a>
-<span class="sourceLineNo">4549</span>    FileSystem walFS = getWalFileSystem();<a name="line.4549"></a>
-<span class="sourceLineNo">4550</span>    FileSystem rootFS = getFilesystem();<a name="line.4550"></a>
-<span class="sourceLineNo">4551</span>    Path regionDir = getWALRegionDir();<a name="line.4551"></a>
-<span class="sourceLineNo">4552</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4552"></a>
-<span class="sourceLineNo">4553</span><a name="line.4553"></a>
-<span class="sourceLineNo">4554</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4554"></a>
-<span class="sourceLineNo">4555</span>    // under the root dir even if walDir is set.<a name="line.4555"></a>
-<span class="sourceLineNo">4556</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4556"></a>
-<span class="sourceLineNo">4557</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4557"></a>
-<span class="sourceLineNo">4558</span>      filesUnderRootDir =<a name="line.4558"></a>
-<span class="sourceLineNo">4559</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4559"></a>
-<span class="sourceLineNo">4560</span>      seqid = Math.max(seqid,<a name="line.4560"></a>
-<span class="sourceLineNo">4561</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4561"></a>
-<span class="sourceLineNo">4562</span>              defaultRegionDir));<a name="line.4562"></a>
-<span class="sourceLineNo">4563</span>    }<a name="line.4563"></a>
+<span class="sourceLineNo">4495</span>    long maxTs = now + timestampSlop;<a name="line.4495"></a>
+<span class="sourceLineNo">4496</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4496"></a>
+<span class="sourceLineNo">4497</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4497"></a>
+<span class="sourceLineNo">4498</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4498"></a>
+<span class="sourceLineNo">4499</span>      assert kvs instanceof RandomAccess;<a name="line.4499"></a>
+<span class="sourceLineNo">4500</span>      int listSize  = kvs.size();<a name="line.4500"></a>
+<span class="sourceLineNo">4501</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4501"></a>
+<span class="sourceLineNo">4502</span>        Cell cell = kvs.get(i);<a name="line.4502"></a>
+<span class="sourceLineNo">4503</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4503"></a>
+<span class="sourceLineNo">4504</span>        long ts = cell.getTimestamp();<a name="line.4504"></a>
+<span class="sourceLineNo">4505</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4505"></a>
+<span class="sourceLineNo">4506</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4506"></a>
+<span class="sourceLineNo">4507</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4507"></a>
+<span class="sourceLineNo">4508</span>        }<a name="line.4508"></a>
+<span class="sourceLineNo">4509</span>      }<a name="line.4509"></a>
+<span class="sourceLineNo">4510</span>    }<a name="line.4510"></a>
+<span class="sourceLineNo">4511</span>  }<a name="line.4511"></a>
+<span class="sourceLineNo">4512</span><a name="line.4512"></a>
+<span class="sourceLineNo">4513</span>  /*<a name="line.4513"></a>
+<span class="sourceLineNo">4514</span>   * @param size<a name="line.4514"></a>
+<span class="sourceLineNo">4515</span>   * @return True if size is over the flush threshold<a name="line.4515"></a>
+<span class="sourceLineNo">4516</span>   */<a name="line.4516"></a>
+<span class="sourceLineNo">4517</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4517"></a>
+<span class="sourceLineNo">4518</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4518"></a>
+<span class="sourceLineNo">4519</span>  }<a name="line.4519"></a>
+<span class="sourceLineNo">4520</span><a name="line.4520"></a>
+<span class="sourceLineNo">4521</span>  /**<a name="line.4521"></a>
+<span class="sourceLineNo">4522</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4522"></a>
+<span class="sourceLineNo">4523</span>   * the recovered edits back up into this region.<a name="line.4523"></a>
+<span class="sourceLineNo">4524</span>   *<a name="line.4524"></a>
+<span class="sourceLineNo">4525</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4525"></a>
+<span class="sourceLineNo">4526</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4526"></a>
+<span class="sourceLineNo">4527</span>   * reflected in the HFiles.)<a name="line.4527"></a>
+<span class="sourceLineNo">4528</span>   *<a name="line.4528"></a>
+<span class="sourceLineNo">4529</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4529"></a>
+<span class="sourceLineNo">4530</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4530"></a>
+<span class="sourceLineNo">4531</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4531"></a>
+<span class="sourceLineNo">4532</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4532"></a>
+<span class="sourceLineNo">4533</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4533"></a>
+<span class="sourceLineNo">4534</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4534"></a>
+<span class="sourceLineNo">4535</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4535"></a>
+<span class="sourceLineNo">4536</span>   * edits.<a name="line.4536"></a>
+<span class="sourceLineNo">4537</span>   *<a name="line.4537"></a>
+<span class="sourceLineNo">4538</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4538"></a>
+<span class="sourceLineNo">4539</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4539"></a>
+<span class="sourceLineNo">4540</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4540"></a>
+<span class="sourceLineNo">4541</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4541"></a>
+<span class="sourceLineNo">4542</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4542"></a>
+<span class="sourceLineNo">4543</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4543"></a>
+<span class="sourceLineNo">4544</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4544"></a>
+<span class="sourceLineNo">4545</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4545"></a>
+<span class="sourceLineNo">4546</span>   * make sense in a this single region context only -- until we online.<a name="line.4546"></a>
+<span class="sourceLineNo">4547</span>   *<a name="line.4547"></a>
+<span class="sourceLineNo">4548</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4548"></a>
+<span class="sourceLineNo">4549</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4549"></a>
+<span class="sourceLineNo">4550</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4550"></a>
+<span class="sourceLineNo">4551</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4551"></a>
+<span class="sourceLineNo">4552</span>   * @throws IOException<a name="line.4552"></a>
+<span class="sourceLineNo">4553</span>   */<a name="line.4553"></a>
+<span class="sourceLineNo">4554</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4554"></a>
+<span class="sourceLineNo">4555</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4555"></a>
+<span class="sourceLineNo">4556</span>      throws IOException {<a name="line.4556"></a>
+<span class="sourceLineNo">4557</span>    long minSeqIdForTheRegion = -1;<a name="line.4557"></a>
+<span class="sourceLineNo">4558</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4558"></a>
+<span class="sourceLineNo">4559</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4559"></a>
+<span class="sourceLineNo">4560</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4560"></a>
+<span class="sourceLineNo">4561</span>      }<a name="line.4561"></a>
+<span class="sourceLineNo">4562</span>    }<a name="line.4562"></a>
+<span class="sourceLineNo">4563</span>    long seqid = minSeqIdForTheRegion;<a name="line.4563"></a>
 <span class="sourceLineNo">4564</span><a name="line.4564"></a>
-<span class="sourceLineNo">4565</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4565"></a>
-<span class="sourceLineNo">4566</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4566"></a>
-<span class="sourceLineNo">4567</span>        files, reporter, regionDir));<a name="line.4567"></a>
-<span class="sourceLineNo">4568</span><a name="line.4568"></a>
-<span class="sourceLineNo">4569</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4569"></a>
-<span class="sourceLineNo">4570</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4570"></a>
-<span class="sourceLineNo">4571</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4571"></a>
-<span class="sourceLineNo">4572</span>    }<a name="line.4572"></a>
-<span class="sourceLineNo">4573</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4573"></a>
-<span class="sourceLineNo">4574</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4574"></a>
-<span class="sourceLineNo">4575</span>      // For debugging data loss issues!<a name="line.4575"></a>
-<span class="sourceLineNo">4576</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4576"></a>
-<span class="sourceLineNo">4577</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4577"></a>
-<span class="sourceLineNo">4578</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4578"></a>
-<span class="sourceLineNo">4579</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4579"></a>
-<span class="sourceLineNo">4580</span>      for (Path file: files) {<a name="line.4580"></a>
-<span class="sourceLineNo">4581</span>        fakeStoreFiles.add(<a name="line.4581"></a>
-<span class="sourceLineNo">4582</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4582"></a>
-<span class="sourceLineNo">4583</span>      }<a name="line.4583"></a>
-<span class="sourceLineNo">4584</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4584"></a>
-<span class="sourceLineNo">4585</span>    } else {<a name="line.4585"></a>
-<span class="sourceLineNo">4586</span>      if (filesUnderRootDir != null) {<a name="line.4586"></a>
-<span class="sourceLineNo">4587</span>        for (Path file : filesUnderRootDir) {<a name="line.4587"></a>
-<span class="sourceLineNo">4588</span>          if (!rootFS.delete(file, false)) {<a name="line.4588"></a>
-<span class="sourceLineNo">4589</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4589"></a>
-<span class="sourceLineNo">4590</span>          } else {<a name="line.4590"></a>
-<span class="sourceLineNo">4591</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4591"></a>
-<span class="sourceLineNo">4592</span>          }<a name="line.4592"></a>
-<span class="sourceLineNo">4593</span>        }<a name="line.4593"></a>
-<span class="sourceLineNo">4594</span>      }<a name="line.4594"></a>
-<span class="sourceLineNo">4595</span>      for (Path file: files) {<a name="line.4595"></a>
-<span class="sourceLineNo">4596</span>        if (!walFS.delete(file, false)) {<a name="line.4596"></a>
-<span class="sourceLineNo">4597</span>          LOG.error("Failed delete of " + file);<a name="line.4597"></a>
-<span class="sourceLineNo">4598</span>        } else {<a name="line.4598"></a>
-<span class="sourceLineNo">4599</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4599"></a>
-<span class="sourceLineNo">4600</span>        }<a name="line.4600"></a>
-<span class="sourceLineNo">4601</span>      }<a name="line.4601"></a>
-<span class="sourceLineNo">4602</span>    }<a name="line.4602"></a>
-<span class="sourceLineNo">4603</span>    return seqid;<a name="line.4603"></a>
-<span class="sourceLineNo">4604</span>  }<a name="line.4604"></a>
-<span class="sourceLineNo">4605</span><a name="line.4605"></a>
-<span class="sourceLineNo">4606</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4606"></a>
-<span class="sourceLineNo">4607</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4607"></a>
-<span class="sourceLineNo">4608</span>      throws IOException {<a name="line.4608"></a>
-<span class="sourceLineNo">4609</span>    long seqid = minSeqIdForTheRegion;<a name="line.4609"></a>
-<span class="sourceLineNo">4610</span>    if (LOG.isDebugEnabled()) {<a name="line.4610"></a>
-<span class="sourceLineNo">4611</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4611"></a>
-<span class="sourceLineNo">4612</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4612"></a>
-<span class="sourceLineNo">4613</span>    }<a name="line.4613"></a>
-<span class="sourceLineNo">4614</span><a name="line.4614"></a>
-<span class="sourceLineNo">4615</span>    if (files == null || files.isEmpty()) {<a name="line.4615"></a>
-<span class="sourceLineNo">4616</span>      return minSeqIdForTheRegion;<a name="line.4616"></a>
-<span class="sourceLineNo">4617</span>    }<a name="line.4617"></a>
-<span class="sourceLineNo">4618</span><a name="line.4618"></a>
-<span class="sourceLineNo">4619</span>    for (Path edits: files) {<a name="line.4619"></a>
-<span class="sourceLineNo">4620</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4620"></a>
-<span class="sourceLineNo">4621</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4621"></a>
-<span class="sourceLineNo">4622</span>        continue;<a name="line.4622"></a>
-<span class="sourceLineNo">4623</span>      }<a name="line.4623"></a>
-<span class="sourceLineNo">4624</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4624"></a>
-<span class="sourceLineNo">4625</span><a name="line.4625"></a>
-<span class="sourceLineNo">4626</span>      long maxSeqId;<a name="line.4626"></a>
-<span class="sourceLineNo">4627</span>      String fileName = edits.getName();<a name="line.4627"></a>
-<span class="sourceLineNo">4628</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4628"></a>
-<span class="sourceLineNo">4629</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4629"></a>
-<span class="sourceLineNo">4630</span>        if (LOG.isDebugEnabled()) {<a name="line.4630"></a>
-<span class="sourceLineNo">4631</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4631"></a>
-<span class="sourceLineNo">4632</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4632"></a>
-<span class="sourceLineNo">4633</span>              + ", skipped the whole file, path=" + edits;<a name="line.4633"></a>
-<span class="sourceLineNo">4634</span>          LOG.debug(msg);<a name="line.4634"></a>
-<span class="sourceLineNo">4635</span>        }<a name="line.4635"></a>
-<span class="sourceLineNo">4636</span>        continue;<a name="line.4636"></a>
-<span class="sourceLineNo">4637</span>      }<a name="line.4637"></a>
-<span class="sourceLineNo">4638</span><a name="line.4638"></a>
-<span class="sourceLineNo">4639</span>      try {<a name="line.4639"></a>
-<span class="sourceLineNo">4640</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4640"></a>
-<span class="sourceLineNo">4641</span>        // if seqId is greater<a name="line.4641"></a>
-<span class="sourceLineNo">4642</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4642"></a>
-<span class="sourceLineNo">4643</span>      } catch (IOException e) {<a name="line.4643"></a>
-<span class="sourceLineNo">4644</span>        boolean skipErrors = conf.getBoolean(<a name="line.4644"></a>
-<span class="sourceLineNo">4645</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4645"></a>
-<span class="sourceLineNo">4646</span>            conf.getBoolean(<a name="line.4646"></a>
-<span class="sourceLineNo">4647</span>                "hbase.skip.errors",<a name="line.4647"></a>
-<span class="sourceLineNo">4648</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4648"></a>
-<span class="sourceLineNo">4649</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4649"></a>
-<span class="sourceLineNo">4650</span>          LOG.warn(<a name="line.4650"></a>
-<span class="sourceLineNo">4651</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4651"></a>
-<span class="sourceLineNo">4652</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4652"></a>
-<span class="sourceLineNo">4653</span>        }<a name="line.4653"></a>
-<span class="sourceLineNo">4654</span>        if (skipErrors) {<a name="line.4654"></a>
-<span class="sourceLineNo">4655</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4655"></a>
-<span class="sourceLineNo">4656</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4656"></a>
-<span class="sourceLineNo">4657</span>              + "=true so continuing. Renamed " + edits +<a name="line.4657"></a>
-<span class="sourceLineNo">4658</span>              " as " + p, e);<a name="line.4658"></a>
-<span class="sourceLineNo">4659</span>        } else {<a name="line.4659"></a>
-<span class="sourceLineNo">4660</span>          throw e;<a name="line.4660"></a>
-<span class="sourceLineNo">4661</span>        }<a name="line.4661"></a>
-<span class="sourceLineNo">4662</span>      }<a name="line.4662"></a>
-<span class="sourceLineNo">4663</span>    }<a name="line.4663"></a>
-<span class="sourceLineNo">4664</span>    return seqid;<a name="line.4664"></a>
-<span class="sourceLineNo">4665</span>  }<a name="line.4665"></a>
-<span class="sourceLineNo">4666</span><a name="line.4666"></a>
-<span class="sourceLineNo">4667</span>  /*<a name="line.4667"></a>
-<span class="sourceLineNo">4668</span>   * @param edits File of recovered edits.<a name="line.4668"></a>
-<span class="sourceLineNo">4669</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4669"></a>
-<span class="sourceLineNo">4670</span>   * must be larger than this to be replayed for each store.<a name="line.4670"></a>
-<span class="sourceLineNo">4671</span>   * @param reporter<a name="line.4671"></a>
-<span class="sourceLineNo">4672</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4672"></a>
-<span class="sourceLineNo">4673</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4673"></a>
-<span class="sourceLineNo">4674</span>   * @throws IOException<a name="line.4674"></a>
-<span class="sourceLineNo">4675</span>   */<a name="line.4675"></a>
-<span class="sourceLineNo">4676</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4676"></a>
-<span class="sourceLineNo">4677</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4677"></a>
-<span class="sourceLineNo">4678</span>    throws IOException {<a name="line.4678"></a>
-<span class="sourceLineNo">4679</span>    String msg = "Replaying edits from " + edits;<a name="line.4679"></a>
-<span class="sourceLineNo">4680</span>    LOG.info(msg);<a name="line.4680"></a>
-<span class="sourceLineNo">4681</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4681"></a>
+<span class="sourceLineNo">4565</span>    FileSystem walFS = getWalFileSystem();<a name="line.4565"></a>
+<span class="sourceLineNo">4566</span>    FileSystem rootFS = getFilesystem();<a name="line.4566"></a>
+<span class="sourceLineNo">4567</span>    Path regionDir = getWALRegionDir();<a name="line.4567"></a>
+<span class="sourceLineNo">4568</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4568"></a>
+<span class="sourceLineNo">4569</span><a name="line.4569"></a>
+<span class="sourceLineNo">4570</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4570"></a>
+<span class="sourceLineNo">4571</span>    // under the root dir even if walDir is set.<a name="line.4571"></a>
+<span class="sourceLineNo">4572</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4572"></a>
+<span class="sourceLineNo">4573</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4573"></a>
+<span class="sourceLineNo">4574</span>      filesUnderRootDir =<a name="line.4574"></a>
+<span class="sourceLineNo">4575</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4575"></a>
+<span class="sourceLineNo">4576</span>      seqid = Math.max(seqid,<a name="line.4576"></a>
+<span class="sourceLineNo">4577</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4577"></a>
+<span class="sourceLineNo">4578</span>              defaultRegionDir));<a name="line.4578"></a>
+<span class="sourceLineNo">4579</span>    }<a name="line.4579"></a>
+<span class="sourceLineNo">4580</span><a name="line.4580"></a>
+<span class="sourceLineNo">4581</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4581"></a>
+<span class="sourceLineNo">4582</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4582"></a>
+<span class="sourceLineNo">4583</span>        files, reporter, regionDir));<a name="line.4583"></a>
+<span class="sourceLineNo">4584</span><a name="line.4584"></a>
+<span class="sourceLineNo">4585</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4585"></a>
+<span class="sourceLineNo">4586</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4586"></a>
+<span class="sourceLineNo">4587</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4587"></a>
+<span class="sourceLineNo">4588</span>    }<a name="line.4588"></a>
+<span class="sourceLineNo">4589</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4589"></a>
+<span class="sourceLineNo">4590</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4590"></a>
+<span class="sourceLineNo">4591</span>      // For debugging data loss issues!<a name="line.4591"></a>
+<span class="sourceLineNo">4592</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4592"></a>
+<span class="sourceLineNo">4593</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4593"></a>
+<span class="sourceLineNo">4594</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4594"></a>
+<span class="sourceLineNo">4595</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4595"></a>
+<span class="sourceLineNo">4596</span>      for (Path file: files) {<a name="line.4596"></a>
+<span class="sourceLineNo">4597</span>        fakeStoreFiles.add(<a name="line.4597"></a>
+<span class="sourceLineNo">4598</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4598"></a>
+<span class="sourceLineNo">4599</span>      }<a name="line.4599"></a>
+<span class="sourceLineNo">4600</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4600"></a>
+<span class="sourceLineNo">4601</span>    } else {<a name="line.4601"></a>
+<span class="sourceLineNo">4602</span>      if (filesUnderRootDir != null) {<a name="line.4602"></a>
+<span class="sourceLineNo">4603</span>        for (Path file : filesUnderRootDir) {<a name="line.4603"></a>
+<span class="sourceLineNo">4604</span>          if (!rootFS.delete(file, false)) {<a name="line.4604"></a>
+<span class="sourceLineNo">4605</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4605"></a>
+<span class="sourceLineNo">4606</span>          } else {<a name="line.4606"></a>
+<span class="sourceLineNo">4607</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4607"></a>
+<span class="sourceLineNo">4608</span>          }<a name="line.4608"></a>
+<span class="sourceLineNo">4609</span>        }<a name="line.4609"></a>
+<span class="sourceLineNo">4610</span>      }<a name="line.4610"></a>
+<span class="sourceLineNo">4611</span>      for (Path file: files) {<a name="line.4611"></a>
+<span class="sourceLineNo">4612</span>        if (!walFS.delete(file, false)) {<a name="line.4612"></a>
+<span class="sourceLineNo">4613</span>          LOG.error("Failed delete of " + file);<a name="line.4613"></a>
+<span class="sourceLineNo">4614</span>        } else {<a name="line.4614"></a>
+<span class="sourceLineNo">4615</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4615"></a>
+<span class="sourceLineNo">4616</span>        }<a name="line.4616"></a>
+<span class="sourceLineNo">4617</span>      }<a name="line.4617"></a>
+<span class="sourceLineNo">4618</span>    }<a name="line.4618"></a>
+<span class="sourceLineNo">4619</span>    return seqid;<a name="line.4619"></a>
+<span class="sourceLineNo">4620</span>  }<a name="line.4620"></a>
+<span class="sourceLineNo">4621</span><a name="line.4621"></a>
+<span class="sourceLineNo">4622</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4622"></a>
+<span class="sourceLineNo">4623</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4623"></a>
+<span class="sourceLineNo">4624</span>      throws IOException {<a name="line.4624"></a>
+<span class="sourceLineNo">4625</span>    long seqid = minSeqIdForTheRegion;<a name="line.4625"></a>
+<span class="sourceLineNo">4626</span>    if (LOG.isDebugEnabled()) {<a name="line.4626"></a>
+<span class="sourceLineNo">4627</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4627"></a>
+<span class="sourceLineNo">4628</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4628"></a>
+<span class="sourceLineNo">4629</span>    }<a name="line.4629"></a>
+<span class="sourceLineNo">4630</span><a name="line.4630"></a>
+<span class="sourceLineNo">4631</span>    if (files == null || files.isEmpty()) {<a name="line.4631"></a>
+<span class="sourceLineNo">4632</span>      return minSeqIdForTheRegion;<a name="line.4632"></a>
+<span class="sourceLineNo">4633</span>    }<a name="line.4633"></a>
+<span class="sourceLineNo">4634</span><a name="line.4634"></a>
+<span class="sourceLineNo">4635</span>    for (Path edits: files) {<a name="line.4635"></a>
+<span class="sourceLineNo">4636</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4636"></a>
+<span class="sourceLineNo">4637</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4637"></a>
+<span class="sourceLineNo">4638</span>        continue;<a name="line.4638"></a>
+<span class="sourceLineNo">4639</span>      }<a name="line.4639"></a>
+<span class="sourceLineNo">4640</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4640"></a>
+<span class="sourceLineNo">4641</span><a name="line.4641"></a>
+<span class="sourceLineNo">4642</span>      long maxSeqId;<a name="line.4642"></a>
+<span class="sourceLineNo">4643</span>      String fileName = edits.getName();<a name="line.4643"></a>
+<span class="sourceLineNo">4644</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4644"></a>
+<span class="sourceLineNo">4645</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4645"></a>
+<span class="sourceLineNo">4646</span>        if (LOG.isDebugEnabled()) {<a name="line.4646"></a>
+<span class="sourceLineNo">4647</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4647"></a>
+<span class="sourceLineNo">4648</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4648"></a>
+<span class="sourceLineNo">4649</span>              + ", skipped the whole file, path=" + edits;<a name="line.4649"></a>
+<span class="sourceLineNo">4650</span>          LOG.debug(msg);<a name="line.4650"></a>
+<span class="sourceLineNo">4651</span>        }<a name="line.4651"></a>
+<span class="sourceLineNo">4652</span>        continue;<a name="line.4652"></a>
+<span class="sourceLineNo">4653</span>      }<a name="line.4653"></a>
+<span class="sourceLineNo">4654</span><a name="line.4654"></a>
+<span class="sourceLineNo">4655</span>      try {<a name="line.4655"></a>
+<span class="sourceLineNo">4656</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4656"></a>
+<span class="sourceLineNo">4657</span>        // if seqId is greater<a name="line.4657"></a>
+<span class="sourceLineNo">4658</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4658"></a>
+<span class="sourceLineNo">4659</span>      } catch (IOException e) {<a name="line.4659"></a>
+<span class="sourceLineNo">4660</span>        boolean skipErrors = conf.getBoolean(<a name="line.4660"></a>
+<span class="sourceLineNo">4661</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4661"></a>
+<span class="sourceLineNo">4662</span>            conf.getBoolean(<a name="line.4662"></a>
+<span class="sourceLineNo">4663</span>                "hbase.skip.errors",<a name="line.4663"></a>
+<span class="sourceLineNo">4664</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4664"></a>
+<span class="sourceLineNo">4665</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4665"></a>
+<span class="sourceLineNo">4666</span>          LOG.warn(<a name="line.4666"></a>
+<span class="sourceLineNo">4667</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4667"></a>
+<span class="sourceLineNo">4668</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4668"></a>
+<span class="sourceLineNo">4669</span>        }<a name="line.4669"></a>
+<span class="sourceLineNo">4670</span>        if (skipErrors) {<a name="line.4670"></a>
+<span class="sourceLineNo">4671</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4671"></a>
+<span class="sourceLineNo">4672</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4672"></a>
+<span class="sourceLineNo">4673</span>              + "=true so continuing. Renamed " + edits +<a name="line.4673"></a>
+<span class="sourceLineNo">4674</span>              " as " + p, e);<a name="line.4674"></a>
+<span class="sourceLineNo">4675</span>        } else {<a name="line.4675"></a>
+<span class="sourceLineNo">4676</span>          throw e;<a name="line.4676"></a>
+<span class="sourceLineNo">4677</span>        }<a name="line.4677"></a>
+<span class="sourceLineNo">4678</span>      }<a name="line.4678"></a>
+<span class="sourceLineNo">4679</span>    }<a name="line.4679"></a>
+<span class="sourceLineNo">4680</span>    return seqid;<a name="line.4680"></a>
+<span class="sourceLineNo">4681</span>  }<a name="line.4681"></a>
 <span class="sourceLineNo">4682</span><a name="line.4682"></a>
-<span class="sourceLineNo">4683</span>    status.setStatus("Opening recovered edits");<a name="line.4683"></a>
-<span class="sourceLineNo">4684</span>    WAL.Reader reader = null;<a name="line.4684"></a>
-<span class="sourceLineNo">4685</span>    try {<a name="line.4685"></a>
-<span class="sourceLineNo">4686</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4686"></a>
-<span class="sourceLineNo">4687</span>      long currentEditSeqId = -1;<a name="line.4687"></a>
-<span class="sourceLineNo">4688</span>      long currentReplaySeqId = -1;<a name="line.4688"></a>
-<span class="sourceLineNo">4689</span>      long firstSeqIdInLog = -1;<a name="line.4689"></a>
-<span class="sourceLineNo">4690</span>      long skippedEdits = 0;<a name="line.4690"></a>
-<span class="sourceLineNo">4691</span>      long editsCount = 0;<a name="line.4691"></a>
-<span class="sourceLineNo">4692</span>      long intervalEdits = 0;<a name="line.4692"></a>
-<span class="sourceLineNo">4693</span>      WAL.Entry entry;<a name="line.4693"></a>
-<span class="sourceLineNo">4694</span>      HStore store = null;<a name="line.4694"></a>
-<span class="sourceLineNo">4695</span>      boolean reported_once = false;<a name="line.4695"></a>
-<span class="sourceLineNo">4696</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4696"></a>
-<span class="sourceLineNo">4697</span><a name="line.4697"></a>
-<span class="sourceLineNo">4698</span>      try {<a name="line.4698"></a>
-<span class="sourceLineNo">4699</span>        // How many edits seen before we check elapsed time<a name="line.4699"></a>
-<span class="sourceLineNo">4700</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4700"></a>
-<span class="sourceLineNo">4701</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4701"></a>
-<span class="sourceLineNo">4702</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4702"></a>
-<span class="sourceLineNo">4703</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4703"></a>
-<span class="sourceLineNo">4704</span><a name="line.4704"></a>
-<span class="sourceLineNo">4705</span>        if (coprocessorHost != null) {<a name="line.4705"></a>
-<span class="sourceLineNo">4706</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4706"></a>
-<span class="sourceLineNo">4707</span>        }<a name="line.4707"></a>
-<span class="sourceLineNo">4708</span><a name="line.4708"></a>
-<span class="sourceLineNo">4709</span>        while ((entry = reader.next()) != null) {<a name="line.4709"></a>
-<span class="sourceLineNo">4710</span>          WALKey key = entry.getKey();<a name="line.4710"></a>
-<span class="sourceLineNo">4711</span>          WALEdit val = entry.getEdit();<a name="line.4711"></a>
-<span class="sourceLineNo">4712</span><a name="line.4712"></a>
-<span class="sourceLineNo">4713</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4713"></a>
-<span class="sourceLineNo">4714</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4714"></a>
-<span class="sourceLineNo">4715</span>          }<a name="line.4715"></a>
-<span class="sourceLineNo">4716</span><a name="line.4716"></a>
-<span class="sourceLineNo">4717</span>          if (reporter != null) {<a name="line.4717"></a>
-<span class="sourceLineNo">4718</span>            intervalEdits += val.size();<a name="line.4718"></a>
-<span class="sourceLineNo">4719</span>            if (intervalEdits &gt;= interval) {<a name="line.4719"></a>
-<span class="sourceLineNo">4720</span>              // Number of edits interval reached<a name="line.4720"></a>
-<span class="sourceLineNo">4721</span>              intervalEdits = 0;<a name="line.4721"></a>
-<span class="sourceLineNo">4722</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4722"></a>
-<span class="sourceLineNo">4723</span>              if (lastReport + period &lt;= cur) {<a name="line.4723"></a>
-<span class="sourceLineNo">4724</span>                status.setStatus("Replaying edits..." +<a name="line.4724"></a>
-<span class="sourceLineNo">4725</span>                    " skipped=" + skippedEdits +<a name="line.4725"></a>
-<span class="sourceLineNo">4726</span>                    " edits=" + editsCount);<a name="line.4726"></a>
-<span class="sourceLineNo">4727</span>                // Timeout reached<a name="line.4727"></a>
-<span class="sourceLineNo">4728</span>                if(!reporter.progress()) {<a name="line.4728"></a>
-<span class="sourceLineNo">4729</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4729"></a>
-<span class="sourceLineNo">4730</span>                  LOG.warn(msg);<a name="line.4730"></a>
-<span class="sourceLineNo">4731</span>                  status.abort(msg);<a name="line.4731"></a>
-<span class="sourceLineNo">4732</span>                  throw new IOException(msg);<a name="line.4732"></a>
-<span class="sourceLineNo">4733</span>                }<a name="line.4733"></a>
-<span class="sourceLineNo">4734</span>                reported_once = true;<a name="line.4734"></a>
-<span class="sourceLineNo">4735</span>                lastReport = cur;<a name="line.4735"></a>
-<span class="sourceLineNo">4736</span>              }<a name="line.4736"></a>
-<span class="sourceLineNo">4737</span>            }<a name="line.4737"></a>
-<span class="sourceLineNo">4738</span>          }<a name="line.4738"></a>
-<span class="sourceLineNo">4739</span><a name="line.4739"></a>
-<span class="sourceLineNo">4740</span>          if (firstSeqIdInLog == -1) {<a name="line.4740"></a>
-<span class="sourceLineNo">4741</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4741"></a>
-<span class="sourceLineNo">4742</span>          }<a name="line.4742"></a>
-<span class="sourceLineNo">4743</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4743"></a>
-<span class="sourceLineNo">4744</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4744"></a>
-<span class="sourceLineNo">4745</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4745"></a>
-<span class="sourceLineNo">4746</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4746"></a>
-<span class="sourceLineNo">4747</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4747"></a>
-<span class="sourceLineNo">4748</span>                + "; edit=" + val);<a name="line.4748"></a>
-<span class="sourceLineNo">4749</span>          } else {<a name="line.4749"></a>
-<span class="sourceLineNo">4750</span>            currentEditSeqId = key.getSequenceId();<a name="line.4750"></a>
-<span class="sourceLineNo">4751</span>          }<a name="line.4751"></a>
-<span class="sourceLineNo">4752</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4752"></a>
-<span class="sourceLineNo">4753</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4753"></a>
-<span class="sourceLineNo">4754</span><a name="line.4754"></a>
-<span class="sourceLineNo">4755</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4755"></a>
-<span class="sourceLineNo">4756</span>          // instead of a KeyValue.<a name="line.4756"></a>
-<span class="sourceLineNo">4757</span>          if (coprocessorHost != null) {<a name="line.4757"></a>
-<span class="sourceLineNo">4758</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4758"></a>
-<span class="sourceLineNo">4759</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4759"></a>
-<span class="sourceLineNo">4760</span>              // if bypass this wal entry, ignore it ...<a name="line.4760"></a>
-<span class="sourceLineNo">4761</span>              continue;<a name="line.4761"></a>
-<span class="sourceLineNo">4762</span>            }<a name="line.4762"></a>
-<span class="sourceLineNo">4763</span>          }<a name="line.4763"></a>
-<span class="sourceLineNo">4764</span>          boolean checkRowWithinBoundary = false;<a name="line.4764"></a>
-<span class="sourceLineNo">4765</span>          // Check this edit is for this region.<a name="line.4765"></a>
-<span class="sourceLineNo">4766</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4766"></a>
-<span class="sourceLineNo">4767</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4767"></a>
-<span class="sourceLineNo">4768</span>            checkRowWithinBoundary = true;<a name="line.4768"></a>
-<span class="sourceLineNo">4769</span>          }<a name="line.4769"></a>
+<span class="sourceLineNo">4683</span>  /*<a name="line.4683"></a>
+<span class="sourceLineNo">4684</span>   * @param edits File of recovered edits.<a name="line.4684"></a>
+<span class="sourceLineNo">4685</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4685"></a>
+<span class="sourceLineNo">4686</span>   * must be larger than this to be replayed for each store.<a name="line.4686"></a>
+<span class="sourceLineNo">4687</span>   * @param reporter<a name="line.4687"></a>
+<span class="sourceLineNo">4688</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4688"></a>
+<span class="sourceLineNo">4689</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4689"></a>
+<span class="sourceLineNo">4690</span>   * @throws IOException<a name="line.4690"></a>
+<span class="sourceLineNo">4691</span>   */<a name="line.4691"></a>
+<span class="sourceLineNo">4692</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4692"></a>
+<span class="sourceLineNo">4693</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4693"></a>
+<span class="sourceLineNo">4694</span>    throws IOException {<a name="line.4694"></a>
+<span class="sourceLineNo">4695</span>    String msg = "Replaying edits from " + edits;<a name="line.4695"></a>
+<span class="sourceLineNo">4696</span>    LOG.info(msg);<a name="line.4696"></a>
+<span class="sourceLineNo">4697</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4697"></a>
+<span class="sourceLineNo">4698</span><a name="line.4698"></a>
+<span class="sourceLineNo">4699</span>    status.setStatus("Opening recovered edits");<a name="line.4699"></a>
+<span class="sourceLineNo">4700</span>    WAL.Reader reader = null;<a name="line.4700"></a>
+<span class="sourceLineNo">4701</span>    try {<a name="line.4701"></a>
+<span class="sourceLineNo">4702</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4702"></a>
+<span class="sourceLineNo">4703</span>      long currentEditSeqId = -1;<a name="line.4703"></a>
+<span class="sourceLineNo">4704</span>      long currentReplaySeqId = -1;<a name="line.4704"></a>
+<span class="sourceLineNo">4705</span>      long firstSeqIdInLog = -1;<a name="line.4705"></a>
+<span class="sourceLineNo">4706</span>      long skippedEdits = 0;<a name="line.4706"></a>
+<span class="sourceLineNo">4707</span>      long editsCount = 0;<a name="line.4707"></a>
+<span class="sourceLineNo">4708</span>      long intervalEdits = 0;<a name="line.4708"></a>
+<span class="sourceLineNo">4709</span>      WAL.Entry entry;<a name="line.4709"></a>
+<span class="sourceLineNo">4710</span>      HStore store = null;<a name="line.4710"></a>
+<span class="sourceLineNo">4711</span>      boolean reported_once = false;<a name="line.4711"></a>
+<span class="sourceLineNo">4712</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4712"></a>
+<span class="sourceLineNo">4713</span><a name="line.4713"></a>
+<span class="sourceLineNo">4714</span>      try {<a name="line.4714"></a>
+<span class="sourceLineNo">4715</span>        // How many edits seen before we check elapsed time<a name="line.4715"></a>
+<span class="sourceLineNo">4716</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4716"></a>
+<span class="sourceLineNo">4717</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4717"></a>
+<span class="sourceLineNo">4718</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4718"></a>
+<span class="sourceLineNo">4719</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4719"></a>
+<span class="sourceLineNo">4720</span><a name="line.4720"></a>
+<span class="sourceLineNo">4721</span>        if (coprocessorHost != null) {<a name="line.4721"></a>
+<span class="sourceLineNo">4722</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4722"></a>
+<span class="sourceLineNo">4723</span>        }<a name="line.4723"></a>
+<span class="sourceLineNo">4724</span><a name="line.4724"></a>
+<span class="sourceLineNo">4725</span>        while ((entry = reader.next()) != null) {<a name="line.4725"></a>
+<span class="sourceLineNo">4726</span>          WALKey key = entry.getKey();<a name="line.4726"></a>
+<span class="sourceLineNo">4727</span>          WALEdit val = entry.getEdit();<a name="line.4727"></a>
+<span class="sourceLineNo">4728</span><a name="line.4728"></a>
+<span class="sourceLineNo">4729</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4729"></a>
+<span class="sourceLineNo">4730</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4730"></a>
+<span class="sourceLineNo">4731</span>          }<a name="line.4731"></a>
+<span class="sourceLineNo">4732</span><a name="line.4732"></a>
+<span class="sourceLineNo">4733</span>          if (reporter != null) {<a name="line.4733"></a>
+<span class="sourceLineNo">4734</span>            intervalEdits += val.size();<a name="line.4734"></a>
+<span class="sourceLineNo">4735</span>            if (intervalEdits &gt;= interval) {<a name="line.4735"></a>
+<span class="sourceLineNo">4736</span>              // Number of edits interval reached<a name="line.4736"></a>
+<span class="sourceLineNo">4737</span>              intervalEdits = 0;<a name="line.4737"></a>
+<span class="sourceLineNo">4738</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4738"></a>
+<span class="sourceLineNo">4739</span>              if (lastReport + period &lt;= cur) {<a name="line.4739"></a>
+<span class="sourceLineNo">4740</span>                status.setStatus("Replaying edits..." +<a name="line.4740"></a>
+<span class="sourceLineNo">4741</span>                    " skipped=" + skippedEdits +<a name="line.4741"></a>
+<span class="sourceLineNo">4742</span>                    " edits=" + editsCount);<a name="line.4742"></a>
+<span class="sourceLineNo">4743</span>                // Timeout reached<a name="line.4743"></a>
+<span class="sourceLineNo">4744</span>                if(!reporter.progress()) {<a name="line.4744"></a>
+<span class="sourceLineNo">4745</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4745"></a>
+<span class="sourceLineNo">4746</span>                  LOG.warn(msg);<a name="line.4746"></a>
+<span class="sourceLineNo">4747</span>                  status.abort(msg);<a name="line.4747"></a>
+<span class="sourceLineNo">4748</span>                  throw new IOException(msg);<a name="line.4748"></a>
+<span class="sourceLineNo">4749</span>                }<a name="line.4749"></a>
+<span class="sourceLineNo">4750</span>                reported_once = true;<a name="line.4750"></a>
+<span class="sourceLineNo">4751</span>                lastReport = cur;<a name="line.4751"></a>
+<span class="sourceLineNo">4752</span>              }<a name="line.4752"></a>
+<span class="sourceLineNo">4753</span>            }<a name="line.4753"></a>
+<span class="sourceLineNo">4754</span>          }<a name="line.4754"></a>
+<span class="sourceLineNo">4755</span><a name="line.4755"></a>
+<span class="sourceLineNo">4756</span>          if (firstSeqIdInLog == -1) {<a name="line.4756"></a>
+<span class="sourceLineNo">4757</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4757"></a>
+<span class="sourceLineNo">4758</span>          }<a name="line.4758"></a>
+<span class="sourceLineNo">4759</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4759"></a>
+<span class="sourceLineNo">4760</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4760"></a>
+<span class="sourceLineNo">4761</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4761"></a>
+<span class="sourceLineNo">4762</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4762"></a>
+<span class="sourceLineNo">4763</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4763"></a>
+<span class="sourceLineNo">4764</span>                + "; edit=" + val);<a name="line.4764"></a>
+<span class="sourceLineNo">4765</span>          } else {<a name="line.4765"></a>
+<span class="sourceLineNo">4766</span>            currentEditSeqId = key.getSequenceId();<a name="line.4766"></a>
+<span class="sourceLineNo">4767</span>          }<a name="line.4767"></a>
+<span class="sourceLineNo">4768</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4768"></a>
+<span class="sourceLineNo">4769</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4769"></a>
 <span class="sourceLineNo">4770</span><a name="line.4770"></a>
-<span class="sourceLineNo">4771</span>          boolean flush = false;<a name="line.4771"></a>
-<span class="sourceLineNo">4772</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4772"></a>
-<span class="sourceLineNo">4773</span>          for (Cell cell: val.getCells()) {<a name="line.4773"></a>
-<span class="sourceLineNo">4774</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4774"></a>
-<span class="sourceLineNo">4775</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4775"></a>
-<span class="sourceLineNo">4776</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4776"></a>
-<span class="sourceLineNo">4777</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4777"></a>
-<span class="sourceLineNo">4778</span>              if (!checkRowWithinBoundary) {<a name="line.4778"></a>
-<span class="sourceLineNo">4779</span>                //this is a special edit, we should handle it<a name="line.4779"></a>
-<span class="sourceLineNo">4780</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4780"></a>
-<span class="sourceLineNo">4781</span>                if (compaction != null) {<a name="line.4781"></a>
-<span class="sourceLineNo">4782</span>                  //replay the compaction<a name="line.4782"></a>
-<span class="sourceLineNo">4783</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4783"></a>
-<span class="sourceLineNo">4784</span>                }<a name="line.4784"></a>
-<span class="sourceLineNo">4785</span>              }<a name="line.4785"></a>
-<span class="sourceLineNo">4786</span>              skippedEdits++;<a name="line.4786"></a>
-<span class="sourceLineNo">4787</span>              continue;<a name="line.4787"></a>
-<span class="sourceLineNo">4788</span>            }<a name="line.4788"></a>
-<span class="sourceLineNo">4789</span>            // Figure which store the edit is meant for.<a name="line.4789"></a>
-<span class="sourceLineNo">4790</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4790"></a>
-<span class="sourceLineNo">4791</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4791"></a>
-<span class="sourceLineNo">4792</span>              store = getStore(cell);<a name="line.4792"></a>
-<span class="sourceLineNo">4793</span>            }<a name="line.4793"></a>
-<span class="sourceLineNo">4794</span>            if (store == null) {<a name="line.4794"></a>
-<span class="sourceLineNo">4795</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4795"></a>
-<span class="sourceLineNo">4796</span>              // crash and redeploy?<a name="line.4796"></a>
-<span class="sourceLineNo">4797</span>              LOG.warn("No family for " + cell);<a name="line.4797"></a>
-<span class="sourceLineNo">4798</span>              skippedEdits++;<a name="line.4798"></a>
-<span class="sourceLineNo">4799</span>              continue;<a name="line.4799"></a>
-<span class="sourceLineNo">4800</span>            }<a name="line.4800"></a>
-<span class="sourceLineNo">4801</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4801"></a>
-<span class="sourceLineNo">4802</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4802"></a>
-<span class="sourceLineNo">4803</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4803"></a>
-<span class="sourceLineNo">4804</span>              skippedEdits++;<a name="line.4804"></a>
-<span class="sourceLineNo">4805</span>              continue;<a name="line.4805"></a>
-<span class="sourceLineNo">4806</span>            }<a name="line.4806"></a>
-<span class="sourceLineNo">4807</span>            // Now, figure if we should skip this edit.<a name="line.4807"></a>
-<span class="sourceLineNo">4808</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4808"></a>
-<span class="sourceLineNo">4809</span>                .getName())) {<a name="line.4809"></a>
-<span class="sourceLineNo">4810</span>              skippedEdits++;<a name="line.4810"></a>
-<span class="sourceLineNo">4811</span>              continue;<a name="line.4811"></a>
-<span class="sourceLineNo">4812</span>            }<a name="line.4812"></a>
-<span class="sourceLineNo">4813</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4813"></a>
-<span class="sourceLineNo">4814</span><a name="line.4814"></a>
-<span class="sourceLineNo">4815</span>            restoreEdit(store, cell, memStoreSizing);<a name="line.4815"></a>
-<span class="sourceLineNo">4816</span>            editsCount++;<a name="line.4816"></a>
-<span class="sourceLineNo">4817</span>          }<a name="line.4817"></a>
-<span class="sourceLineNo">4818</span>          MemStoreSize mss = memStoreSizing.getMemStoreSize();<a name="line.4818"></a>
-<span class="sourceLineNo">4819</span>          incMemStoreSize(mss);<a name="line.4819"></a>
-<span class="sourceLineNo">4820</span>          flush = isFlushSize(this.memStoreSizing.getMemStoreSize());<a name="line.4820"></a>
-<span class="sourceLineNo">4821</span>          if (flush) {<a name="line.4821"></a>
-<span class="sourceLineNo">4822</span>            internalFlushcache(null, currentEditSeqId, stores.values(), status, false,<a name="line.4822"></a>
-<span class="sourceLineNo">4823</span>              FlushLifeCycleTracker.DUMMY);<a name="line.4823"></a>
-<span class="sourceLineNo">4824</span>          }<a name="line.4824"></a>
-<span class="sourceLineNo">4825</span><a name="line.4825"></a>
-<span class="sourceLineNo">4826</span>          if (coprocessorHost != null) {<a name="line.4826"></a>
-<span class="sourceLineNo">4827</span>            coprocessorHost.postWALRestore(this.getRegionInfo(), key, val);<a name="line.4827"></a>
-<span class="sourceLineNo">4828</span>          }<a name="line.4828"></a>
-<span class="sourceLineNo">4829</span>        }<a name="line.4829"></a>
+<span class="sourceLineNo">4771</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4771"></a>
+<span class="sourceLineNo">4772</span>          // instead of a KeyValue.<a name="line.4772"></a>
+<span class="sourceLineNo">4773</span>          if (coprocessorHost != null) {<a name="line.4773"></a>
+<span class="sourceLineNo">4774</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4774"></a>
+<span class="sourceLineNo">4775</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4775"></a>
+<span class="sourceLineNo">4776</span>              // if bypass this wal entry, ignore it ...<a name="line.4776"></a>
+<span class="sourceLineNo">4777</span>              continue;<a name="line.4777"></a>
+<span class="sourceLineNo">4778</span>            }<a name="line.4778"></a>
+<span class="sourceLineNo">4779</span>          }<a name="line.4779"></a>
+<span class="sourceLineNo">4780</span>          boolean checkRowWithinBoundary = false;<a name="line.4780"></a>
+<span class="sourceLineNo">4781</span>          // Check this edit is for this region.<a name="line.4781"></a>
+<span class="sourceLineNo">4782</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4782"></a>
+<span class="sourceLineNo">4783</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4783"></a>
+<span class="sourceLineNo">4784</span>            checkRowWithinBoundary = true;<a name="line.4784"></a>
+<span class="sourceLineNo">4785</span>          }<a name="line.4785"></a>
+<span class="sourceLineNo">4786</span><a name="line.4786"></a>
+<span class="sourceLineNo">4787</span>          boolean flush = false;<a name="line.4787"></a>
+<span class="sourceLineNo">4788</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4788"></a>
+<span class="sourceLineNo">4789</span>          for (Cell cell: val.getCells()) {<a name="line.4789"></a>
+<span class="sourceLineNo">4790</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4790"></a>
+<span class="sourceLineNo">4791</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4791"></a>
+<span class="sourceLineNo">4792</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4792"></a>
+<span class="sourceLineNo">4793</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4793"></a>
+<span class="sourceLineNo">4794</span>              if (!checkRowWithinBoundary) {<a name="line.4794"></a>
+<span class="sourceLineNo">4795</span>                //this is a special edit, we should handle it<a name="line.4795"></a>
+<span class="sourceLineNo">4796</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4796"></a>
+<span class="sourceLineNo">4797</span>                if (compaction != null) {<a name="line.4797"></a>
+<span class="sourceLineNo">4798</span>                  //replay the compaction<a name="line.4798"></a>
+<span class="sourceLineNo">4799</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4799"></a>
+<span class="sourceLineNo">4800</span>                }<a name="line.4800"></a>
+<span class="sourceLineNo">4801</span>              }<a name="line.4801"></a>
+<span class="sourceLineNo">4802</span>              skippedEdits++;<a name="line.4802"></a>
+<span class="sourceLineNo">4803</span>              continue;<a name="line.4803"></a>
+<span class="sourceLineNo">4804</span>            }<a name="line.4804"></a>
+<span class="sourceLineNo">4805</span>            // Figure which store the edit is meant for.<a name="line.4805"></a>
+<span class="sourceLineNo">4806</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4806"></a>
+<span class="sourceLineNo">4807</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4807"></a>
+<span class="sourceLineNo">4808</span>              store = getStore(cell);<a name="line.4808"></a>
+<span class="sourceLineNo">4809</span>            }<a name="line.4809"></a>
+<span class="sourceLineNo">4810</span>            if (store == null) {<a name="line.4810"></a>
+<span class="sourceLineNo">4811</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4811"></a>
+<span class="sourceLineNo">4812</span>              // crash and redeploy?<a name="line.4812"></a>
+<span class="sourceLineNo">4813</span>              LOG.warn("No family for " + cell);<a name="line.4813"></a>
+<span class="sourceLineNo">4814</span>              skippedEdits++;<a name="line.4814"></a>
+<span class="sourceLineNo">4815</span>              continue;<a name="line.4815"></a>
+<span class="sourceLineNo">4816</span>            }<a name="line.4816"></a>
+<span class="sourceLineNo">4817</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4817"></a>
+<span class="sourceLineNo">4818</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4818"></a>
+<span class="sourceLineNo">4819</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4819"></a>
+<span class="sourceLineNo">4820</span>              skippedEdits++;<a name="line.4820"></a>
+<span class="sourceLineNo">4821</span>              continue;<a name="line.4821"></a>
+<span class="sourceLineNo">4822</span>            }<a name="line.4822"></a>
+<span class="sourceLineNo">4823</span>            // Now, figure if we should skip this edit.<a name="line.4823"></a>
+<span class="sourceLineNo">4824</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4824"></a>
+<span class="sourceLineNo">4825</span>                .getName())) {<a name="line.4825"></a>
+<span class="sourceLineNo">4826</span>              skippedEdits++;<a name="line.4826"></a>
+<span class="sourceLineNo">4827</span>              continue;<a name="line.4827"></a>
+<span class="sourceLineNo">4828</span>            }<a name="line.4828"></a>
+<span class="sourceLineNo">4829</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4829"></a>
 <span class="sourceLineNo">4830</span><a name="line.4830"></a>
-<span class="sourceLineNo">4831</span>        if (coprocessorHost != null) {<a name="line.4831"></a>
-<span class="sourceLineNo">4832</span>          coprocessorHost.postReplayWALs(this.getRegionInfo(), edits);<a name="line.4832"></a>
-<span class="sourceLineNo">4833</span>        }<a name="line.4833"></a>
-<span class="sourceLineNo">4834</span>      } catch (EOFException eof) {<a name="line.4834"></a>
-<span class="sourceLineNo">4835</span>        Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4835"></a>
-<span class="sourceLineNo">4836</span>        msg = "EnLongAddered EOF. Most likely due to Master failure during " +<a name="line.4836"></a>
-<span class="sourceLineNo">4837</span>            "wal splitting, so we have this data in another edit.  " +<a name="line.4837"></a>
-<span class="sourceLineNo">4838</span>            "Continuing, but renaming " + edits + " as " + p;<a name="line.4838"></a>
-<span class="sourceLineNo">4839</span>        LOG.warn(msg, eof);<a name="line.4839"></a>
-<span class="sourceLineNo">4840</span>        status.abort(msg);<a name="line.4840"></a>
-<span class="sourceLineNo">4841</span>      } catch (IOException ioe) {<a name="line.4841"></a>
-<span class="sourceLineNo">4842</span>        // If the IOE resulted from bad file format,<a name="line.4842"></a>
-<span class="sourceLineNo">4843</span>        // then this problem is idempotent and retrying won't help<a name="line.4843"></a>
-<span class="sourceLineNo">4844</span>        if (ioe.getCause() instanceof ParseException) {<a name="line.4844"></a>
-<span class="sourceLineNo">4845</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4845"></a>
-<span class="sourceLineNo">4846</span>          msg = "File corruption enLongAddered!  " +<a name="line.4846"></a>
-<span class="sourceLineNo">4847</span>              "Continuing, but renaming " + edits + " as " + p;<a name="line.4847"></a>
-<span class="sourceLineNo">4848</span>          LOG.warn(msg, ioe);<a name="line.4848"></a>
-<span class="sourceLineNo">4849</span>          status.setStatus(msg);<a name="line.4849"></a>
-<span class="sourceLineNo">4850</span>        } else {<a name="line.4850"></a>
-<span class="sourceLineNo">4851</span>          status.abort(StringUtils.stringifyException(ioe));<a name="line.4851"></a>
-<span class="sourceLineNo">4852</span>          // other IO errors may be transient (bad network connection,<a name="line.4852"></a>
-<span class="sourceLineNo">4853</span>          // checksum exception on one datanode, etc).  throw &amp; retry<a name="line.4853"></a>
-<span class="sourceLineNo">4854</span>          throw ioe;<a name="line.4854"></a>
-<span class="sourceLineNo">4855</span>        }<a name="line.4855"></a>
-<span class="sourceLineNo">4856</span>      }<a name="line.4856"></a>
-<span class="sourceLineNo">4857</span>      if (reporter != null &amp;&amp; !reported_once) {<a name="line.4857"></a>
-<span class="sourceLineNo">4858</span>        reporter.progress();<a name="line.4858"></a>
-<span class="sourceLineNo">4859</span>      }<a name="line.4859"></a>
-<span class="sourceLineNo">4860</span>      msg = "Applied " + editsCount + ", skipped " + skippedEdits +<a name="line.4860"></a>
-<span class="sourceLineNo">4861</span>        ", firstSequenceIdInLog=" + firstSeqIdInLog +<a name="line.4861"></a>
-<span class="sourceLineNo">4862</span>        ", maxSequenceIdInLog=" + currentEditSeqId + ", path=" + edits;<a name="line.4862"></a>
-<span class="sourceLineNo">4863</span>      status.markComplete(msg);<a name="line.4863"></a>
-<span class="sourceLineNo">4864</span>      LOG.debug(msg);<a name="line.4864"></a>
-<span class="sourceLineNo">4865</span>      return currentEditSeqId;<a name="line.4865"></a>
-<span class="sourceLineNo">4866</span>    } finally {<a name="line.4866"></a>
-<span class="sourceLineNo">4867</span>      status.cleanup();<a name="line.4867"></a>
-<span class="sourceLineNo">4868</span>      if (reader != null) {<a name="line.4868"></a>
-<span class="sourceLineNo">4869</span>         reader.close();<a name="line.4869"></a>
-<span class="sourceLineNo">4870</span>      }<a name="line.4870"></a>
-<span class="sourceLineNo">4871</span>    }<a name="line.4871"></a>
-<span class="sourceLineNo">4872</span>  }<a name="line.4872"></a>
-<span class="sourceLineNo">4873</span><a name="line.4873"></a>
-<span class="sourceLineNo">4874</span>  /**<a name="line.4874"></a>
-<span class="sourceLineNo">4875</span>   * Call to complete a compaction. Its for the case where we find in the WAL a compaction<a name="line.4875"></a>
-<span class="sourceLineNo">4876</span>   * that was not finished.  We could find one recovering a WAL after a regionserver crash.<a name="line.4876"></a>
-<span class="sourceLineNo">4877</span>   * See HBASE-2331.<a name="line.4877"></a>
-<span class="sourceLineNo">4878</span>   */<a name="line.4878"></a>
-<span class="sourceLineNo">4879</span>  void replayWALCompactionMarker(CompactionDescriptor compaction, boolean pickCompactionFiles,<a name="line.4879"></a>
-<span class="sourceLineNo">4880</span>      boolean removeFiles, long replaySeqId)<a name="line.4880"></a>
-<span class="sourceLineNo">4881</span>      throws IOException {<a name="line.4881"></a>
-<span class="sourceLineNo">4882</span>    try {<a name="line.4882"></a>
-<span class="sourceLineNo">4883</span>      checkTargetRegion(compaction.getEncodedRegionName().toByteArray(),<a name="line.4883"></a>
-<span class="sourceLineNo">4884</span>        "Compaction marker from WAL ", compaction);<a name="line.4884"></a>
-<span class="sourceLineNo">4885</span>    } catch (WrongRegionException wre) {<a name="line.4885"></a>
-<span class="sourceLineNo">4886</span>      if (RegionReplicaUtil.isDefaultReplica(this.getRegionInfo())) {<a name="line.4886"></a>
-<span class="sourceLineNo">4887</span>        // skip the compaction marker since it is not for this region<a name="line.4887"></a>
-<span class="sourceLineNo">4888</span>        return;<a name="line.4888"></a>
-<span class="sourceLineNo">4889</span>      }<a name="line.4889"></a>
-<span class="sourceLineNo">4890</span>      throw wre;<a name="line.4890"></a>
-<span class="sourceLineNo">4891</span>    }<a name="line.4891"></a>
-<span class="sourceLineNo">4892</span><a name="line.4892"></a>
-<span class="sourceLineNo">4893</span>    synchronized (writestate) {<a name="line.4893"></a>
-<span class="sourceLineNo">4894</span>      if (replaySeqId &lt; lastReplayedOpenRegionSeqId) {<a name="line.4894"></a>
-<span class="sourceLineNo">4895</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4895"></a>
-<span class="sourceLineNo">4896</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4896"></a>
-<span class="sourceLineNo">4897</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4897"></a>
-<span class="sourceLineNo">4898</span>            + "lastReplayedOpenRegionSeqId of " + lastReplayedOpenRegionSeqId);<a name="line.4898"></a>
-<span class="sourceLineNo">4899</span>        return;<a name="line.4899"></a>
-<span class="sourceLineNo">4900</span>      }<a name="line.4900"></a>
-<span class="sourceLineNo">4901</span>      if (replaySeqId &lt; lastReplayedCompactionSeqId) {<a name="line.4901"></a>
-<span class="sourceLineNo">4902</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4902"></a>
-<span class="sourceLineNo">4903</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4903"></a>
-<span class="sourceLineNo">4904</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4904"></a>
-<span class="sourceLineNo">4905</span>            + "lastReplayedCompactionSeqId of " + lastReplayedCompactionSeqId);<a name="line.4905"></a>
-<span class="sourceLineNo">4906</span>        return;<a name="line.4906"></a>
-<span class="sourceLineNo">4907</span>      } else {<a name="line.4907"></a>
-<span class="sourceLineNo">4908</span>        lastReplayedCompactionSeqId = replaySeqId;<a name="line.4908"></a>
-<span c

<TRUNCATED>

[26/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html
index 00f0250..95d0370 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html
@@ -495,813 +495,798 @@
 <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 void delete(final Delete delete)<a name="line.490"></a>
-<span class="sourceLineNo">491</span>  throws IOException {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    CancellableRegionServerCallable&lt;SingleResponse&gt; callable =<a name="line.492"></a>
-<span class="sourceLineNo">493</span>        new CancellableRegionServerCallable&lt;SingleResponse&gt;(<a name="line.493"></a>
-<span class="sourceLineNo">494</span>            connection, getName(), delete.getRow(), this.rpcControllerFactory.newController(),<a name="line.494"></a>
-<span class="sourceLineNo">495</span>            writeRpcTimeoutMs, new RetryingTimeTracker().start(), delete.getPriority()) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>      @Override<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      protected SingleResponse rpcCall() throws Exception {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>        MutateRequest request = RequestConverter.buildMutateRequest(<a name="line.498"></a>
-<span class="sourceLineNo">499</span>          getLocation().getRegionInfo().getRegionName(), delete);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        MutateResponse response = doMutate(request);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>        return ResponseConverter.getResult(request, response, getRpcControllerCellScanner());<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>    List&lt;Delete&gt; rows = Collections.singletonList(delete);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    AsyncProcessTask task = AsyncProcessTask.newBuilder()<a name="line.505"></a>
-<span class="sourceLineNo">506</span>            .setPool(pool)<a name="line.506"></a>
-<span class="sourceLineNo">507</span>            .setTableName(tableName)<a name="line.507"></a>
-<span class="sourceLineNo">508</span>            .setRowAccess(rows)<a name="line.508"></a>
-<span class="sourceLineNo">509</span>            .setCallable(callable)<a name="line.509"></a>
-<span class="sourceLineNo">510</span>            .setRpcTimeout(writeRpcTimeoutMs)<a name="line.510"></a>
-<span class="sourceLineNo">511</span>            .setOperationTimeout(operationTimeoutMs)<a name="line.511"></a>
-<span class="sourceLineNo">512</span>            .setSubmittedRows(AsyncProcessTask.SubmittedRows.ALL)<a name="line.512"></a>
-<span class="sourceLineNo">513</span>            .build();<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    AsyncRequestFuture ars = multiAp.submit(task);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    ars.waitUntilDone();<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    if (ars.hasError()) {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      throw ars.getErrors();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    }<a name="line.518"></a>
-<span class="sourceLineNo">519</span>  }<a name="line.519"></a>
-<span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span>  @Override<a name="line.521"></a>
-<span class="sourceLineNo">522</span>  public void delete(final List&lt;Delete&gt; deletes)<a name="line.522"></a>
-<span class="sourceLineNo">523</span>  throws IOException {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    Object[] results = new Object[deletes.size()];<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    try {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>      batch(deletes, results, writeRpcTimeoutMs);<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    } catch (InterruptedException e) {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>      throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    } finally {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      // TODO: to be consistent with batch put(), do not modify input list<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      // mutate list so that it is empty for complete success, or contains only failed records<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      // results are returned in the same order as the requests in list walk the list backwards,<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      // so we can remove from list without impacting the indexes of earlier members<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      for (int i = results.length - 1; i&gt;=0; i--) {<a name="line.534"></a>
-<span class="sourceLineNo">535</span>        // if result is not null, it succeeded<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        if (results[i] instanceof Result) {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>          deletes.remove(i);<a name="line.537"></a>
-<span class="sourceLineNo">538</span>        }<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      }<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    }<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  }<a name="line.541"></a>
-<span class="sourceLineNo">542</span><a name="line.542"></a>
-<span class="sourceLineNo">543</span>  @Override<a name="line.543"></a>
-<span class="sourceLineNo">544</span>  public void put(final Put put) throws IOException {<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    validatePut(put);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    ClientServiceCallable&lt;Void&gt; callable =<a name="line.546"></a>
-<span class="sourceLineNo">547</span>        new ClientServiceCallable&lt;Void&gt;(this.connection, getName(), put.getRow(),<a name="line.547"></a>
-<span class="sourceLineNo">548</span>            this.rpcControllerFactory.newController(), put.getPriority()) {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      @Override<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      protected Void rpcCall() throws Exception {<a name="line.550"></a>
-<span class="sourceLineNo">551</span>        MutateRequest request =<a name="line.551"></a>
-<span class="sourceLineNo">552</span>            RequestConverter.buildMutateRequest(getLocation().getRegionInfo().getRegionName(), put);<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        doMutate(request);<a name="line.553"></a>
-<span class="sourceLineNo">554</span>        return null;<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    };<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    rpcCallerFactory.&lt;Void&gt; newCaller(this.writeRpcTimeoutMs).callWithRetries(callable,<a name="line.557"></a>
-<span class="sourceLineNo">558</span>        this.operationTimeoutMs);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>  }<a name="line.559"></a>
-<span class="sourceLineNo">560</span><a name="line.560"></a>
-<span class="sourceLineNo">561</span>  @Override<a name="line.561"></a>
-<span class="sourceLineNo">562</span>  public void put(final List&lt;Put&gt; puts) throws IOException {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    for (Put put : puts) {<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      validatePut(put);<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    }<a name="line.565"></a>
-<span class="sourceLineNo">566</span>    Object[] results = new Object[puts.size()];<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    try {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      batch(puts, results, writeRpcTimeoutMs);<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    } catch (InterruptedException e) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      throw (InterruptedIOException) new InterruptedIOException().initCause(e);<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    }<a name="line.571"></a>
-<span class="sourceLineNo">572</span>  }<a name="line.572"></a>
-<span class="sourceLineNo">573</span><a name="line.573"></a>
-<span class="sourceLineNo">574</span>  @Override<a name="line.574"></a>
-<span class="sourceLineNo">575</span>  public void mutateRow(final RowMutations rm) throws IOException {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    CancellableRegionServerCallable&lt;MultiResponse&gt; callable =<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      new CancellableRegionServerCallable&lt;MultiResponse&gt;(this.connection, getName(), rm.getRow(),<a name="line.577"></a>
-<span class="sourceLineNo">578</span>          rpcControllerFactory.newController(), writeRpcTimeoutMs,<a name="line.578"></a>
-<span class="sourceLineNo">579</span>          new RetryingTimeTracker().start(), rm.getMaxPriority()) {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      @Override<a name="line.580"></a>
-<span class="sourceLineNo">581</span>      protected MultiResponse rpcCall() throws Exception {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>        RegionAction.Builder regionMutationBuilder = RequestConverter.buildRegionAction(<a name="line.582"></a>
-<span class="sourceLineNo">583</span>            getLocation().getRegionInfo().getRegionName(), rm);<a name="line.583"></a>
-<span class="sourceLineNo">584</span>        regionMutationBuilder.setAtomic(true);<a name="line.584"></a>
-<span class="sourceLineNo">585</span>        MultiRequest request =<a name="line.585"></a>
-<span class="sourceLineNo">586</span>            MultiRequest.newBuilder().addRegionAction(regionMutationBuilder.build()).build();<a name="line.586"></a>
-<span class="sourceLineNo">587</span>        ClientProtos.MultiResponse response = doMulti(request);<a name="line.587"></a>
-<span class="sourceLineNo">588</span>        ClientProtos.RegionActionResult res = response.getRegionActionResultList().get(0);<a name="line.588"></a>
-<span class="sourceLineNo">589</span>        if (res.hasException()) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>          Throwable ex = ProtobufUtil.toException(res.getException());<a name="line.590"></a>
-<span class="sourceLineNo">591</span>          if (ex instanceof IOException) {<a name="line.591"></a>
-<span class="sourceLineNo">592</span>            throw (IOException) ex;<a name="line.592"></a>
-<span class="sourceLineNo">593</span>          }<a name="line.593"></a>
-<span class="sourceLineNo">594</span>          throw new IOException("Failed to mutate row: " + Bytes.toStringBinary(rm.getRow()), ex);<a name="line.594"></a>
-<span class="sourceLineNo">595</span>        }<a name="line.595"></a>
-<span class="sourceLineNo">596</span>        return ResponseConverter.getResults(request, response, getRpcControllerCellScanner());<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>    AsyncProcessTask task = AsyncProcessTask.newBuilder()<a name="line.599"></a>
-<span class="sourceLineNo">600</span>            .setPool(pool)<a name="line.600"></a>
-<span class="sourceLineNo">601</span>            .setTableName(tableName)<a name="line.601"></a>
-<span class="sourceLineNo">602</span>            .setRowAccess(rm.getMutations())<a name="line.602"></a>
-<span class="sourceLineNo">603</span>            .setCallable(callable)<a name="line.603"></a>
-<span class="sourceLineNo">604</span>            .setRpcTimeout(writeRpcTimeoutMs)<a name="line.604"></a>
-<span class="sourceLineNo">605</span>            .setOperationTimeout(operationTimeoutMs)<a name="line.605"></a>
-<span class="sourceLineNo">606</span>            .setSubmittedRows(AsyncProcessTask.SubmittedRows.ALL)<a name="line.606"></a>
-<span class="sourceLineNo">607</span>            .build();<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    AsyncRequestFuture ars = multiAp.submit(task);<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    ars.waitUntilDone();<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    if (ars.hasError()) {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>      throw ars.getErrors();<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><a name="line.614"></a>
-<span class="sourceLineNo">615</span>  @Override<a name="line.615"></a>
-<span class="sourceLineNo">616</span>  public Result append(final Append append) throws IOException {<a name="line.616"></a>
-<span class="sourceLineNo">617</span>    checkHasFamilies(append);<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    NoncedRegionServerCallable&lt;Result&gt; callable =<a name="line.618"></a>
-<span class="sourceLineNo">619</span>        new NoncedRegionServerCallable&lt;Result&gt;(this.connection, getName(), append.getRow(),<a name="line.619"></a>
-<span class="sourceLineNo">620</span>            this.rpcControllerFactory.newController(), append.getPriority()) {<a name="line.620"></a>
-<span class="sourceLineNo">621</span>      @Override<a name="line.621"></a>
-<span class="sourceLineNo">622</span>      protected Result rpcCall() throws Exception {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>        MutateRequest request = RequestConverter.buildMutateRequest(<a name="line.623"></a>
-<span class="sourceLineNo">624</span>          getLocation().getRegionInfo().getRegionName(), append, getNonceGroup(), getNonce());<a name="line.624"></a>
-<span class="sourceLineNo">625</span>        MutateResponse response = doMutate(request);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>        if (!response.hasResult()) return null;<a name="line.626"></a>
-<span class="sourceLineNo">627</span>        return ProtobufUtil.toResult(response.getResult(), getRpcControllerCellScanner());<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      }<a name="line.628"></a>
-<span class="sourceLineNo">629</span>    };<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    return rpcCallerFactory.&lt;Result&gt; newCaller(this.writeRpcTimeoutMs).<a name="line.630"></a>
-<span class="sourceLineNo">631</span>        callWithRetries(callable, this.operationTimeoutMs);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>  }<a name="line.632"></a>
-<span class="sourceLineNo">633</span><a name="line.633"></a>
-<span class="sourceLineNo">634</span>  @Override<a name="line.634"></a>
-<span class="sourceLineNo">635</span>  public Result increment(final Increment increment) throws IOException {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    checkHasFamilies(increment);<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    NoncedRegionServerCallable&lt;Result&gt; callable =<a name="line.637"></a>
-<span class="sourceLineNo">638</span>        new NoncedRegionServerCallable&lt;Result&gt;(this.connection, getName(), increment.getRow(),<a name="line.638"></a>
-<span class="sourceLineNo">639</span>            this.rpcControllerFactory.newController(), increment.getPriority()) {<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      @Override<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      protected Result rpcCall() throws Exception {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>        MutateRequest request = RequestConverter.buildMutateRequest(<a name="line.642"></a>
-<span class="sourceLineNo">643</span>          getLocation().getRegionInfo().getRegionName(), increment, getNonceGroup(), getNonce());<a name="line.643"></a>
-<span class="sourceLineNo">644</span>        MutateResponse response = doMutate(request);<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        // Should this check for null like append does?<a name="line.645"></a>
-<span class="sourceLineNo">646</span>        return ProtobufUtil.toResult(response.getResult(), getRpcControllerCellScanner());<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      }<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    };<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    return rpcCallerFactory.&lt;Result&gt; newCaller(writeRpcTimeoutMs).callWithRetries(callable,<a name="line.649"></a>
-<span class="sourceLineNo">650</span>        this.operationTimeoutMs);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>  }<a name="line.651"></a>
-<span class="sourceLineNo">652</span><a name="line.652"></a>
-<span class="sourceLineNo">653</span>  @Override<a name="line.653"></a>
-<span class="sourceLineNo">654</span>  public long incrementColumnValue(final byte [] row, final byte [] family,<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      final byte [] qualifier, final long amount)<a name="line.655"></a>
-<span class="sourceLineNo">656</span>  throws IOException {<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    return incrementColumnValue(row, family, qualifier, amount, Durability.SYNC_WAL);<a name="line.657"></a>
-<span class="sourceLineNo">658</span>  }<a name="line.658"></a>
+<span class="sourceLineNo">490</span>  public void delete(final Delete delete) throws IOException {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    ClientServiceCallable&lt;Void&gt; callable =<a name="line.491"></a>
+<span class="sourceLineNo">492</span>        new ClientServiceCallable&lt;Void&gt;(this.connection, getName(), delete.getRow(),<a name="line.492"></a>
+<span class="sourceLineNo">493</span>            this.rpcControllerFactory.newController(), delete.getPriority()) {<a name="line.493"></a>
+<span class="sourceLineNo">494</span>      @Override<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      protected Void rpcCall() throws Exception {<a name="line.495"></a>
+<span class="sourceLineNo">496</span>        MutateRequest request = RequestConverter<a name="line.496"></a>
+<span class="sourceLineNo">497</span>            .buildMutateRequest(getLocation().getRegionInfo().getRegionName(), delete);<a name="line.497"></a>
+<span class="sourceLineNo">498</span>        doMutate(request);<a name="line.498"></a>
+<span class="sourceLineNo">499</span>        return null;<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      }<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    };<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    rpcCallerFactory.&lt;Void&gt;newCaller(this.writeRpcTimeoutMs)<a name="line.502"></a>
+<span class="sourceLineNo">503</span>        .callWithRetries(callable, this.operationTimeoutMs);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>  }<a name="line.504"></a>
+<span class="sourceLineNo">505</span><a name="line.505"></a>
+<span class="sourceLineNo">506</span>  @Override<a name="line.506"></a>
+<span class="sourceLineNo">507</span>  public void delete(final List&lt;Delete&gt; deletes)<a name="line.507"></a>
+<span class="sourceLineNo">508</span>  throws IOException {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    Object[] results = new Object[deletes.size()];<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    try {<a name="line.510"></a>
+<span class="sourceLineNo">511</span>      batch(deletes, results, writeRpcTimeoutMs);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    } catch (InterruptedException e) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>      throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    } finally {<a name="line.514"></a>
+<span class="sourceLineNo">515</span>      // TODO: to be consistent with batch put(), do not modify input list<a name="line.515"></a>
+<span class="sourceLineNo">516</span>      // mutate list so that it is empty for complete success, or contains only failed records<a name="line.516"></a>
+<span class="sourceLineNo">517</span>      // results are returned in the same order as the requests in list walk the list backwards,<a name="line.517"></a>
+<span class="sourceLineNo">518</span>      // so we can remove from list without impacting the indexes of earlier members<a name="line.518"></a>
+<span class="sourceLineNo">519</span>      for (int i = results.length - 1; i&gt;=0; i--) {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>        // if result is not null, it succeeded<a name="line.520"></a>
+<span class="sourceLineNo">521</span>        if (results[i] instanceof Result) {<a name="line.521"></a>
+<span class="sourceLineNo">522</span>          deletes.remove(i);<a name="line.522"></a>
+<span class="sourceLineNo">523</span>        }<a name="line.523"></a>
+<span class="sourceLineNo">524</span>      }<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
+<span class="sourceLineNo">526</span>  }<a name="line.526"></a>
+<span class="sourceLineNo">527</span><a name="line.527"></a>
+<span class="sourceLineNo">528</span>  @Override<a name="line.528"></a>
+<span class="sourceLineNo">529</span>  public void put(final Put put) throws IOException {<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    validatePut(put);<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    ClientServiceCallable&lt;Void&gt; callable =<a name="line.531"></a>
+<span class="sourceLineNo">532</span>        new ClientServiceCallable&lt;Void&gt;(this.connection, getName(), put.getRow(),<a name="line.532"></a>
+<span class="sourceLineNo">533</span>            this.rpcControllerFactory.newController(), put.getPriority()) {<a name="line.533"></a>
+<span class="sourceLineNo">534</span>      @Override<a name="line.534"></a>
+<span class="sourceLineNo">535</span>      protected Void rpcCall() throws Exception {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>        MutateRequest request =<a name="line.536"></a>
+<span class="sourceLineNo">537</span>            RequestConverter.buildMutateRequest(getLocation().getRegionInfo().getRegionName(), put);<a name="line.537"></a>
+<span class="sourceLineNo">538</span>        doMutate(request);<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        return null;<a name="line.539"></a>
+<span class="sourceLineNo">540</span>      }<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    };<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    rpcCallerFactory.&lt;Void&gt; newCaller(this.writeRpcTimeoutMs).callWithRetries(callable,<a name="line.542"></a>
+<span class="sourceLineNo">543</span>        this.operationTimeoutMs);<a name="line.543"></a>
+<span class="sourceLineNo">544</span>  }<a name="line.544"></a>
+<span class="sourceLineNo">545</span><a name="line.545"></a>
+<span class="sourceLineNo">546</span>  @Override<a name="line.546"></a>
+<span class="sourceLineNo">547</span>  public void put(final List&lt;Put&gt; puts) throws IOException {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    for (Put put : puts) {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      validatePut(put);<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    }<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    Object[] results = new Object[puts.size()];<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    try {<a name="line.552"></a>
+<span class="sourceLineNo">553</span>      batch(puts, results, writeRpcTimeoutMs);<a name="line.553"></a>
+<span class="sourceLineNo">554</span>    } catch (InterruptedException e) {<a name="line.554"></a>
+<span class="sourceLineNo">555</span>      throw (InterruptedIOException) new InterruptedIOException().initCause(e);<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    }<a name="line.556"></a>
+<span class="sourceLineNo">557</span>  }<a name="line.557"></a>
+<span class="sourceLineNo">558</span><a name="line.558"></a>
+<span class="sourceLineNo">559</span>  @Override<a name="line.559"></a>
+<span class="sourceLineNo">560</span>  public void mutateRow(final RowMutations rm) throws IOException {<a name="line.560"></a>
+<span class="sourceLineNo">561</span>    CancellableRegionServerCallable&lt;MultiResponse&gt; callable =<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      new CancellableRegionServerCallable&lt;MultiResponse&gt;(this.connection, getName(), rm.getRow(),<a name="line.562"></a>
+<span class="sourceLineNo">563</span>          rpcControllerFactory.newController(), writeRpcTimeoutMs,<a name="line.563"></a>
+<span class="sourceLineNo">564</span>          new RetryingTimeTracker().start(), rm.getMaxPriority()) {<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      @Override<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      protected MultiResponse rpcCall() throws Exception {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>        RegionAction.Builder regionMutationBuilder = RequestConverter.buildRegionAction(<a name="line.567"></a>
+<span class="sourceLineNo">568</span>            getLocation().getRegionInfo().getRegionName(), rm);<a name="line.568"></a>
+<span class="sourceLineNo">569</span>        regionMutationBuilder.setAtomic(true);<a name="line.569"></a>
+<span class="sourceLineNo">570</span>        MultiRequest request =<a name="line.570"></a>
+<span class="sourceLineNo">571</span>            MultiRequest.newBuilder().addRegionAction(regionMutationBuilder.build()).build();<a name="line.571"></a>
+<span class="sourceLineNo">572</span>        ClientProtos.MultiResponse response = doMulti(request);<a name="line.572"></a>
+<span class="sourceLineNo">573</span>        ClientProtos.RegionActionResult res = response.getRegionActionResultList().get(0);<a name="line.573"></a>
+<span class="sourceLineNo">574</span>        if (res.hasException()) {<a name="line.574"></a>
+<span class="sourceLineNo">575</span>          Throwable ex = ProtobufUtil.toException(res.getException());<a name="line.575"></a>
+<span class="sourceLineNo">576</span>          if (ex instanceof IOException) {<a name="line.576"></a>
+<span class="sourceLineNo">577</span>            throw (IOException) ex;<a name="line.577"></a>
+<span class="sourceLineNo">578</span>          }<a name="line.578"></a>
+<span class="sourceLineNo">579</span>          throw new IOException("Failed to mutate row: " + Bytes.toStringBinary(rm.getRow()), ex);<a name="line.579"></a>
+<span class="sourceLineNo">580</span>        }<a name="line.580"></a>
+<span class="sourceLineNo">581</span>        return ResponseConverter.getResults(request, response, getRpcControllerCellScanner());<a name="line.581"></a>
+<span class="sourceLineNo">582</span>      }<a name="line.582"></a>
+<span class="sourceLineNo">583</span>    };<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    AsyncProcessTask task = AsyncProcessTask.newBuilder()<a name="line.584"></a>
+<span class="sourceLineNo">585</span>            .setPool(pool)<a name="line.585"></a>
+<span class="sourceLineNo">586</span>            .setTableName(tableName)<a name="line.586"></a>
+<span class="sourceLineNo">587</span>            .setRowAccess(rm.getMutations())<a name="line.587"></a>
+<span class="sourceLineNo">588</span>            .setCallable(callable)<a name="line.588"></a>
+<span class="sourceLineNo">589</span>            .setRpcTimeout(writeRpcTimeoutMs)<a name="line.589"></a>
+<span class="sourceLineNo">590</span>            .setOperationTimeout(operationTimeoutMs)<a name="line.590"></a>
+<span class="sourceLineNo">591</span>            .setSubmittedRows(AsyncProcessTask.SubmittedRows.ALL)<a name="line.591"></a>
+<span class="sourceLineNo">592</span>            .build();<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    AsyncRequestFuture ars = multiAp.submit(task);<a name="line.593"></a>
+<span class="sourceLineNo">594</span>    ars.waitUntilDone();<a name="line.594"></a>
+<span class="sourceLineNo">595</span>    if (ars.hasError()) {<a name="line.595"></a>
+<span class="sourceLineNo">596</span>      throw ars.getErrors();<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>  @Override<a name="line.600"></a>
+<span class="sourceLineNo">601</span>  public Result append(final Append append) throws IOException {<a name="line.601"></a>
+<span class="sourceLineNo">602</span>    checkHasFamilies(append);<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    NoncedRegionServerCallable&lt;Result&gt; callable =<a name="line.603"></a>
+<span class="sourceLineNo">604</span>        new NoncedRegionServerCallable&lt;Result&gt;(this.connection, getName(), append.getRow(),<a name="line.604"></a>
+<span class="sourceLineNo">605</span>            this.rpcControllerFactory.newController(), append.getPriority()) {<a name="line.605"></a>
+<span class="sourceLineNo">606</span>      @Override<a name="line.606"></a>
+<span class="sourceLineNo">607</span>      protected Result rpcCall() throws Exception {<a name="line.607"></a>
+<span class="sourceLineNo">608</span>        MutateRequest request = RequestConverter.buildMutateRequest(<a name="line.608"></a>
+<span class="sourceLineNo">609</span>          getLocation().getRegionInfo().getRegionName(), append, getNonceGroup(), getNonce());<a name="line.609"></a>
+<span class="sourceLineNo">610</span>        MutateResponse response = doMutate(request);<a name="line.610"></a>
+<span class="sourceLineNo">611</span>        if (!response.hasResult()) return null;<a name="line.611"></a>
+<span class="sourceLineNo">612</span>        return ProtobufUtil.toResult(response.getResult(), getRpcControllerCellScanner());<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      }<a name="line.613"></a>
+<span class="sourceLineNo">614</span>    };<a name="line.614"></a>
+<span class="sourceLineNo">615</span>    return rpcCallerFactory.&lt;Result&gt; newCaller(this.writeRpcTimeoutMs).<a name="line.615"></a>
+<span class="sourceLineNo">616</span>        callWithRetries(callable, this.operationTimeoutMs);<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>  @Override<a name="line.619"></a>
+<span class="sourceLineNo">620</span>  public Result increment(final Increment increment) throws IOException {<a name="line.620"></a>
+<span class="sourceLineNo">621</span>    checkHasFamilies(increment);<a name="line.621"></a>
+<span class="sourceLineNo">622</span>    NoncedRegionServerCallable&lt;Result&gt; callable =<a name="line.622"></a>
+<span class="sourceLineNo">623</span>        new NoncedRegionServerCallable&lt;Result&gt;(this.connection, getName(), increment.getRow(),<a name="line.623"></a>
+<span class="sourceLineNo">624</span>            this.rpcControllerFactory.newController(), increment.getPriority()) {<a name="line.624"></a>
+<span class="sourceLineNo">625</span>      @Override<a name="line.625"></a>
+<span class="sourceLineNo">626</span>      protected Result rpcCall() throws Exception {<a name="line.626"></a>
+<span class="sourceLineNo">627</span>        MutateRequest request = RequestConverter.buildMutateRequest(<a name="line.627"></a>
+<span class="sourceLineNo">628</span>          getLocation().getRegionInfo().getRegionName(), increment, getNonceGroup(), getNonce());<a name="line.628"></a>
+<span class="sourceLineNo">629</span>        MutateResponse response = doMutate(request);<a name="line.629"></a>
+<span class="sourceLineNo">630</span>        // Should this check for null like append does?<a name="line.630"></a>
+<span class="sourceLineNo">631</span>        return ProtobufUtil.toResult(response.getResult(), getRpcControllerCellScanner());<a name="line.631"></a>
+<span class="sourceLineNo">632</span>      }<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    };<a name="line.633"></a>
+<span class="sourceLineNo">634</span>    return rpcCallerFactory.&lt;Result&gt; newCaller(writeRpcTimeoutMs).callWithRetries(callable,<a name="line.634"></a>
+<span class="sourceLineNo">635</span>        this.operationTimeoutMs);<a name="line.635"></a>
+<span class="sourceLineNo">636</span>  }<a name="line.636"></a>
+<span class="sourceLineNo">637</span><a name="line.637"></a>
+<span class="sourceLineNo">638</span>  @Override<a name="line.638"></a>
+<span class="sourceLineNo">639</span>  public long incrementColumnValue(final byte [] row, final byte [] family,<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      final byte [] qualifier, final long amount)<a name="line.640"></a>
+<span class="sourceLineNo">641</span>  throws IOException {<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    return incrementColumnValue(row, family, qualifier, amount, Durability.SYNC_WAL);<a name="line.642"></a>
+<span class="sourceLineNo">643</span>  }<a name="line.643"></a>
+<span class="sourceLineNo">644</span><a name="line.644"></a>
+<span class="sourceLineNo">645</span>  @Override<a name="line.645"></a>
+<span class="sourceLineNo">646</span>  public long incrementColumnValue(final byte [] row, final byte [] family,<a name="line.646"></a>
+<span class="sourceLineNo">647</span>      final byte [] qualifier, final long amount, final Durability durability)<a name="line.647"></a>
+<span class="sourceLineNo">648</span>  throws IOException {<a name="line.648"></a>
+<span class="sourceLineNo">649</span>    NullPointerException npe = null;<a name="line.649"></a>
+<span class="sourceLineNo">650</span>    if (row == null) {<a name="line.650"></a>
+<span class="sourceLineNo">651</span>      npe = new NullPointerException("row is null");<a name="line.651"></a>
+<span class="sourceLineNo">652</span>    } else if (family == null) {<a name="line.652"></a>
+<span class="sourceLineNo">653</span>      npe = new NullPointerException("family is null");<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    }<a name="line.654"></a>
+<span class="sourceLineNo">655</span>    if (npe != null) {<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      throw new IOException(<a name="line.656"></a>
+<span class="sourceLineNo">657</span>          "Invalid arguments to incrementColumnValue", npe);<a name="line.657"></a>
+<span class="sourceLineNo">658</span>    }<a name="line.658"></a>
 <span class="sourceLineNo">659</span><a name="line.659"></a>
-<span class="sourceLineNo">660</span>  @Override<a name="line.660"></a>
-<span class="sourceLineNo">661</span>  public long incrementColumnValue(final byte [] row, final byte [] family,<a name="line.661"></a>
-<span class="sourceLineNo">662</span>      final byte [] qualifier, final long amount, final Durability durability)<a name="line.662"></a>
-<span class="sourceLineNo">663</span>  throws IOException {<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    NullPointerException npe = null;<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    if (row == null) {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      npe = new NullPointerException("row is null");<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    } else if (family == null) {<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      npe = new NullPointerException("family is null");<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    }<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    if (npe != null) {<a name="line.670"></a>
-<span class="sourceLineNo">671</span>      throw new IOException(<a name="line.671"></a>
-<span class="sourceLineNo">672</span>          "Invalid arguments to incrementColumnValue", npe);<a name="line.672"></a>
-<span class="sourceLineNo">673</span>    }<a name="line.673"></a>
-<span class="sourceLineNo">674</span><a name="line.674"></a>
-<span class="sourceLineNo">675</span>    NoncedRegionServerCallable&lt;Long&gt; callable =<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        new NoncedRegionServerCallable&lt;Long&gt;(this.connection, getName(), row,<a name="line.676"></a>
-<span class="sourceLineNo">677</span>            this.rpcControllerFactory.newController(), HConstants.PRIORITY_UNSET) {<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      @Override<a name="line.678"></a>
-<span class="sourceLineNo">679</span>      protected Long rpcCall() throws Exception {<a name="line.679"></a>
-<span class="sourceLineNo">680</span>        MutateRequest request = RequestConverter.buildIncrementRequest(<a name="line.680"></a>
-<span class="sourceLineNo">681</span>          getLocation().getRegionInfo().getRegionName(), row, family,<a name="line.681"></a>
-<span class="sourceLineNo">682</span>          qualifier, amount, durability, getNonceGroup(), getNonce());<a name="line.682"></a>
-<span class="sourceLineNo">683</span>        MutateResponse response = doMutate(request);<a name="line.683"></a>
-<span class="sourceLineNo">684</span>        Result result = ProtobufUtil.toResult(response.getResult(), getRpcControllerCellScanner());<a name="line.684"></a>
-<span class="sourceLineNo">685</span>        return Long.valueOf(Bytes.toLong(result.getValue(family, qualifier)));<a name="line.685"></a>
-<span class="sourceLineNo">686</span>      }<a name="line.686"></a>
-<span class="sourceLineNo">687</span>    };<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    return rpcCallerFactory.&lt;Long&gt; newCaller(this.writeRpcTimeoutMs).<a name="line.688"></a>
-<span class="sourceLineNo">689</span>        callWithRetries(callable, this.operationTimeoutMs);<a name="line.689"></a>
-<span class="sourceLineNo">690</span>  }<a name="line.690"></a>
-<span class="sourceLineNo">691</span><a name="line.691"></a>
-<span class="sourceLineNo">692</span>  @Override<a name="line.692"></a>
-<span class="sourceLineNo">693</span>  @Deprecated<a name="line.693"></a>
-<span class="sourceLineNo">694</span>  public boolean checkAndPut(final byte [] row, final byte [] family, final byte [] qualifier,<a name="line.694"></a>
-<span class="sourceLineNo">695</span>      final byte [] value, final Put put) throws IOException {<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    return doCheckAndPut(row, family, qualifier, CompareOperator.EQUAL.name(), value, null, put);<a name="line.696"></a>
-<span class="sourceLineNo">697</span>  }<a name="line.697"></a>
-<span class="sourceLineNo">698</span><a name="line.698"></a>
-<span class="sourceLineNo">699</span>  @Override<a name="line.699"></a>
-<span class="sourceLineNo">700</span>  @Deprecated<a name="line.700"></a>
-<span class="sourceLineNo">701</span>  public boolean checkAndPut(final byte [] row, final byte [] family, final byte [] qualifier,<a name="line.701"></a>
-<span class="sourceLineNo">702</span>      final CompareOp compareOp, final byte [] value, final Put put) throws IOException {<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    return doCheckAndPut(row, family, qualifier, compareOp.name(), value, null, put);<a name="line.703"></a>
-<span class="sourceLineNo">704</span>  }<a name="line.704"></a>
-<span class="sourceLineNo">705</span><a name="line.705"></a>
-<span class="sourceLineNo">706</span>  @Override<a name="line.706"></a>
-<span class="sourceLineNo">707</span>  @Deprecated<a name="line.707"></a>
-<span class="sourceLineNo">708</span>  public boolean checkAndPut(final byte [] row, final byte [] family, final byte [] qualifier,<a name="line.708"></a>
-<span class="sourceLineNo">709</span>      final CompareOperator op, final byte [] value, final Put put) throws IOException {<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    // The name of the operators in CompareOperator are intentionally those of the<a name="line.710"></a>
-<span class="sourceLineNo">711</span>    // operators in the filter's CompareOp enum.<a name="line.711"></a>
-<span class="sourceLineNo">712</span>    return doCheckAndPut(row, family, qualifier, op.name(), value, null, put);<a name="line.712"></a>
-<span class="sourceLineNo">713</span>  }<a name="line.713"></a>
-<span class="sourceLineNo">714</span><a name="line.714"></a>
-<span class="sourceLineNo">715</span>  private boolean doCheckAndPut(final byte[] row, final byte[] family, final byte[] qualifier,<a name="line.715"></a>
-<span class="sourceLineNo">716</span>    final String opName, final byte[] value, final TimeRange timeRange, final Put put)<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    throws IOException {<a name="line.717"></a>
-<span class="sourceLineNo">718</span>    ClientServiceCallable&lt;Boolean&gt; callable =<a name="line.718"></a>
-<span class="sourceLineNo">719</span>        new ClientServiceCallable&lt;Boolean&gt;(this.connection, getName(), row,<a name="line.719"></a>
-<span class="sourceLineNo">720</span>            this.rpcControllerFactory.newController(), put.getPriority()) {<a name="line.720"></a>
-<span class="sourceLineNo">721</span>      @Override<a name="line.721"></a>
-<span class="sourceLineNo">722</span>      protected Boolean rpcCall() throws Exception {<a name="line.722"></a>
-<span class="sourceLineNo">723</span>        CompareType compareType = CompareType.valueOf(opName);<a name="line.723"></a>
-<span class="sourceLineNo">724</span>        MutateRequest request = RequestConverter.buildMutateRequest(<a name="line.724"></a>
-<span class="sourceLineNo">725</span>            getLocation().getRegionInfo().getRegionName(), row, family, qualifier,<a name="line.725"></a>
-<span class="sourceLineNo">726</span>            new BinaryComparator(value), compareType, timeRange, put);<a name="line.726"></a>
-<span class="sourceLineNo">727</span>        MutateResponse response = doMutate(request);<a name="line.727"></a>
-<span class="sourceLineNo">728</span>        return Boolean.valueOf(response.getProcessed());<a name="line.728"></a>
-<span class="sourceLineNo">729</span>      }<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    };<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    return rpcCallerFactory.&lt;Boolean&gt; newCaller(this.writeRpcTimeoutMs)<a name="line.731"></a>
-<span class="sourceLineNo">732</span>        .callWithRetries(callable, this.operationTimeoutMs);<a name="line.732"></a>
+<span class="sourceLineNo">660</span>    NoncedRegionServerCallable&lt;Long&gt; callable =<a name="line.660"></a>
+<span class="sourceLineNo">661</span>        new NoncedRegionServerCallable&lt;Long&gt;(this.connection, getName(), row,<a name="line.661"></a>
+<span class="sourceLineNo">662</span>            this.rpcControllerFactory.newController(), HConstants.PRIORITY_UNSET) {<a name="line.662"></a>
+<span class="sourceLineNo">663</span>      @Override<a name="line.663"></a>
+<span class="sourceLineNo">664</span>      protected Long rpcCall() throws Exception {<a name="line.664"></a>
+<span class="sourceLineNo">665</span>        MutateRequest request = RequestConverter.buildIncrementRequest(<a name="line.665"></a>
+<span class="sourceLineNo">666</span>          getLocation().getRegionInfo().getRegionName(), row, family,<a name="line.666"></a>
+<span class="sourceLineNo">667</span>          qualifier, amount, durability, getNonceGroup(), getNonce());<a name="line.667"></a>
+<span class="sourceLineNo">668</span>        MutateResponse response = doMutate(request);<a name="line.668"></a>
+<span class="sourceLineNo">669</span>        Result result = ProtobufUtil.toResult(response.getResult(), getRpcControllerCellScanner());<a name="line.669"></a>
+<span class="sourceLineNo">670</span>        return Long.valueOf(Bytes.toLong(result.getValue(family, qualifier)));<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>    return rpcCallerFactory.&lt;Long&gt; newCaller(this.writeRpcTimeoutMs).<a name="line.673"></a>
+<span class="sourceLineNo">674</span>        callWithRetries(callable, this.operationTimeoutMs);<a name="line.674"></a>
+<span class="sourceLineNo">675</span>  }<a name="line.675"></a>
+<span class="sourceLineNo">676</span><a name="line.676"></a>
+<span class="sourceLineNo">677</span>  @Override<a name="line.677"></a>
+<span class="sourceLineNo">678</span>  @Deprecated<a name="line.678"></a>
+<span class="sourceLineNo">679</span>  public boolean checkAndPut(final byte [] row, final byte [] family, final byte [] qualifier,<a name="line.679"></a>
+<span class="sourceLineNo">680</span>      final byte [] value, final Put put) throws IOException {<a name="line.680"></a>
+<span class="sourceLineNo">681</span>    return doCheckAndPut(row, family, qualifier, CompareOperator.EQUAL.name(), value, null, put);<a name="line.681"></a>
+<span class="sourceLineNo">682</span>  }<a name="line.682"></a>
+<span class="sourceLineNo">683</span><a name="line.683"></a>
+<span class="sourceLineNo">684</span>  @Override<a name="line.684"></a>
+<span class="sourceLineNo">685</span>  @Deprecated<a name="line.685"></a>
+<span class="sourceLineNo">686</span>  public boolean checkAndPut(final byte [] row, final byte [] family, final byte [] qualifier,<a name="line.686"></a>
+<span class="sourceLineNo">687</span>      final CompareOp compareOp, final byte [] value, final Put put) throws IOException {<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    return doCheckAndPut(row, family, qualifier, compareOp.name(), value, null, put);<a name="line.688"></a>
+<span class="sourceLineNo">689</span>  }<a name="line.689"></a>
+<span class="sourceLineNo">690</span><a name="line.690"></a>
+<span class="sourceLineNo">691</span>  @Override<a name="line.691"></a>
+<span class="sourceLineNo">692</span>  @Deprecated<a name="line.692"></a>
+<span class="sourceLineNo">693</span>  public boolean checkAndPut(final byte [] row, final byte [] family, final byte [] qualifier,<a name="line.693"></a>
+<span class="sourceLineNo">694</span>      final CompareOperator op, final byte [] value, final Put put) throws IOException {<a name="line.694"></a>
+<span class="sourceLineNo">695</span>    // The name of the operators in CompareOperator are intentionally those of the<a name="line.695"></a>
+<span class="sourceLineNo">696</span>    // operators in the filter's CompareOp enum.<a name="line.696"></a>
+<span class="sourceLineNo">697</span>    return doCheckAndPut(row, family, qualifier, op.name(), value, null, put);<a name="line.697"></a>
+<span class="sourceLineNo">698</span>  }<a name="line.698"></a>
+<span class="sourceLineNo">699</span><a name="line.699"></a>
+<span class="sourceLineNo">700</span>  private boolean doCheckAndPut(final byte[] row, final byte[] family, final byte[] qualifier,<a name="line.700"></a>
+<span class="sourceLineNo">701</span>    final String opName, final byte[] value, final TimeRange timeRange, final Put put)<a name="line.701"></a>
+<span class="sourceLineNo">702</span>    throws IOException {<a name="line.702"></a>
+<span class="sourceLineNo">703</span>    ClientServiceCallable&lt;Boolean&gt; callable =<a name="line.703"></a>
+<span class="sourceLineNo">704</span>        new ClientServiceCallable&lt;Boolean&gt;(this.connection, getName(), row,<a name="line.704"></a>
+<span class="sourceLineNo">705</span>            this.rpcControllerFactory.newController(), put.getPriority()) {<a name="line.705"></a>
+<span class="sourceLineNo">706</span>      @Override<a name="line.706"></a>
+<span class="sourceLineNo">707</span>      protected Boolean rpcCall() throws Exception {<a name="line.707"></a>
+<span class="sourceLineNo">708</span>        CompareType compareType = CompareType.valueOf(opName);<a name="line.708"></a>
+<span class="sourceLineNo">709</span>        MutateRequest request = RequestConverter.buildMutateRequest(<a name="line.709"></a>
+<span class="sourceLineNo">710</span>            getLocation().getRegionInfo().getRegionName(), row, family, qualifier,<a name="line.710"></a>
+<span class="sourceLineNo">711</span>            new BinaryComparator(value), compareType, timeRange, put);<a name="line.711"></a>
+<span class="sourceLineNo">712</span>        MutateResponse response = doMutate(request);<a name="line.712"></a>
+<span class="sourceLineNo">713</span>        return Boolean.valueOf(response.getProcessed());<a name="line.713"></a>
+<span class="sourceLineNo">714</span>      }<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    };<a name="line.715"></a>
+<span class="sourceLineNo">716</span>    return rpcCallerFactory.&lt;Boolean&gt; newCaller(this.writeRpcTimeoutMs)<a name="line.716"></a>
+<span class="sourceLineNo">717</span>        .callWithRetries(callable, this.operationTimeoutMs);<a name="line.717"></a>
+<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
+<span class="sourceLineNo">719</span><a name="line.719"></a>
+<span class="sourceLineNo">720</span>  @Override<a name="line.720"></a>
+<span class="sourceLineNo">721</span>  @Deprecated<a name="line.721"></a>
+<span class="sourceLineNo">722</span>  public boolean checkAndDelete(final byte[] row, final byte[] family, final byte[] qualifier,<a name="line.722"></a>
+<span class="sourceLineNo">723</span>    final byte[] value, final Delete delete) throws IOException {<a name="line.723"></a>
+<span class="sourceLineNo">724</span>    return doCheckAndDelete(row, family, qualifier, CompareOperator.EQUAL.name(), value, null,<a name="line.724"></a>
+<span class="sourceLineNo">725</span>      delete);<a name="line.725"></a>
+<span class="sourceLineNo">726</span>  }<a name="line.726"></a>
+<span class="sourceLineNo">727</span><a name="line.727"></a>
+<span class="sourceLineNo">728</span>  @Override<a name="line.728"></a>
+<span class="sourceLineNo">729</span>  @Deprecated<a name="line.729"></a>
+<span class="sourceLineNo">730</span>  public boolean checkAndDelete(final byte[] row, final byte[] family, final byte[] qualifier,<a name="line.730"></a>
+<span class="sourceLineNo">731</span>    final CompareOp compareOp, final byte[] value, final Delete delete) throws IOException {<a name="line.731"></a>
+<span class="sourceLineNo">732</span>    return doCheckAndDelete(row, family, qualifier, compareOp.name(), value, null, delete);<a name="line.732"></a>
 <span class="sourceLineNo">733</span>  }<a name="line.733"></a>
 <span class="sourceLineNo">734</span><a name="line.734"></a>
 <span class="sourceLineNo">735</span>  @Override<a name="line.735"></a>
 <span class="sourceLineNo">736</span>  @Deprecated<a name="line.736"></a>
 <span class="sourceLineNo">737</span>  public boolean checkAndDelete(final byte[] row, final byte[] family, final byte[] qualifier,<a name="line.737"></a>
-<span class="sourceLineNo">738</span>    final byte[] value, final Delete delete) throws IOException {<a name="line.738"></a>
-<span class="sourceLineNo">739</span>    return doCheckAndDelete(row, family, qualifier, CompareOperator.EQUAL.name(), value, null,<a name="line.739"></a>
-<span class="sourceLineNo">740</span>      delete);<a name="line.740"></a>
-<span class="sourceLineNo">741</span>  }<a name="line.741"></a>
-<span class="sourceLineNo">742</span><a name="line.742"></a>
-<span class="sourceLineNo">743</span>  @Override<a name="line.743"></a>
-<span class="sourceLineNo">744</span>  @Deprecated<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  public boolean checkAndDelete(final byte[] row, final byte[] family, final byte[] qualifier,<a name="line.745"></a>
-<span class="sourceLineNo">746</span>    final CompareOp compareOp, final byte[] value, final Delete delete) throws IOException {<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    return doCheckAndDelete(row, family, qualifier, compareOp.name(), value, null, delete);<a name="line.747"></a>
-<span class="sourceLineNo">748</span>  }<a name="line.748"></a>
-<span class="sourceLineNo">749</span><a name="line.749"></a>
-<span class="sourceLineNo">750</span>  @Override<a name="line.750"></a>
-<span class="sourceLineNo">751</span>  @Deprecated<a name="line.751"></a>
-<span class="sourceLineNo">752</span>  public boolean checkAndDelete(final byte[] row, final byte[] family, final byte[] qualifier,<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    final CompareOperator op, final byte[] value, final Delete delete) throws IOException {<a name="line.753"></a>
-<span class="sourceLineNo">754</span>    return doCheckAndDelete(row, family, qualifier, op.name(), value, null, delete);<a name="line.754"></a>
-<span class="sourceLineNo">755</span>  }<a name="line.755"></a>
-<span class="sourceLineNo">756</span><a name="line.756"></a>
-<span class="sourceLineNo">757</span>  private boolean doCheckAndDelete(final byte[] row, final byte[] family, final byte[] qualifier,<a name="line.757"></a>
-<span class="sourceLineNo">758</span>    final String opName, final byte[] value, final TimeRange timeRange, final Delete delete)<a name="line.758"></a>
-<span class="sourceLineNo">759</span>    throws IOException {<a name="line.759"></a>
-<span class="sourceLineNo">760</span>    CancellableRegionServerCallable&lt;SingleResponse&gt; callable =<a name="line.760"></a>
-<span class="sourceLineNo">761</span>      new CancellableRegionServerCallable&lt;SingleResponse&gt;(this.connection, getName(), row,<a name="line.761"></a>
-<span class="sourceLineNo">762</span>        this.rpcControllerFactory.newController(), writeRpcTimeoutMs,<a name="line.762"></a>
-<span class="sourceLineNo">763</span>        new RetryingTimeTracker().start(), delete.getPriority()) {<a name="line.763"></a>
-<span class="sourceLineNo">764</span>        @Override<a name="line.764"></a>
-<span class="sourceLineNo">765</span>        protected SingleResponse rpcCall() throws Exception {<a name="line.765"></a>
-<span class="sourceLineNo">766</span>          CompareType compareType = CompareType.valueOf(opName);<a name="line.766"></a>
-<span class="sourceLineNo">767</span>          MutateRequest request = RequestConverter<a name="line.767"></a>
-<span class="sourceLineNo">768</span>            .buildMutateRequest(getLocation().getRegionInfo().getRegionName(), row, family,<a name="line.768"></a>
-<span class="sourceLineNo">769</span>              qualifier, new BinaryComparator(value), compareType, timeRange, delete);<a name="line.769"></a>
-<span class="sourceLineNo">770</span>          MutateResponse response = doMutate(request);<a name="line.770"></a>
-<span class="sourceLineNo">771</span>          return ResponseConverter.getResult(request, response, getRpcControllerCellScanner());<a name="line.771"></a>
-<span class="sourceLineNo">772</span>        }<a name="line.772"></a>
-<span class="sourceLineNo">773</span>      };<a name="line.773"></a>
-<span class="sourceLineNo">774</span>    List&lt;Delete&gt; rows = Collections.singletonList(delete);<a name="line.774"></a>
-<span class="sourceLineNo">775</span>    Object[] results = new Object[1];<a name="line.775"></a>
-<span class="sourceLineNo">776</span>    AsyncProcessTask task =<a name="line.776"></a>
-<span class="sourceLineNo">777</span>      AsyncProcessTask.newBuilder().setPool(pool).setTableName(tableName).setRowAccess(rows)<a name="line.777"></a>
-<span class="sourceLineNo">778</span>        .setCallable(callable)<a name="line.778"></a>
-<span class="sourceLineNo">779</span>        // TODO any better timeout?<a name="line.779"></a>
-<span class="sourceLineNo">780</span>        .setRpcTimeout(Math.max(readRpcTimeoutMs, writeRpcTimeoutMs))<a name="line.780"></a>
-<span class="sourceLineNo">781</span>        .setOperationTimeout(operationTimeoutMs)<a name="line.781"></a>
-<span class="sourceLineNo">782</span>        .setSubmittedRows(AsyncProcessTask.SubmittedRows.ALL).setResults(results).build();<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    AsyncRequestFuture ars = multiAp.submit(task);<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    ars.waitUntilDone();<a name="line.784"></a>
-<span class="sourceLineNo">785</span>    if (ars.hasError()) {<a name="line.785"></a>
-<span class="sourceLineNo">786</span>      throw ars.getErrors();<a name="line.786"></a>
-<span class="sourceLineNo">787</span>    }<a name="line.787"></a>
-<span class="sourceLineNo">788</span>    return ((SingleResponse.Entry) results[0]).isProcessed();<a name="line.788"></a>
-<span class="sourceLineNo">789</span>  }<a name="line.789"></a>
-<span class="sourceLineNo">790</span><a name="line.790"></a>
-<span class="sourceLineNo">791</span>  @Override<a name="line.791"></a>
-<span class="sourceLineNo">792</span>  public CheckAndMutateBuilder checkAndMutate(byte[] row, byte[] family) {<a name="line.792"></a>
-<span class="sourceLineNo">793</span>    return new CheckAndMutateBuilderImpl(row, family);<a name="line.793"></a>
-<span class="sourceLineNo">794</span>  }<a name="line.794"></a>
-<span class="sourceLineNo">795</span><a name="line.795"></a>
-<span class="sourceLineNo">796</span>  private boolean doCheckAndMutate(final byte[] row, final byte[] family, final byte[] qualifier,<a name="line.796"></a>
-<span class="sourceLineNo">797</span>    final String opName, final byte[] value, final TimeRange timeRange, final RowMutations rm)<a name="line.797"></a>
-<span class="sourceLineNo">798</span>    throws IOException {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>    CancellableRegionServerCallable&lt;MultiResponse&gt; callable =<a name="line.799"></a>
-<span class="sourceLineNo">800</span>    new CancellableRegionServerCallable&lt;MultiResponse&gt;(connection, getName(), rm.getRow(),<a name="line.800"></a>
-<span class="sourceLineNo">801</span>    rpcControllerFactory.newController(), writeRpcTimeoutMs, new RetryingTimeTracker().start(),<a name="line.801"></a>
-<span class="sourceLineNo">802</span>        rm.getMaxPriority()) {<a name="line.802"></a>
-<span class="sourceLineNo">803</span>      @Override<a name="line.803"></a>
-<span class="sourceLineNo">804</span>      protected MultiResponse rpcCall() throws Exception {<a name="line.804"></a>
-<span class="sourceLineNo">805</span>        CompareType compareType = CompareType.valueOf(opName);<a name="line.805"></a>
-<span class="sourceLineNo">806</span>        MultiRequest request = RequestConverter<a name="line.806"></a>
-<span class="sourceLineNo">807</span>          .buildMutateRequest(getLocation().getRegionInfo().getRegionName(), row, family, qualifier,<a name="line.807"></a>
-<span class="sourceLineNo">808</span>            new BinaryComparator(value), compareType, timeRange, rm);<a name="line.808"></a>
-<span class="sourceLineNo">809</span>        ClientProtos.MultiResponse response = doMulti(request);<a name="line.809"></a>
-<span class="sourceLineNo">810</span>        ClientProtos.RegionActionResult res = response.getRegionActionResultList().get(0);<a name="line.810"></a>
-<span class="sourceLineNo">811</span>        if (res.hasException()) {<a name="line.811"></a>
-<span class="sourceLineNo">812</span>          Throwable ex = ProtobufUtil.toException(res.getException());<a name="line.812"></a>
-<span class="sourceLineNo">813</span>          if (ex instanceof IOException) {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>            throw (IOException) ex;<a name="line.814"></a>
-<span class="sourceLineNo">815</span>          }<a name="line.815"></a>
-<span class="sourceLineNo">816</span>          throw new IOException(<a name="line.816"></a>
-<span class="sourceLineNo">817</span>            "Failed to checkAndMutate row: " + Bytes.toStringBinary(rm.getRow()), ex);<a name="line.817"></a>
-<span class="sourceLineNo">818</span>        }<a name="line.818"></a>
-<span class="sourceLineNo">819</span>        return ResponseConverter.getResults(request, response, getRpcControllerCellScanner());<a name="line.819"></a>
-<span class="sourceLineNo">820</span>      }<a name="line.820"></a>
-<span class="sourceLineNo">821</span>    };<a name="line.821"></a>
-<span class="sourceLineNo">822</span><a name="line.822"></a>
-<span class="sourceLineNo">823</span>    /**<a name="line.823"></a>
-<span class="sourceLineNo">824</span>     *  Currently, we use one array to store 'processed' flag which is returned by server.<a name="line.824"></a>
-<span class="sourceLineNo">825</span>     *  It is excessive to send such a large array, but that is required by the framework right now<a name="line.825"></a>
-<span class="sourceLineNo">826</span>     * */<a name="line.826"></a>
-<span class="sourceLineNo">827</span>    Object[] results = new Object[rm.getMutations().size()];<a name="line.827"></a>
-<span class="sourceLineNo">828</span>    AsyncProcessTask task = AsyncProcessTask.newBuilder()<a name="line.828"></a>
-<span class="sourceLineNo">829</span>    .setPool(pool)<a name="line.829"></a>
-<span class="sourceLineNo">830</span>    .setTableName(tableName)<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    .setRowAccess(rm.getMutations())<a name="line.831"></a>
-<span class="sourceLineNo">832</span>    .setResults(results)<a name="line.832"></a>
-<span class="sourceLineNo">833</span>    .setCallable(callable)<a name="line.833"></a>
-<span class="sourceLineNo">834</span>    // TODO any better timeout?<a name="line.834"></a>
-<span class="sourceLineNo">835</span>    .setRpcTimeout(Math.max(readRpcTimeoutMs, writeRpcTimeoutMs))<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    .setOperationTimeout(operationTimeoutMs)<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    .setSubmittedRows(AsyncProcessTask.SubmittedRows.ALL)<a name="line.837"></a>
-<span class="sourceLineNo">838</span>    .build();<a name="line.838"></a>
-<span class="sourceLineNo">839</span>    AsyncRequestFuture ars = multiAp.submit(task);<a name="line.839"></a>
-<span class="sourceLineNo">840</span>    ars.waitUntilDone();<a name="line.840"></a>
-<span class="sourceLineNo">841</span>    if (ars.hasError()) {<a name="line.841"></a>
-<span class="sourceLineNo">842</span>      throw ars.getErrors();<a name="line.842"></a>
-<span class="sourceLineNo">843</span>    }<a name="line.843"></a>
-<span class="sourceLineNo">844</span><a name="line.844"></a>
-<span class="sourceLineNo">845</span>    return ((Result)results[0]).getExists();<a name="line.845"></a>
+<span class="sourceLineNo">738</span>    final CompareOperator op, final byte[] value, final Delete delete) throws IOException {<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    return doCheckAndDelete(row, family, qualifier, op.name(), value, null, delete);<a name="line.739"></a>
+<span class="sourceLineNo">740</span>  }<a name="line.740"></a>
+<span class="sourceLineNo">741</span><a name="line.741"></a>
+<span class="sourceLineNo">742</span>  private boolean doCheckAndDelete(final byte[] row, final byte[] family, final byte[] qualifier,<a name="line.742"></a>
+<span class="sourceLineNo">743</span>    final String opName, final byte[] value, final TimeRange timeRange, final Delete delete)<a name="line.743"></a>
+<span class="sourceLineNo">744</span>    throws IOException {<a name="line.744"></a>
+<span class="sourceLineNo">745</span>    CancellableRegionServerCallable&lt;SingleResponse&gt; callable =<a name="line.745"></a>
+<span class="sourceLineNo">746</span>      new CancellableRegionServerCallable&lt;SingleResponse&gt;(this.connection, getName(), row,<a name="line.746"></a>
+<span class="sourceLineNo">747</span>        this.rpcControllerFactory.newController(), writeRpcTimeoutMs,<a name="line.747"></a>
+<span class="sourceLineNo">748</span>        new RetryingTimeTracker().start(), delete.getPriority()) {<a name="line.748"></a>
+<span class="sourceLineNo">749</span>        @Override<a name="line.749"></a>
+<span class="sourceLineNo">750</span>        protected SingleResponse rpcCall() throws Exception {<a name="line.750"></a>
+<span class="sourceLineNo">751</span>          CompareType compareType = CompareType.valueOf(opName);<a name="line.751"></a>
+<span class="sourceLineNo">752</span>          MutateRequest request = RequestConverter<a name="line.752"></a>
+<span class="sourceLineNo">753</span>            .buildMutateRequest(getLocation().getRegionInfo().getRegionName(), row, family,<a name="line.753"></a>
+<span class="sourceLineNo">754</span>              qualifier, new BinaryComparator(value), compareType, timeRange, delete);<a name="line.754"></a>
+<span class="sourceLineNo">755</span>          MutateResponse response = doMutate(request);<a name="line.755"></a>
+<span class="sourceLineNo">756</span>          return ResponseConverter.getResult(request, response, getRpcControllerCellScanner());<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>    List&lt;Delete&gt; rows = Collections.singletonList(delete);<a name="line.759"></a>
+<span class="sourceLineNo">760</span>    Object[] results = new Object[1];<a name="line.760"></a>
+<span class="sourceLineNo">761</span>    AsyncProcessTask task =<a name="line.761"></a>
+<span class="sourceLineNo">762</span>      AsyncProcessTask.newBuilder().setPool(pool).setTableName(tableName).setRowAccess(rows)<a name="line.762"></a>
+<span class="sourceLineNo">763</span>        .setCallable(callable)<a name="line.763"></a>
+<span class="sourceLineNo">764</span>        // TODO any better timeout?<a name="line.764"></a>
+<span class="sourceLineNo">765</span>        .setRpcTimeout(Math.max(readRpcTimeoutMs, writeRpcTimeoutMs))<a name="line.765"></a>
+<span class="sourceLineNo">766</span>        .setOperationTimeout(operationTimeoutMs)<a name="line.766"></a>
+<span class="sourceLineNo">767</span>        .setSubmittedRows(AsyncProcessTask.SubmittedRows.ALL).setResults(results).build();<a name="line.767"></a>
+<span class="sourceLineNo">768</span>    AsyncRequestFuture ars = multiAp.submit(task);<a name="line.768"></a>
+<span class="sourceLineNo">769</span>    ars.waitUntilDone();<a name="line.769"></a>
+<span class="sourceLineNo">770</span>    if (ars.hasError()) {<a name="line.770"></a>
+<span class="sourceLineNo">771</span>      throw ars.getErrors();<a name="line.771"></a>
+<span class="sourceLineNo">772</span>    }<a name="line.772"></a>
+<span class="sourceLineNo">773</span>    return ((SingleResponse.Entry) results[0]).isProcessed();<a name="line.773"></a>
+<span class="sourceLineNo">774</span>  }<a name="line.774"></a>
+<span class="sourceLineNo">775</span><a name="line.775"></a>
+<span class="sourceLineNo">776</span>  @Override<a name="line.776"></a>
+<span class="sourceLineNo">777</span>  public CheckAndMutateBuilder checkAndMutate(byte[] row, byte[] family) {<a name="line.777"></a>
+<span class="sourceLineNo">778</span>    return new CheckAndMutateBuilderImpl(row, family);<a name="line.778"></a>
+<span class="sourceLineNo">779</span>  }<a name="line.779"></a>
+<span class="sourceLineNo">780</span><a name="line.780"></a>
+<span class="sourceLineNo">781</span>  private boolean doCheckAndMutate(final byte[] row, final byte[] family, final byte[] qualifier,<a name="line.781"></a>
+<span class="sourceLineNo">782</span>    final String opName, final byte[] value, final TimeRange timeRange, final RowMutations rm)<a name="line.782"></a>
+<span class="sourceLineNo">783</span>    throws IOException {<a name="line.783"></a>
+<span class="sourceLineNo">784</span>    CancellableRegionServerCallable&lt;MultiResponse&gt; callable =<a name="line.784"></a>
+<span class="sourceLineNo">785</span>    new CancellableRegionServerCallable&lt;MultiResponse&gt;(connection, getName(), rm.getRow(),<a name="line.785"></a>
+<span class="sourceLineNo">786</span>    rpcControllerFactory.newController(), writeRpcTimeoutMs, new RetryingTimeTracker().start(),<a name="line.786"></a>
+<span class="sourceLineNo">787</span>        rm.getMaxPriority()) {<a name="line.787"></a>
+<span class="sourceLineNo">788</span>      @Override<a name="line.788"></a>
+<span class="sourceLineNo">789</span>      protected MultiResponse rpcCall() throws Exception {<a name="line.789"></a>
+<span class="sourceLineNo">790</span>        CompareType compareType = CompareType.valueOf(opName);<a name="line.790"></a>
+<span class="sourceLineNo">791</span>        MultiRequest request = RequestConverter<a name="line.791"></a>
+<span class="sourceLineNo">792</span>          .buildMutateRequest(getLocation().getRegionInfo().getRegionName(), row, family, qualifier,<a name="line.792"></a>
+<span class="sourceLineNo">793</span>            new BinaryComparator(value), compareType, timeRange, rm);<a name="line.793"></a>
+<span class="sourceLineNo">794</span>        ClientProtos.MultiResponse response = doMulti(request);<a name="line.794"></a>
+<span class="sourceLineNo">795</span>        ClientProtos.RegionActionResult res = response.getRegionActionResultList().get(0);<a name="line.795"></a>
+<span class="sourceLineNo">796</span>        if (res.hasException()) {<a name="line.796"></a>
+<span class="sourceLineNo">797</span>          Throwable ex = ProtobufUtil.toException(res.getException());<a name="line.797"></a>
+<span class="sourceLineNo">798</span>          if (ex instanceof IOException) {<a name="line.798"></a>
+<span class="sourceLineNo">799</span>            throw (IOException) ex;<a name="line.799"></a>
+<span class="sourceLineNo">800</span>          }<a name="line.800"></a>
+<span class="sourceLineNo">801</span>          throw new IOException(<a name="line.801"></a>
+<span class="sourceLineNo">802</span>            "Failed to checkAndMutate row: " + Bytes.toStringBinary(rm.getRow()), ex);<a name="line.802"></a>
+<span class="sourceLineNo">803</span>        }<a name="line.803"></a>
+<span class="sourceLineNo">804</span>        return ResponseConverter.getResults(request, response, getRpcControllerCellScanner());<a name="line.804"></a>
+<span class="sourceLineNo">805</span>      }<a name="line.805"></a>
+<span class="sourceLineNo">806</span>    };<a name="line.806"></a>
+<span class="sourceLineNo">807</span><a name="line.807"></a>
+<span class="sourceLineNo">808</span>    /**<a name="line.808"></a>
+<span class="sourceLineNo">809</span>     *  Currently, we use one array to store 'processed' flag which is returned by server.<a name="line.809"></a>
+<span class="sourceLineNo">810</span>     *  It is excessive to send such a large array, but that is required by the framework right now<a name="line.810"></a>
+<span class="sourceLineNo">811</span>     * */<a name="line.811"></a>
+<span class="sourceLineNo">812</span>    Object[] results = new Object[rm.getMutations().size()];<a name="line.812"></a>
+<span class="sourceLineNo">813</span>    AsyncProcessTask task = AsyncProcessTask.newBuilder()<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    .setPool(pool)<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    .setTableName(tableName)<a name="line.815"></a>
+<span class="sourceLineNo">816</span>    .setRowAccess(rm.getMutations())<a name="line.816"></a>
+<span class="sourceLineNo">817</span>    .setResults(results)<a name="line.817"></a>
+<span class="sourceLineNo">818</span>    .setCallable(callable)<a name="line.818"></a>
+<span class="sourceLineNo">819</span>    // TODO any better timeout?<a name="line.819"></a>
+<span class="sourceLineNo">820</span>    .setRpcTimeout(Math.max(readRpcTimeoutMs, writeRpcTimeoutMs))<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    .setOperationTimeout(operationTimeoutMs)<a name="line.821"></a>
+<span class="sourceLineNo">822</span>    .setSubmittedRows(AsyncProcessTask.SubmittedRows.ALL)<a name="line.822"></a>
+<span class="sourceLineNo">823</span>    .build();<a name="line.823"></a>
+<span class="sourceLineNo">824</span>    AsyncRequestFuture ars = multiAp.submit(task);<a name="line.824"></a>
+<span class="sourceLineNo">825</span>    ars.waitUntilDone();<a name="line.825"></a>
+<span class="sourceLineNo">826</span>    if (ars.hasError()) {<a name="line.826"></a>
+<span class="sourceLineNo">827</span>      throw ars.getErrors();<a name="line.827"></a>
+<span class="sourceLineNo">828</span>    }<a name="line.828"></a>
+<span class="sourceLineNo">829</span><a name="line.829"></a>
+<span class="sourceLineNo">830</span>    return ((Result)results[0]).getExists();<a name="line.830"></a>
+<span class="sourceLineNo">831</span>  }<a name="line.831"></a>
+<span class="sourceLineNo">832</span><a name="line.832"></a>
+<span class="sourceLineNo">833</span>  @Override<a name="line.833"></a>
+<span class="sourceLineNo">834</span>  @Deprecated<a name="line.834"></a>
+<span class="sourceLineNo">835</span>  public boolean checkAndMutate(final byte [] row, final byte [] family, final byte [] qualifier,<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    final CompareOp compareOp, final byte [] value, final RowMutations rm)<a name="line.836"></a>
+<span class="sourceLineNo">837</span>  throws IOException {<a name="line.837"></a>
+<span class="sourceLineNo">838</span>    return doCheckAndMutate(row, family, qualifier, compareOp.name(), value, null, rm);<a name="line.838"></a>
+<span class="sourceLineNo">839</span>  }<a name="line.839"></a>
+<span class="sourceLineNo">840</span><a name="line.840"></a>
+<span class="sourceLineNo">841</span>  @Override<a name="line.841"></a>
+<span class="sourceLineNo">842</span>  @Deprecated<a name="line.842"></a>
+<span class="sourceLineNo">843</span>  public boolean checkAndMutate(final byte [] row, final byte [] family, final byte [] qualifier,<a name="line.843"></a>
+<span class="sourceLineNo">844</span>      final CompareOperator op, final byte [] value, final RowMutations rm) throws IOException {<a name="line.844"></a>
+<span class="sourceLineNo">845</span>    return doCheckAndMutate(row, family, qualifier, op.name(), value, null, rm);<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>  @Override<a name="line.848"></a>
-<span class="sourceLineNo">849</span>  @Deprecated<a name="line.849"></a>
-<span class="sourceLineNo">850</span>  public boolean checkAndMutate(final byte [] row, final byte [] family, final byte [] qualifier,<a name="line.850"></a>
-<span class="sourceLineNo">851</span>    final CompareOp compareOp, final byte [] value, final RowMutations rm)<a name="line.851"></a>
-<span class="sourceLineNo">852</span>  throws IOException {<a name="line.852"></a>
-<span class="sourceLineNo">853</span>    return doCheckAndMutate(row, family, qualifier, compareOp.name(), value, null, rm);<a name="line.853"></a>
-<span class="sourceLineNo">854</span>  }<a name="line.854"></a>
-<span class="sourceLineNo">855</span><a name="line.855"></a>
-<span class="sourceLineNo">856</span>  @Override<a name="line.856"></a>
-<span class="sourceLineNo">857</span>  @Deprecated<a name="line.857"></a>
-<span class="sourceLineNo">858</span>  public boolean checkAndMutate(final byte [] row, final byte [] family, final byte [] qualifier,<a name="line.858"></a>
-<span class="sourceLineNo">859</span>      final CompareOperator op, final byte [] value, final RowMutations rm) throws IOException {<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    return doCheckAndMutate(row, family, qualifier, op.name(), value, null, rm);<a name="line.860"></a>
-<span class="sourceLineNo">861</span>  }<a name="line.861"></a>
-<span class="sourceLineNo">862</span><a name="line.862"></a>
-<span class="sourceLineNo">863</span>  @Override<a name="line.863"></a>
-<span class="sourceLineNo">864</span>  public boolean exists(final Get get) throws IOException {<a name="line.864"></a>
-<span class="sourceLineNo">865</span>    Result r = get(get, true);<a name="line.865"></a>
-<span class="sourceLineNo">866</span>    assert r.getExists() != null;<a name="line.866"></a>
-<span class="sourceLineNo">867</span>    return r.getExists();<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>  @Override<a name="line.870"></a>
-<span class="sourceLineNo">871</span>  public boolean[] exists(List&lt;Get&gt; gets) throws IOException {<a name="line.871"></a>
-<span class="sourceLineNo">872</span>    if (gets.isEmpty()) return new boolean[]{};<a name="line.872"></a>
-<span class="sourceLineNo">873</span>    if (gets.size() == 1) return new boolean[]{exists(gets.get(0))};<a name="line.873"></a>
-<span class="sourceLineNo">874</span><a name="line.874"></a>
-<span class="sourceLineNo">875</span>    ArrayList&lt;Get&gt; exists = new ArrayList&lt;&gt;(gets.size());<a name="line.875"></a>
-<span class="sourceLineNo">876</span>    for (Get g: gets){<a name="line.876"></a>
-<span class="sourceLineNo">877</span>      Get ge = new Get(g);<a name="line.877"></a>
-<span class="sourceLineNo">878</span>      ge.setCheckExistenceOnly(true);<a name="line.878"></a>
-<span class="sourceLineNo">879</span>      exists.add(ge);<a name="line.879"></a>
+<span class="sourceLineNo">849</span>  public boolean exists(final Get get) throws IOException {<a name="line.849"></a>
+<span class="sourceLineNo">850</span>    Result r = get(get, true);<a name="line.850"></a>
+<span class="sourceLineNo">851</span>    assert r.getExists() != null;<a name="line.851"></a>
+<span class="sourceLineNo">852</span>    return r.getExists();<a name="line.852"></a>
+<span class="sourceLineNo">853</span>  }<a name="line.853"></a>
+<span class="sourceLineNo">854</span><a name="line.854"></a>
+<span class="sourceLineNo">855</span>  @Override<a name="line.855"></a>
+<span class="sourceLineNo">856</span>  public boolean[] exists(List&lt;Get&gt; gets) throws IOException {<a name="line.856"></a>
+<span class="sourceLineNo">857</span>    if (gets.isEmpty()) return new boolean[]{};<a name="line.857"></a>
+<span class="sourceLineNo">858</span>    if (gets.size() == 1) return new boolean[]{exists(gets.get(0))};<a name="line.858"></a>
+<span class="sourceLineNo">859</span><a name="line.859"></a>
+<span class="sourceLineNo">860</span>    ArrayList&lt;Get&gt; exists = new ArrayList&lt;&gt;(gets.size());<a name="line.860"></a>
+<span class="sourceLineNo">861</span>    for (Get g: gets){<a name="line.861"></a>
+<span class="sourceLineNo">862</span>      Get ge = new Get(g);<a name="line.862"></a>
+<span class="sourceLineNo">863</span>      ge.setCheckExistenceOnly(true);<a name="line.863"></a>
+<span class="sourceLineNo">864</span>      exists.add(ge);<a name="line.864"></a>
+<span class="sourceLineNo">865</span>    }<a name="line.865"></a>
+<span class="sourceLineNo">866</span><a name="line.866"></a>
+<span class="sourceLineNo">867</span>    Object[] r1= new Object[exists.size()];<a name="line.867"></a>
+<span class="sourceLineNo">868</span>    try {<a name="line.868"></a>
+<span class="sourceLineNo">869</span>      batch(exists, r1, readRpcTimeoutMs);<a name="line.869"></a>
+<span class="sourceLineNo">870</span>    } catch (InterruptedException e) {<a name="line.870"></a>
+<span class="sourceLineNo">871</span>      throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.871"></a>
+<span class="sourceLineNo">872</span>    }<a name="line.872"></a>
+<span class="sourceLineNo">873</span><a name="line.873"></a>
+<span class="sourceLineNo">874</span>    // translate.<a name="line.874"></a>
+<span class="sourceLineNo">875</span>    boolean[] results = new boolean[r1.length];<a name="line.875"></a>
+<span class="sourceLineNo">876</span>    int i = 0;<a name="line.876"></a>
+<span class="sourceLineNo">877</span>    for (Object o : r1) {<a name="line.877"></a>
+<span class="sourceLineNo">878</span>      // batch ensures if there is a failure we get an exception instead<a name="line.878"></a>
+<span class="sourceLineNo">879</span>      results[i++] = ((Result)o).getExists();<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>    Object[] r1= new Object[exists.size()];<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    try {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      batch(exists, r1, readRpcTimeoutMs);<a name="line.884"></a>
-<span class="sourceLineNo">885</span>    } catch (InterruptedException e) {<a name="line.885"></a>
-<span class="sourceLineNo">886</span>      throw (InterruptedIOException)new InterruptedIOException().initCause(e);<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>    // translate.<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    boolean[] results = new boolean[r1.length];<a name="line.890"></a>
-<span class="sourceLineNo">891</span>    int i = 0;<a name="line.891"></a>
-<span class="sourceLineNo">892</span>    for (Object o : r1) {<a name="line.892"></a>
-<span class="sourceLineNo">893</span>      // batch ensures if there is a failure we get an exception instead<a name="line.893"></a>
-<span class="sourceLineNo">894</span>      results[i++] = ((Result)o).getExists();<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    }<a name="line.895"></a>
-<span class="sourceLineNo">896</span><a name="line.896"></a>
-<span class="sourceLineNo">897</span>    return results;<a name="line.897"></a>
-<span class="sourceLineNo">898</span>  }<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>   * Process a mixed batch of Get, Put and Delete actions. All actions for a<a name="line.901"></a>
-<span class="sourceLineNo">902</span>   * RegionServer are forwarded in one RPC call. Queries are executed in parallel.<a name="line.902"></a>
-<span class="sourceLineNo">903</span>   *<a name="line.903"></a>
-<span class="sourceLineNo">904</span>   * @param list The collection of actions.<a name="line.904"></a>
-<span class="sourceLineNo">905</span>   * @param results An empty array, same size as list. If an exception is thrown,<a name="line.905"></a>
-<span class="sourceLineNo">906</span>   *   you can test here for partial results, and to determine which actions<a name="line.906"></a>
-<span class="sourceLineNo">907</span>   *   processed successfully.<a name="line.907"></a>
-<span class="sourceLineNo">908</span>   * @throws IOException if there are problems talking to META. Per-item<a name="line.908"></a>
-<span class="sourceLineNo">909</span>   *   exceptions are stored in the results array.<a name="line.909"></a>
-<span class="sourceLineNo">910</span>   */<a name="line.910"></a>
-<span class="sourceLineNo">911</span>  public &lt;R&gt; void processBatchCallback(<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    final List&lt;? extends Row&gt; list, final Object[] results, final Batch.Callback&lt;R&gt; callback)<a name="line.912"></a>
-<span class="sourceLineNo">913</span>    throws IOException, InterruptedException {<a name="line.913"></a>
-<span class="sourceLineNo">914</span>    this.batchCallback(list, results, callback);<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>  @Override<a name="line.917"></a>
-<span class="sourceLineNo">918</span>  public void close() throws IOException {<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    if (this.closed) {<a name="line.919"></a>
-<span class="sourceLineNo">920</span>      return;<a name="line.920"></a>
-<span class="sourceLineNo">921</span>    }<a name="line.921"></a>
-<span class="sourceLineNo">922</span>    if (cleanupPoolOnClose) {<a name="line.922"></a>
-<span class="sourceLineNo">923</span>      this.pool.shutdown();<a name="line.923"></a>
-<span class="sourceLineNo">924</span>      try {<a name="line.924"></a>
-<span class="sourceLineNo">925</span>        boolean terminated = false;<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        do {<a name="line.926"></a>
-<span class="sourceLineNo">927</span>          // wait until the pool has terminated<a name="line.927"></a>
-<span class="sourceLineNo">928</span>          terminated = this.pool.awaitTermination(60, TimeUnit.SECONDS);<a name="line.928"></a>
-<span class="sourceLineNo">929</span>        } while (!terminated);<a name="line.929"></a>
-<span class="sourceLineNo">930</span>      } catch (InterruptedException e) {<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        this.pool.shutdownNow();<a name="line.931"></a>
-<span class="sourceLineNo">932</span>        LOG.warn("waitForTermination interrupted");<a name="line.932"></a>
-<span class="sourceLineNo">933</span>      }<a name="line.933"></a>
-<span class="sourceLineNo">934</span>    }<a name="line.934"></a>
-<span class="sourceLineNo">935</span>    this.closed = true;<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>  // validate for well-formedness<a name="line.938"></a>
-<span class="sourceLineNo">939</span>  public void validatePut(final Put put) throws IllegalArgumentException {<a name="line.939"></a>
-<span class="sourceLineNo">940</span>    validatePut(put, connConfiguration.getMaxKeyValueSize());<a name="line.940"></a>
-<span class="sourceLineNo">941</span>  }<a name="line.941"></a>
-<span class="sourceLineNo">942</span><a name="line.942"></a>
-<span class="sourceLineNo">943</span>  // validate for well-formedness<a name="line.943"></a>
-<span class="sourceLineNo">944</span>  public static void validatePut(Put put, int maxKeyValueSize) throws IllegalArgumentException {<a name="line.944"></a>
-<span class="sourceLineNo">945</span>    if (put.isEmpty()) {<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      throw new IllegalArgumentException("No columns to insert");<a name="line.946"></a>
-<span class="sourceLineNo">947</span>    }<a name="line.947"></a>
-<span class="sourceLineNo">948</span>    if (maxKeyValueSize &gt; 0) {<a name="line.948"></a>
-<span class="sourceLineNo">949</span>      for (List&lt;Cell&gt; list : put.getFamilyCellMap().values()) {<a name="line.949"></a>
-<span class="sourceLineNo">950</span>        for (Cell cell : list) {<a name="line.950"></a>
-<span class="sourceLineNo">951</span>          if (KeyValueUtil.length(cell) &gt; maxKeyValueSize) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>            throw new IllegalArgumentException("KeyValue size too large");<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>      }<a name="line.955"></a>
-<span class="sourceLineNo">956</span>    }<a name="line.956"></a>
-<span class="sourceLineNo">957</span>  }<a name="line.957"></a>
-<span class="sourceLineNo">958</span><a name="line.958"></a>
-<span class="sourceLineNo">959</span>  /**<a name="line.959"></a>
-<span class="sourceLineNo">960</span>   * The pool is used for mutli requests for this HTable<a name="line.960"></a>
-<span class="sourceLineNo">961</span>   * @return the pool used for mutli<a name="line.961"></a>
-<span class="sourceLineNo">962</span>   */<a name="line.962"></a>
-<span class="sourceLineNo">963</span>  Executo

<TRUNCATED>

[37/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 8d9aea5..dea652d 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,16 +5,16 @@
 /Author (Apache HBase Team)
 /Creator (Asciidoctor PDF 1.5.0.alpha.15, based on Prawn 2.2.2)
 /Producer (Apache HBase Team)
-/ModDate (D:20181025143344+00'00')
-/CreationDate (D:20181025145047+00'00')
+/ModDate (D:20181026143329+00'00')
+/CreationDate (D:20181026144952+00'00')
 >>
 endobj
 2 0 obj
 << /Type /Catalog
 /Pages 3 0 R
 /Names 28 0 R
-/Outlines 5012 0 R
-/PageLabels 5263 0 R
+/Outlines 5003 0 R
+/PageLabels 5253 0 R
 /PageMode /UseOutlines
 /OpenAction [7 0 R /FitH 842.89]
 /ViewerPreferences << /DisplayDocTitle true
@@ -23,8 +23,8 @@ endobj
 endobj
 3 0 obj
 << /Type /Pages
-/Count 788
-/Kids [7 0 R 12 0 R 14 0 R 16 0 R 18 0 R 20 0 R 22 0 R 24 0 R 26 0 R 46 0 R 49 0 R 52 0 R 56 0 R 63 0 R 65 0 R 69 0 R 71 0 R 73 0 R 80 0 R 83 0 R 85 0 R 91 0 R 94 0 R 96 0 R 98 0 R 105 0 R 112 0 R 117 0 R 119 0 R 135 0 R 140 0 R 148 0 R 157 0 R 165 0 R 169 0 R 178 0 R 189 0 R 193 0 R 195 0 R 199 0 R 208 0 R 217 0 R 225 0 R 234 0 R 239 0 R 248 0 R 256 0 R 265 0 R 278 0 R 285 0 R 295 0 R 303 0 R 311 0 R 318 0 R 327 0 R 333 0 R 339 0 R 346 0 R 354 0 R 362 0 R 373 0 R 386 0 R 394 0 R 401 0 R 409 0 R 417 0 R 426 0 R 436 0 R 444 0 R 451 0 R 458 0 R 467 0 R 480 0 R 488 0 R 495 0 R 503 0 R 511 0 R 520 0 R 525 0 R 531 0 R 536 0 R 540 0 R 556 0 R 567 0 R 571 0 R 586 0 R 591 0 R 596 0 R 598 0 R 600 0 R 603 0 R 605 0 R 607 0 R 615 0 R 621 0 R 624 0 R 628 0 R 637 0 R 648 0 R 656 0 R 660 0 R 664 0 R 666 0 R 676 0 R 691 0 R 698 0 R 709 0 R 719 0 R 730 0 R 742 0 R 762 0 R 777 0 R 784 0 R 791 0 R 797 0 R 800 0 R 804 0 R 808 0 R 811 0 R 814 0 R 816 0 R 819 0 R 823 0 R 825 0 R 829 0 R 835 0 R 840 0 R 
 844 0 R 847 0 R 853 0 R 855 0 R 859 0 R 867 0 R 869 0 R 872 0 R 875 0 R 878 0 R 881 0 R 895 0 R 903 0 R 914 0 R 925 0 R 931 0 R 941 0 R 952 0 R 955 0 R 959 0 R 962 0 R 967 0 R 976 0 R 984 0 R 989 0 R 993 0 R 998 0 R 1002 0 R 1004 0 R 1019 0 R 1030 0 R 1035 0 R 1042 0 R 1045 0 R 1053 0 R 1061 0 R 1066 0 R 1071 0 R 1076 0 R 1078 0 R 1080 0 R 1082 0 R 1092 0 R 1100 0 R 1104 0 R 1111 0 R 1118 0 R 1126 0 R 1130 0 R 1136 0 R 1141 0 R 1149 0 R 1153 0 R 1158 0 R 1160 0 R 1166 0 R 1174 0 R 1180 0 R 1187 0 R 1198 0 R 1202 0 R 1204 0 R 1206 0 R 1210 0 R 1213 0 R 1218 0 R 1221 0 R 1233 0 R 1237 0 R 1243 0 R 1251 0 R 1256 0 R 1260 0 R 1264 0 R 1266 0 R 1269 0 R 1272 0 R 1275 0 R 1279 0 R 1283 0 R 1287 0 R 1292 0 R 1296 0 R 1299 0 R 1301 0 R 1311 0 R 1313 0 R 1318 0 R 1331 0 R 1335 0 R 1341 0 R 1343 0 R 1354 0 R 1357 0 R 1363 0 R 1371 0 R 1374 0 R 1381 0 R 1388 0 R 1391 0 R 1393 0 R 1402 0 R 1404 0 R 1406 0 R 1409 0 R 1411 0 R 1413 0 R 1415 0 R 1417 0 R 1420 0 R 1424 0 R 1429 0 R 1431 0 R 1433 0 
 R 1435 0 R 1440 0 R 1447 0 R 1453 0 R 1456 0 R 1458 0 R 1461 0 R 1465 0 R 1469 0 R 1472 0 R 1474 0 R 1476 0 R 1479 0 R 1484 0 R 1490 0 R 1498 0 R 1512 0 R 1526 0 R 1529 0 R 1534 0 R 1547 0 R 1552 0 R 1567 0 R 1575 0 R 1579 0 R 1588 0 R 1603 0 R 1615 0 R 1618 0 R 1632 0 R 1640 0 R 1645 0 R 1656 0 R 1661 0 R 1667 0 R 1673 0 R 1685 0 R 1688 0 R 1697 0 R 1700 0 R 1709 0 R 1714 0 R 1719 0 R 1723 0 R 1736 0 R 1738 0 R 1744 0 R 1750 0 R 1753 0 R 1761 0 R 1769 0 R 1773 0 R 1775 0 R 1777 0 R 1789 0 R 1795 0 R 1804 0 R 1811 0 R 1824 0 R 1830 0 R 1836 0 R 1847 0 R 1853 0 R 1858 0 R 1862 0 R 1866 0 R 1869 0 R 1874 0 R 1879 0 R 1885 0 R 1890 0 R 1894 0 R 1903 0 R 1909 0 R 1912 0 R 1916 0 R 1925 0 R 1932 0 R 1938 0 R 1945 0 R 1949 0 R 1952 0 R 1957 0 R 1962 0 R 1968 0 R 1970 0 R 1972 0 R 1975 0 R 1986 0 R 1989 0 R 1996 0 R 2004 0 R 2009 0 R 2012 0 R 2017 0 R 2019 0 R 2022 0 R 2027 0 R 2030 0 R 2032 0 R 2035 0 R 2038 0 R 2041 0 R 2051 0 R 2056 0 R 2061 0 R 2063 0 R 2071 0 R 2078 0 R 2085 0 R 2091 
 0 R 2096 0 R 2098 0 R 2107 0 R 2117 0 R 2127 0 R 2133 0 R 2140 0 R 2142 0 R 2147 0 R 2149 0 R 2151 0 R 2155 0 R 2158 0 R 2161 0 R 2166 0 R 2170 0 R 2181 0 R 2184 0 R 2187 0 R 2191 0 R 2195 0 R 2198 0 R 2200 0 R 2205 0 R 2208 0 R 2210 0 R 2215 0 R 2225 0 R 2227 0 R 2229 0 R 2231 0 R 2233 0 R 2236 0 R 2238 0 R 2240 0 R 2243 0 R 2245 0 R 2247 0 R 2251 0 R 2256 0 R 2265 0 R 2267 0 R 2269 0 R 2275 0 R 2277 0 R 2282 0 R 2284 0 R 2286 0 R 2293 0 R 2298 0 R 2302 0 R 2307 0 R 2311 0 R 2313 0 R 2315 0 R 2319 0 R 2322 0 R 2324 0 R 2326 0 R 2330 0 R 2332 0 R 2335 0 R 2337 0 R 2339 0 R 2341 0 R 2348 0 R 2351 0 R 2356 0 R 2358 0 R 2360 0 R 2362 0 R 2364 0 R 2372 0 R 2383 0 R 2397 0 R 2408 0 R 2412 0 R 2417 0 R 2421 0 R 2424 0 R 2429 0 R 2435 0 R 2437 0 R 2440 0 R 2442 0 R 2444 0 R 2446 0 R 2451 0 R 2453 0 R 2466 0 R 2469 0 R 2477 0 R 2483 0 R 2495 0 R 2509 0 R 2522 0 R 2541 0 R 2543 0 R 2545 0 R 2549 0 R 2567 0 R 2573 0 R 2585 0 R 2589 0 R 2593 0 R 2602 0 R 2614 0 R 2619 0 R 2629 0 R 2642 0 R 266
 1 0 R 2670 0 R 2673 0 R 2682 0 R 2699 0 R 2706 0 R 2709 0 R 2714 0 R 2718 0 R 2721 0 R 2730 0 R 2739 0 R 2742 0 R 2744 0 R 2748 0 R 2762 0 R 2771 0 R 2776 0 R 2781 0 R 2784 0 R 2786 0 R 2788 0 R 2790 0 R 2792 0 R 2797 0 R 2810 0 R 2820 0 R 2828 0 R 2835 0 R 2840 0 R 2850 0 R 2857 0 R 2864 0 R 2866 0 R 2875 0 R 2883 0 R 2885 0 R 2889 0 R 2891 0 R 2902 0 R 2908 0 R 2910 0 R 2919 0 R 2922 0 R 2932 0 R 2936 0 R 2944 0 R 2952 0 R 2957 0 R 2961 0 R 2965 0 R 2967 0 R 2973 0 R 2977 0 R 2981 0 R 2987 0 R 2993 0 R 2996 0 R 3002 0 R 3006 0 R 3015 0 R 3020 0 R 3026 0 R 3036 0 R 3043 0 R 3050 0 R 3053 0 R 3056 0 R 3062 0 R 3068 0 R 3071 0 R 3076 0 R 3085 0 R 3091 0 R 3093 0 R 3097 0 R 3102 0 R 3107 0 R 3114 0 R 3121 0 R 3128 0 R 3136 0 R 3142 0 R 3147 0 R 3151 0 R 3154 0 R 3157 0 R 3166 0 R 3171 0 R 3175 0 R 3183 0 R 3188 0 R 3192 0 R 3194 0 R 3205 0 R 3210 0 R 3213 0 R 3215 0 R 3217 0 R 3227 0 R 3234 0 R 3238 0 R 3241 0 R 3248 0 R 3252 0 R 3255 0 R 3259 0 R 3264 0 R 3272 0 R 3277 0 R 3282 0 R 3
 287 0 R 3289 0 R 3292 0 R 3294 0 R 3298 0 R 3309 0 R 3311 0 R 3315 0 R 3318 0 R 3322 0 R 3325 0 R 3329 0 R 3331 0 R 3344 0 R 3349 0 R 3354 0 R 3360 0 R 3368 0 R 3370 0 R 3378 0 R 3396 0 R 3408 0 R 3414 0 R 3430 0 R 3434 0 R 3439 0 R 3441 0 R 3448 0 R 3451 0 R 3456 0 R 3459 0 R 3461 0 R 3463 0 R 3465 0 R 3469 0 R 3487 0 R 3490 0 R 3495 0 R 3501 0 R 3511 0 R 3516 0 R 3526 0 R 3537 0 R 3544 0 R 3549 0 R 3556 0 R 3561 0 R 3564 0 R 3572 0 R 3576 0 R 3581 0 R 3586 0 R 3599 0 R 3602 0 R 3608 0 R 3614 0 R 3619 0 R 3629 0 R 3638 0 R 3644 0 R 3653 0 R 3662 0 R 3667 0 R 3673 0 R 3679 0 R 3684 0 R 3686 0 R 3692 0 R 3699 0 R 3701 0 R 3709 0 R 3711 0 R 3717 0 R 3725 0 R 3731 0 R 3740 0 R 3746 0 R 3757 0 R 3766 0 R 3778 0 R 3788 0 R 3799 0 R 3803 0 R 3805 0 R 3809 0 R 3822 0 R 3828 0 R 3833 0 R 3839 0 R 3843 0 R 3846 0 R 3851 0 R 3853 0 R 3857 0 R 3859 0 R 3863 0 R 3866 0 R 3869 0 R 3877 0 R 3879 0 R 3885 0 R 3888 0 R 3894 0 R 3898 0 R 3901 0 R 3904 0 R 3907 0 R 3911 0 R 3914 0 R 3919 0 R 3924 0 R
  3927 0 R 3935 0 R 3939 0 R 3943 0 R 3945 0 R 3948 0 R 3951 0 R 3956 0 R 3963 0 R 3969 0 R 3973 0 R 3976 0 R 3983 0 R 3991 0 R 3995 0 R 3998 0 R 4000 0 R 4004 0 R 4009 0 R 4014 0 R 4017 0 R 4026 0 R 4031 0 R 4035 0 R 4038 0 R 4046 0 R 4051 0 R 4059 0 R 4064 0 R 4066 0 R 4072 0 R 4074 0 R 4079 0 R 4083 0 R 4088 0 R 4092 0 R 4104 0 R 4120 0 R 4135 0 R 4140 0 R 4143 0 R 4146 0 R 4152 0 R 4157 0 R 4159 0 R 4161 0 R 4163 0 R 4165 0 R 4167 0 R 4176 0 R 4180 0 R 4184 0 R 4188 0 R 4190 0 R 4197 0 R 4207 0 R 4214 0 R 4217 0 R 4220 0 R 4222 0 R 4229 0 R 4236 0 R 4247 0 R 4251 0 R 4254 0 R 4258 0 R 4261 0 R 4267 0 R 4270 0 R 4285 0 R 4290 0 R 4313 0 R 4317 0 R 4324 0 R 4335 0 R 4344 0 R 4347 0 R 4350 0 R 4353 0 R 4369 0 R 4374 0 R 4381 0 R 4384 0 R 4387 0 R 4394 0 R 4399 0 R 4403 0 R 4405 0 R 4411 0 R 4418 0 R 4426 0 R 4430 0 R 4435 0 R 4440 0 R 4446 0 R 4453 0 R 4460 0 R 4466 0 R 4474 0 R 4482 0 R 4486 0 R 4495 0 R 4503 0 R 4509 0 R]
+/Count 784
+/Kids [7 0 R 12 0 R 14 0 R 16 0 R 18 0 R 20 0 R 22 0 R 24 0 R 26 0 R 46 0 R 49 0 R 52 0 R 56 0 R 63 0 R 65 0 R 69 0 R 71 0 R 73 0 R 80 0 R 83 0 R 85 0 R 91 0 R 94 0 R 96 0 R 98 0 R 105 0 R 112 0 R 117 0 R 119 0 R 135 0 R 140 0 R 148 0 R 157 0 R 165 0 R 169 0 R 178 0 R 189 0 R 193 0 R 195 0 R 199 0 R 208 0 R 217 0 R 225 0 R 234 0 R 239 0 R 248 0 R 256 0 R 265 0 R 278 0 R 285 0 R 295 0 R 303 0 R 311 0 R 318 0 R 327 0 R 333 0 R 339 0 R 346 0 R 354 0 R 362 0 R 373 0 R 386 0 R 394 0 R 401 0 R 409 0 R 417 0 R 426 0 R 436 0 R 444 0 R 451 0 R 458 0 R 467 0 R 480 0 R 488 0 R 495 0 R 503 0 R 511 0 R 520 0 R 525 0 R 531 0 R 536 0 R 540 0 R 556 0 R 567 0 R 571 0 R 586 0 R 591 0 R 596 0 R 598 0 R 600 0 R 603 0 R 605 0 R 607 0 R 615 0 R 621 0 R 624 0 R 628 0 R 637 0 R 648 0 R 656 0 R 660 0 R 664 0 R 666 0 R 679 0 R 693 0 R 700 0 R 712 0 R 722 0 R 733 0 R 745 0 R 763 0 R 780 0 R 787 0 R 794 0 R 800 0 R 803 0 R 807 0 R 811 0 R 814 0 R 817 0 R 819 0 R 822 0 R 826 0 R 828 0 R 832 0 R 838 0 R 843 0 R 
 847 0 R 850 0 R 856 0 R 858 0 R 862 0 R 870 0 R 872 0 R 875 0 R 878 0 R 881 0 R 884 0 R 898 0 R 906 0 R 917 0 R 928 0 R 934 0 R 944 0 R 955 0 R 958 0 R 962 0 R 965 0 R 970 0 R 979 0 R 987 0 R 992 0 R 996 0 R 1001 0 R 1005 0 R 1007 0 R 1022 0 R 1033 0 R 1038 0 R 1045 0 R 1048 0 R 1056 0 R 1064 0 R 1069 0 R 1074 0 R 1079 0 R 1081 0 R 1083 0 R 1085 0 R 1095 0 R 1103 0 R 1107 0 R 1114 0 R 1121 0 R 1129 0 R 1133 0 R 1139 0 R 1144 0 R 1152 0 R 1156 0 R 1161 0 R 1163 0 R 1169 0 R 1177 0 R 1183 0 R 1190 0 R 1201 0 R 1205 0 R 1207 0 R 1209 0 R 1213 0 R 1216 0 R 1221 0 R 1224 0 R 1236 0 R 1240 0 R 1246 0 R 1254 0 R 1259 0 R 1263 0 R 1267 0 R 1269 0 R 1272 0 R 1275 0 R 1278 0 R 1282 0 R 1286 0 R 1290 0 R 1295 0 R 1299 0 R 1302 0 R 1304 0 R 1314 0 R 1316 0 R 1321 0 R 1334 0 R 1338 0 R 1344 0 R 1346 0 R 1357 0 R 1360 0 R 1366 0 R 1374 0 R 1377 0 R 1384 0 R 1391 0 R 1394 0 R 1396 0 R 1405 0 R 1407 0 R 1409 0 R 1412 0 R 1414 0 R 1416 0 R 1418 0 R 1420 0 R 1423 0 R 1427 0 R 1432 0 R 1434 0 R 1436 0
  R 1438 0 R 1443 0 R 1450 0 R 1456 0 R 1459 0 R 1461 0 R 1464 0 R 1468 0 R 1472 0 R 1475 0 R 1477 0 R 1479 0 R 1482 0 R 1487 0 R 1493 0 R 1501 0 R 1515 0 R 1529 0 R 1532 0 R 1537 0 R 1550 0 R 1555 0 R 1570 0 R 1578 0 R 1582 0 R 1591 0 R 1606 0 R 1618 0 R 1621 0 R 1635 0 R 1643 0 R 1648 0 R 1659 0 R 1664 0 R 1670 0 R 1676 0 R 1688 0 R 1691 0 R 1700 0 R 1703 0 R 1712 0 R 1717 0 R 1722 0 R 1726 0 R 1739 0 R 1741 0 R 1747 0 R 1753 0 R 1756 0 R 1764 0 R 1772 0 R 1776 0 R 1778 0 R 1780 0 R 1792 0 R 1798 0 R 1807 0 R 1814 0 R 1827 0 R 1833 0 R 1839 0 R 1850 0 R 1856 0 R 1861 0 R 1865 0 R 1869 0 R 1872 0 R 1877 0 R 1882 0 R 1888 0 R 1893 0 R 1897 0 R 1906 0 R 1912 0 R 1915 0 R 1919 0 R 1928 0 R 1935 0 R 1941 0 R 1948 0 R 1952 0 R 1955 0 R 1960 0 R 1965 0 R 1971 0 R 1973 0 R 1975 0 R 1978 0 R 1989 0 R 1992 0 R 1999 0 R 2007 0 R 2012 0 R 2015 0 R 2020 0 R 2022 0 R 2025 0 R 2030 0 R 2033 0 R 2035 0 R 2038 0 R 2041 0 R 2044 0 R 2054 0 R 2059 0 R 2064 0 R 2066 0 R 2074 0 R 2081 0 R 2088 0 R 2094
  0 R 2099 0 R 2101 0 R 2110 0 R 2120 0 R 2130 0 R 2136 0 R 2143 0 R 2145 0 R 2150 0 R 2152 0 R 2154 0 R 2158 0 R 2161 0 R 2164 0 R 2169 0 R 2173 0 R 2184 0 R 2187 0 R 2190 0 R 2194 0 R 2198 0 R 2201 0 R 2203 0 R 2208 0 R 2211 0 R 2213 0 R 2218 0 R 2228 0 R 2230 0 R 2232 0 R 2234 0 R 2236 0 R 2239 0 R 2241 0 R 2243 0 R 2246 0 R 2248 0 R 2250 0 R 2254 0 R 2259 0 R 2268 0 R 2270 0 R 2272 0 R 2278 0 R 2280 0 R 2285 0 R 2287 0 R 2289 0 R 2296 0 R 2301 0 R 2305 0 R 2310 0 R 2314 0 R 2316 0 R 2318 0 R 2322 0 R 2325 0 R 2327 0 R 2329 0 R 2333 0 R 2335 0 R 2338 0 R 2340 0 R 2342 0 R 2344 0 R 2351 0 R 2354 0 R 2359 0 R 2361 0 R 2363 0 R 2365 0 R 2367 0 R 2375 0 R 2386 0 R 2400 0 R 2411 0 R 2415 0 R 2420 0 R 2424 0 R 2427 0 R 2432 0 R 2438 0 R 2440 0 R 2443 0 R 2445 0 R 2447 0 R 2449 0 R 2454 0 R 2456 0 R 2469 0 R 2472 0 R 2480 0 R 2486 0 R 2498 0 R 2512 0 R 2525 0 R 2544 0 R 2546 0 R 2548 0 R 2552 0 R 2570 0 R 2576 0 R 2588 0 R 2592 0 R 2596 0 R 2605 0 R 2617 0 R 2622 0 R 2632 0 R 2645 0 R 26
 64 0 R 2673 0 R 2676 0 R 2685 0 R 2702 0 R 2709 0 R 2712 0 R 2717 0 R 2721 0 R 2724 0 R 2733 0 R 2742 0 R 2745 0 R 2747 0 R 2751 0 R 2765 0 R 2774 0 R 2779 0 R 2784 0 R 2787 0 R 2789 0 R 2791 0 R 2793 0 R 2795 0 R 2800 0 R 2813 0 R 2823 0 R 2831 0 R 2838 0 R 2843 0 R 2853 0 R 2860 0 R 2867 0 R 2869 0 R 2878 0 R 2886 0 R 2888 0 R 2892 0 R 2894 0 R 2905 0 R 2911 0 R 2913 0 R 2922 0 R 2925 0 R 2935 0 R 2939 0 R 2947 0 R 2955 0 R 2960 0 R 2964 0 R 2968 0 R 2970 0 R 2976 0 R 2980 0 R 2984 0 R 2990 0 R 2996 0 R 2999 0 R 3005 0 R 3009 0 R 3018 0 R 3023 0 R 3029 0 R 3039 0 R 3046 0 R 3053 0 R 3056 0 R 3059 0 R 3065 0 R 3071 0 R 3074 0 R 3079 0 R 3091 0 R 3099 0 R 3104 0 R 3106 0 R 3110 0 R 3115 0 R 3120 0 R 3127 0 R 3134 0 R 3141 0 R 3149 0 R 3155 0 R 3160 0 R 3164 0 R 3167 0 R 3170 0 R 3179 0 R 3184 0 R 3188 0 R 3196 0 R 3201 0 R 3204 0 R 3215 0 R 3220 0 R 3223 0 R 3225 0 R 3227 0 R 3237 0 R 3244 0 R 3248 0 R 3251 0 R 3258 0 R 3262 0 R 3265 0 R 3269 0 R 3274 0 R 3282 0 R 3287 0 R 3292 0 R 
 3297 0 R 3299 0 R 3302 0 R 3304 0 R 3308 0 R 3319 0 R 3321 0 R 3325 0 R 3328 0 R 3332 0 R 3335 0 R 3339 0 R 3341 0 R 3354 0 R 3359 0 R 3364 0 R 3370 0 R 3378 0 R 3380 0 R 3388 0 R 3406 0 R 3418 0 R 3426 0 R 3440 0 R 3444 0 R 3449 0 R 3451 0 R 3458 0 R 3461 0 R 3466 0 R 3469 0 R 3471 0 R 3473 0 R 3475 0 R 3479 0 R 3497 0 R 3500 0 R 3505 0 R 3511 0 R 3521 0 R 3526 0 R 3536 0 R 3547 0 R 3554 0 R 3559 0 R 3566 0 R 3571 0 R 3574 0 R 3582 0 R 3586 0 R 3591 0 R 3596 0 R 3609 0 R 3612 0 R 3618 0 R 3624 0 R 3629 0 R 3639 0 R 3648 0 R 3654 0 R 3663 0 R 3672 0 R 3677 0 R 3683 0 R 3689 0 R 3694 0 R 3696 0 R 3702 0 R 3709 0 R 3711 0 R 3719 0 R 3721 0 R 3727 0 R 3735 0 R 3741 0 R 3750 0 R 3756 0 R 3767 0 R 3776 0 R 3788 0 R 3798 0 R 3809 0 R 3813 0 R 3815 0 R 3819 0 R 3832 0 R 3838 0 R 3843 0 R 3849 0 R 3853 0 R 3856 0 R 3861 0 R 3863 0 R 3867 0 R 3869 0 R 3873 0 R 3876 0 R 3879 0 R 3887 0 R 3889 0 R 3895 0 R 3898 0 R 3904 0 R 3908 0 R 3911 0 R 3914 0 R 3917 0 R 3921 0 R 3924 0 R 3929 0 R 3934 0 
 R 3937 0 R 3945 0 R 3949 0 R 3953 0 R 3955 0 R 3958 0 R 3961 0 R 3966 0 R 3973 0 R 3979 0 R 3983 0 R 3986 0 R 3993 0 R 4001 0 R 4005 0 R 4008 0 R 4010 0 R 4014 0 R 4019 0 R 4024 0 R 4027 0 R 4036 0 R 4041 0 R 4045 0 R 4048 0 R 4056 0 R 4061 0 R 4069 0 R 4074 0 R 4076 0 R 4082 0 R 4084 0 R 4089 0 R 4093 0 R 4098 0 R 4102 0 R 4114 0 R 4130 0 R 4145 0 R 4150 0 R 4152 0 R 4154 0 R 4156 0 R 4158 0 R 4160 0 R 4169 0 R 4173 0 R 4177 0 R 4181 0 R 4183 0 R 4190 0 R 4200 0 R 4207 0 R 4210 0 R 4213 0 R 4215 0 R 4222 0 R 4229 0 R 4239 0 R 4243 0 R 4246 0 R 4250 0 R 4253 0 R 4259 0 R 4262 0 R 4277 0 R 4282 0 R 4305 0 R 4309 0 R 4316 0 R 4327 0 R 4336 0 R 4339 0 R 4342 0 R 4345 0 R 4361 0 R 4366 0 R 4373 0 R 4376 0 R 4379 0 R 4386 0 R 4391 0 R 4395 0 R 4397 0 R 4403 0 R 4410 0 R 4418 0 R 4422 0 R 4427 0 R 4432 0 R 4437 0 R 4444 0 R 4451 0 R 4458 0 R 4466 0 R 4474 0 R 4478 0 R 4487 0 R 4496 0 R 4502 0 R]
 >>
 endobj
 4 0 obj
@@ -187,11 +187,11 @@ endobj
 << /Type /Font
 /BaseFont /71be00+NotoSerif
 /Subtype /TrueType
-/FontDescriptor 5265 0 R
+/FontDescriptor 5255 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5267 0 R
-/ToUnicode 5266 0 R
+/Widths 5257 0 R
+/ToUnicode 5256 0 R
 >>
 endobj
 11 0 obj
@@ -1750,7 +1750,7 @@ endobj
 /F1.0 10 0 R
 >>
 >>
-/Annots [4510 0 R 4511 0 R 4512 0 R 4513 0 R 4514 0 R 4515 0 R 4516 0 R 4517 0 R 4518 0 R 4519 0 R 4520 0 R 4521 0 R 4522 0 R 4523 0 R 4524 0 R 4525 0 R 4526 0 R 4527 0 R 4528 0 R 4529 0 R 4530 0 R 4531 0 R 4532 0 R 4533 0 R 4534 0 R 4535 0 R 4536 0 R 4537 0 R 4538 0 R 4539 0 R 4540 0 R 4541 0 R 4542 0 R 4543 0 R 4544 0 R 4545 0 R 4546 0 R 4547 0 R 4548 0 R 4549 0 R 4550 0 R 4551 0 R 4552 0 R 4553 0 R 4554 0 R 4555 0 R 4556 0 R 4557 0 R 4558 0 R 4559 0 R 4560 0 R 4561 0 R 4562 0 R 4563 0 R 4564 0 R 4565 0 R 4566 0 R 4567 0 R 4568 0 R 4569 0 R 4570 0 R 4571 0 R 4572 0 R 4573 0 R 4574 0 R 4575 0 R 4576 0 R 4577 0 R 4578 0 R 4579 0 R 4580 0 R 4581 0 R 4582 0 R 4583 0 R 4584 0 R 4585 0 R]
+/Annots [4503 0 R 4504 0 R 4505 0 R 4506 0 R 4507 0 R 4508 0 R 4509 0 R 4510 0 R 4511 0 R 4512 0 R 4513 0 R 4514 0 R 4515 0 R 4516 0 R 4517 0 R 4518 0 R 4519 0 R 4520 0 R 4521 0 R 4522 0 R 4523 0 R 4524 0 R 4525 0 R 4526 0 R 4527 0 R 4528 0 R 4529 0 R 4530 0 R 4531 0 R 4532 0 R 4533 0 R 4534 0 R 4535 0 R 4536 0 R 4537 0 R 4538 0 R 4539 0 R 4540 0 R 4541 0 R 4542 0 R 4543 0 R 4544 0 R 4545 0 R 4546 0 R 4547 0 R 4548 0 R 4549 0 R 4550 0 R 4551 0 R 4552 0 R 4553 0 R 4554 0 R 4555 0 R 4556 0 R 4557 0 R 4558 0 R 4559 0 R 4560 0 R 4561 0 R 4562 0 R 4563 0 R 4564 0 R 4565 0 R 4566 0 R 4567 0 R 4568 0 R 4569 0 R 4570 0 R 4571 0 R 4572 0 R 4573 0 R 4574 0 R 4575 0 R 4576 0 R 4577 0 R 4578 0 R]
 >>
 endobj
 13 0 obj
@@ -3417,7 +3417,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4586 0 R 4587 0 R 4588 0 R 4589 0 R 4590 0 R 4591 0 R 4592 0 R 4593 0 R 4594 0 R 4595 0 R 4596 0 R 4597 0 R 4598 0 R 4599 0 R 4600 0 R 4601 0 R 4602 0 R 4603 0 R 4604 0 R 4605 0 R 4606 0 R 4607 0 R 4608 0 R 4609 0 R 4610 0 R 4611 0 R 4612 0 R 4613 0 R 4614 0 R 4615 0 R 4616 0 R 4617 0 R 4618 0 R 4619 0 R 4620 0 R 4621 0 R 4622 0 R 4623 0 R 4624 0 R 4625 0 R 4626 0 R 4627 0 R 4628 0 R 4629 0 R 4630 0 R 4631 0 R 4632 0 R 4633 0 R 4634 0 R 4635 0 R 4636 0 R 4637 0 R 4638 0 R 4639 0 R 4640 0 R 4641 0 R 4642 0 R 4643 0 R 4644 0 R 4645 0 R 4646 0 R 4647 0 R 4648 0 R 4649 0 R 4650 0 R 4651 0 R 4652 0 R 4653 0 R 4654 0 R 4655 0 R 4656 0 R 4657 0 R 4658 0 R 4659 0 R 4660 0 R 4661 0 R 4662 0 R 4663 0 R 4664 0 R 4665 0 R 4666 0 R 4667 0 R]
+/Annots [4579 0 R 4580 0 R 4581 0 R 4582 0 R 4583 0 R 4584 0 R 4585 0 R 4586 0 R 4587 0 R 4588 0 R 4589 0 R 4590 0 R 4591 0 R 4592 0 R 4593 0 R 4594 0 R 4595 0 R 4596 0 R 4597 0 R 4598 0 R 4599 0 R 4600 0 R 4601 0 R 4602 0 R 4603 0 R 4604 0 R 4605 0 R 4606 0 R 4607 0 R 4608 0 R 4609 0 R 4610 0 R 4611 0 R 4612 0 R 4613 0 R 4614 0 R 4615 0 R 4616 0 R 4617 0 R 4618 0 R 4619 0 R 4620 0 R 4621 0 R 4622 0 R 4623 0 R 4624 0 R 4625 0 R 4626 0 R 4627 0 R 4628 0 R 4629 0 R 4630 0 R 4631 0 R 4632 0 R 4633 0 R 4634 0 R 4635 0 R 4636 0 R 4637 0 R 4638 0 R 4639 0 R 4640 0 R 4641 0 R 4642 0 R 4643 0 R 4644 0 R 4645 0 R 4646 0 R 4647 0 R 4648 0 R 4649 0 R 4650 0 R 4651 0 R 4652 0 R 4653 0 R 4654 0 R 4655 0 R 4656 0 R 4657 0 R 4658 0 R 4659 0 R 4660 0 R]
 >>
 endobj
 15 0 obj
@@ -5084,7 +5084,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4668 0 R 4669 0 R 4670 0 R 4671 0 R 4672 0 R 4673 0 R 4674 0 R 4675 0 R 4676 0 R 4677 0 R 4678 0 R 4679 0 R 4680 0 R 4681 0 R 4682 0 R 4683 0 R 4684 0 R 4685 0 R 4686 0 R 4687 0 R 4688 0 R 4689 0 R 4690 0 R 4691 0 R 4692 0 R 4693 0 R 4694 0 R 4695 0 R 4696 0 R 4697 0 R 4698 0 R 4699 0 R 4700 0 R 4701 0 R 4702 0 R 4703 0 R 4704 0 R 4705 0 R 4706 0 R 4707 0 R 4708 0 R 4709 0 R 4710 0 R 4711 0 R 4712 0 R 4713 0 R 4714 0 R 4715 0 R 4716 0 R 4717 0 R 4718 0 R 4719 0 R 4720 0 R 4721 0 R 4722 0 R 4723 0 R 4724 0 R 4725 0 R 4726 0 R 4727 0 R 4728 0 R 4729 0 R 4730 0 R 4731 0 R 4732 0 R 4733 0 R 4734 0 R 4735 0 R 4736 0 R 4737 0 R 4738 0 R 4739 0 R 4740 0 R 4741 0 R 4742 0 R 4743 0 R 4744 0 R 4745 0 R 4746 0 R 4747 0 R 4748 0 R 4749 0 R]
+/Annots [4661 0 R 4662 0 R 4663 0 R 4664 0 R 4665 0 R 4666 0 R 4667 0 R 4668 0 R 4669 0 R 4670 0 R 4671 0 R 4672 0 R 4673 0 R 4674 0 R 4675 0 R 4676 0 R 4677 0 R 4678 0 R 4679 0 R 4680 0 R 4681 0 R 4682 0 R 4683 0 R 4684 0 R 4685 0 R 4686 0 R 4687 0 R 4688 0 R 4689 0 R 4690 0 R 4691 0 R 4692 0 R 4693 0 R 4694 0 R 4695 0 R 4696 0 R 4697 0 R 4698 0 R 4699 0 R 4700 0 R 4701 0 R 4702 0 R 4703 0 R 4704 0 R 4705 0 R 4706 0 R 4707 0 R 4708 0 R 4709 0 R 4710 0 R 4711 0 R 4712 0 R 4713 0 R 4714 0 R 4715 0 R 4716 0 R 4717 0 R 4718 0 R 4719 0 R 4720 0 R 4721 0 R 4722 0 R 4723 0 R 4724 0 R 4725 0 R 4726 0 R 4727 0 R 4728 0 R 4729 0 R 4730 0 R 4731 0 R 4732 0 R 4733 0 R 4734 0 R 4735 0 R 4736 0 R 4737 0 R 4738 0 R 4739 0 R 4740 0 R 4741 0 R 4742 0 R]
 >>
 endobj
 17 0 obj
@@ -6751,7 +6751,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4750 0 R 4751 0 R 4752 0 R 4753 0 R 4754 0 R 4755 0 R 4756 0 R 4757 0 R 4758 0 R 4759 0 R 4760 0 R 4761 0 R 4762 0 R 4763 0 R 4764 0 R 4765 0 R 4766 0 R 4767 0 R 4768 0 R 4769 0 R 4770 0 R 4771 0 R 4772 0 R 4773 0 R 4774 0 R 4775 0 R 4776 0 R 4777 0 R 4778 0 R 4779 0 R 4780 0 R 4781 0 R 4782 0 R 4783 0 R 4784 0 R 4785 0 R 4786 0 R 4787 0 R 4788 0 R 4789 0 R 4790 0 R 4791 0 R 4792 0 R 4793 0 R 4794 0 R 4795 0 R 4796 0 R 4797 0 R 4798 0 R 4799 0 R 4800 0 R 4801 0 R 4802 0 R 4803 0 R 4804 0 R 4805 0 R 4806 0 R 4807 0 R 4808 0 R 4809 0 R 4810 0 R 4811 0 R 4812 0 R 4813 0 R 4814 0 R 4815 0 R 4816 0 R 4817 0 R 4818 0 R 4819 0 R 4820 0 R 4821 0 R 4822 0 R 4823 0 R 4824 0 R 4825 0 R 4826 0 R 4827 0 R 4828 0 R 4829 0 R 4830 0 R 4831 0 R]
+/Annots [4743 0 R 4744 0 R 4745 0 R 4746 0 R 4747 0 R 4748 0 R 4749 0 R 4750 0 R 4751 0 R 4752 0 R 4753 0 R 4754 0 R 4755 0 R 4756 0 R 4757 0 R 4758 0 R 4759 0 R 4760 0 R 4761 0 R 4762 0 R 4763 0 R 4764 0 R 4765 0 R 4766 0 R 4767 0 R 4768 0 R 4769 0 R 4770 0 R 4771 0 R 4772 0 R 4773 0 R 4774 0 R 4775 0 R 4776 0 R 4777 0 R 4778 0 R 4779 0 R 4780 0 R 4781 0 R 4782 0 R 4783 0 R 4784 0 R 4785 0 R 4786 0 R 4787 0 R 4788 0 R 4789 0 R 4790 0 R 4791 0 R 4792 0 R 4793 0 R 4794 0 R 4795 0 R 4796 0 R 4797 0 R 4798 0 R 4799 0 R 4800 0 R 4801 0 R 4802 0 R 4803 0 R 4804 0 R 4805 0 R 4806 0 R 4807 0 R 4808 0 R 4809 0 R 4810 0 R 4811 0 R 4812 0 R 4813 0 R 4814 0 R 4815 0 R 4816 0 R 4817 0 R 4818 0 R 4819 0 R 4820 0 R 4821 0 R 4822 0 R 4823 0 R 4824 0 R]
 >>
 endobj
 19 0 obj
@@ -7236,7 +7236,7 @@ ET
 BT
 529.4315 591.396 Td
 /F1.0 10.5 Tf
-<353431> Tj
+<353432> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7276,7 +7276,7 @@ ET
 BT
 529.4315 572.916 Td
 /F1.0 10.5 Tf
-<353432> Tj
+<353433> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8429,11 +8429,11 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4832 0 R 4833 0 R 4834 0 R 4835 0 R 4836 0 R 4837 0 R 4838 0 R 4839 0 R 4840 0 R 4841 0 R 4842 0 R 4843 0 R 4844 0 R 4845 0 R 4846 0 R 4847 0 R 4848 0 R 4849 0 R 4850 0 R 4851 0 R 4852 0 R 4853 0 R 4854 0 R 4855 0 R 4856 0 R 4857 0 R 4858 0 R 4859 0 R 4860 0 R 4861 0 R 4862 0 R 4863 0 R 4864 0 R 4865 0 R 4866 0 R 4867 0 R 4868 0 R 4869 0 R 4870 0 R 4871 0 R 4872 0 R 4873 0 R 4874 0 R 4875 0 R 4876 0 R 4877 0 R 4878 0 R 4879 0 R 4880 0 R 4881 0 R 4882 0 R 4883 0 R 4884 0 R 4885 0 R 4886 0 R 4887 0 R 4888 0 R 4889 0 R 4890 0 R 4891 0 R 4892 0 R 4893 0 R 4894 0 R 4895 0 R 4896 0 R 4897 0 R 4898 0 R 4899 0 R 4900 0 R 4901 0 R 4902 0 R 4903 0 R 4904 0 R 4905 0 R 4906 0 R 4907 0 R 4908 0 R 4909 0 R 4910 0 R 4911 0 R 4912 0 R 4913 0 R 4914 0 R 4915 0 R]
+/Annots [4825 0 R 4826 0 R 4827 0 R 4828 0 R 4829 0 R 4830 0 R 4831 0 R 4832 0 R 4833 0 R 4834 0 R 4835 0 R 4836 0 R 4837 0 R 4838 0 R 4839 0 R 4840 0 R 4841 0 R 4842 0 R 4843 0 R 4844 0 R 4845 0 R 4846 0 R 4847 0 R 4848 0 R 4849 0 R 4850 0 R 4851 0 R 4852 0 R 4853 0 R 4854 0 R 4855 0 R 4856 0 R 4857 0 R 4858 0 R 4859 0 R 4860 0 R 4861 0 R 4862 0 R 4863 0 R 4864 0 R 4865 0 R 4866 0 R 4867 0 R 4868 0 R 4869 0 R 4870 0 R 4871 0 R 4872 0 R 4873 0 R 4874 0 R 4875 0 R 4876 0 R 4877 0 R 4878 0 R 4879 0 R 4880 0 R 4881 0 R 4882 0 R 4883 0 R 4884 0 R 4885 0 R 4886 0 R 4887 0 R 4888 0 R 4889 0 R 4890 0 R 4891 0 R 4892 0 R 4893 0 R 4894 0 R 4895 0 R 4896 0 R 4897 0 R 4898 0 R 4899 0 R 4900 0 R 4901 0 R 4902 0 R 4903 0 R 4904 0 R 4905 0 R 4906 0 R 4907 0 R 4908 0 R]
 >>
 endobj
 21 0 obj
-<< /Length 29493
+<< /Length 29509
 >>
 stream
 q
@@ -9656,7 +9656,7 @@ ET
 BT
 60.24 240.276 Td
 /F1.0 10.5 Tf
-<417070656e64697820433a206862636b20496e204465707468> Tj
+[<417070656e64697820433a2041> 20.0195 <636365737320436f6e74726f6c204d6174726978>] TJ
 ET
 
 0.0 0.0 0.0 SCN
@@ -9665,9 +9665,9 @@ ET
 0.6627 0.6627 0.6627 SCN
 
 BT
-197.3926 240.276 Td
+234.8041 240.276 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9696,7 +9696,7 @@ ET
 BT
 60.24 221.796 Td
 /F1.0 10.5 Tf
-[<417070656e64697820443a2041> 20.0195 <636365737320436f6e74726f6c204d6174726978>] TJ
+<417070656e64697820443a20436f6d7072657373696f6e20616e64204461746120426c6f636b20456e636f64696e6720496e204842617365> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9705,9 +9705,9 @@ ET
 0.6627 0.6627 0.6627 SCN
 
 BT
-234.8041 221.796 Td
+368.4166 221.796 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9725,7 +9725,7 @@ ET
 BT
 529.4315 221.796 Td
 /F1.0 10.5 Tf
-<373139> Tj
+<373231> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9736,7 +9736,7 @@ ET
 BT
 60.24 203.316 Td
 /F1.0 10.5 Tf
-<417070656e64697820453a20436f6d7072657373696f6e20616e64204461746120426c6f636b20456e636f64696e6720496e204842617365> Tj
+<417070656e64697820453a2053514c206f766572204842617365> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9745,9 +9745,9 @@ ET
 0.6627 0.6627 0.6627 SCN
 
 BT
-368.4166 203.316 Td
+208.0816 203.316 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9765,7 +9765,7 @@ ET
 BT
 529.4315 203.316 Td
 /F1.0 10.5 Tf
-<373235> Tj
+<373332> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9776,7 +9776,7 @@ ET
 BT
 60.24 184.836 Td
 /F1.0 10.5 Tf
-<417070656e64697820463a2053514c206f766572204842617365> Tj
+[<417070656e64697820463a2059> 29.7852 <435342>] TJ
 ET
 
 0.0 0.0 0.0 SCN
@@ -9785,9 +9785,9 @@ ET
 0.6627 0.6627 0.6627 SCN
 
 BT
-208.0816 184.836 Td
+149.2921 184.836 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9805,7 +9805,7 @@ ET
 BT
 529.4315 184.836 Td
 /F1.0 10.5 Tf
-<373336> Tj
+<373333> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9816,7 +9816,7 @@ ET
 BT
 60.24 166.356 Td
 /F1.0 10.5 Tf
-[<417070656e64697820473a2059> 29.7852 <435342>] TJ
+<417070656e64697820473a204846696c6520666f726d6174> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9825,9 +9825,9 @@ ET
 0.6627 0.6627 0.6627 SCN
 
 BT
-154.6366 166.356 Td
+192.0481 166.356 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9845,7 +9845,7 @@ ET
 BT
 529.4315 166.356 Td
 /F1.0 10.5 Tf
-<373337> Tj
+<373334> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9856,7 +9856,7 @@ ET
 BT
 60.24 147.876 Td
 /F1.0 10.5 Tf
-<417070656e64697820483a204846696c6520666f726d6174> Tj
+<417070656e64697820483a204f7468657220496e666f726d6174696f6e2041626f7574204842617365> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9865,9 +9865,9 @@ ET
 0.6627 0.6627 0.6627 SCN
 
 BT
-192.0481 147.876 Td
+288.2491 147.876 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9885,7 +9885,7 @@ ET
 BT
 529.4315 147.876 Td
 /F1.0 10.5 Tf
-<373338> Tj
+<373433> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9896,7 +9896,7 @@ ET
 BT
 60.24 129.396 Td
 /F1.0 10.5 Tf
-<417070656e64697820493a204f7468657220496e666f726d6174696f6e2041626f7574204842617365> Tj
+<417070656e64697820493a20484261736520486973746f7279> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9905,9 +9905,9 @@ ET
 0.6627 0.6627 0.6627 SCN
 
 BT
-282.9046 129.396 Td
+197.3926 129.396 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9925,7 +9925,7 @@ ET
 BT
 529.4315 129.396 Td
 /F1.0 10.5 Tf
-<373437> Tj
+<373434> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9936,7 +9936,7 @@ ET
 BT
 60.24 110.916 Td
 /F1.0 10.5 Tf
-<417070656e646978204a3a20484261736520486973746f7279> Tj
+[<417070656e646978204a3a20484261736520616e64207468652041706163686520536f6674776172652046> 40.0391 <6f756e646174696f6e>] TJ
 ET
 
 0.0 0.0 0.0 SCN
@@ -9945,9 +9945,9 @@ ET
 0.6627 0.6627 0.6627 SCN
 
 BT
-197.3926 110.916 Td
+341.6941 110.916 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9965,7 +9965,7 @@ ET
 BT
 529.4315 110.916 Td
 /F1.0 10.5 Tf
-<373438> Tj
+<373435> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9976,7 +9976,7 @@ ET
 BT
 60.24 92.436 Td
 /F1.0 10.5 Tf
-[<417070656e646978204b3a20484261736520616e64207468652041706163686520536f6674776172652046> 40.0391 <6f756e646174696f6e>] TJ
+<417070656e646978204b3a20417061636865204842617365204f726361> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9985,9 +9985,9 @@ ET
 0.6627 0.6627 0.6627 SCN
 
 BT
-347.0386 92.436 Td
+224.1151 92.436 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -10005,7 +10005,7 @@ ET
 BT
 529.4315 92.436 Td
 /F1.0 10.5 Tf
-<373439> Tj
+<373436> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -10016,7 +10016,7 @@ ET
 BT
 60.24 73.956 Td
 /F1.0 10.5 Tf
-<417070656e646978204c3a20417061636865204842617365204f726361> Tj
+[<417070656e646978204c3a20456e61626c696e67204461707065722d6c696b> 20.0195 <65205472> 20.0195 <6163696e6720696e204842617365>] TJ
 ET
 
 0.0 0.0 0.0 SCN
@@ -10025,9 +10025,9 @@ ET
 0.6627 0.6627 0.6627 SCN
 
 BT
-224.1151 73.956 Td
+320.3161 73.956 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -10045,7 +10045,7 @@ ET
 BT
 529.4315 73.956 Td
 /F1.0 10.5 Tf
-<373530> Tj
+<373437> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -10056,7 +10056,7 @@ ET
 BT
 60.24 55.476 Td
 /F1.0 10.5 Tf
-[<417070656e646978204d3a20456e61626c696e67204461707065722d6c696b> 20.0195 <65205472> 20.0195 <6163696e6720696e204842617365>] TJ
+<3230302e20436c69656e74204d6f64696669636174696f6e73> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -10065,9 +10065,9 @@ ET
 0.6627 0.6627 0.6627 SCN
 
 BT
-325.6606 55.476 Td
+186.7036 55.476 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -10085,7 +10085,7 @@ ET
 BT
 529.4315 55.476 Td
 /F1.0 10.5 Tf
-<373531> Tj
+<373439> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -10107,11 +10107,11 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4916 0 R 4917 0 R 4918 0 R 4919 0 R 4920 0 R 4921 0 R 4922 0 R 4923 0 R 4924 0 R 4925 0 R 4926 0 R 4927 0 R 4928 0 R 4929 0 R 4930 0 R 4931 0 R 4932 0 R 4933 0 R 4934 0 R 4935 0 R 4936 0 R 4937 0 R 4938 0 R 4939 0 R 4940 0 R 4941 0 R 4942 0 R 4943 0 R 4944 0 R 4945 0 R 4946 0 R 4947 0 R 4948 0 R 4949 0 R 4950 0 R 4951 0 R 4952 0 R 4953 0 R 4954 0 R 4955 0 R 4956 0 R 4957 0 R 4958 0 R 4959 0 R 4960 0 R 4961 0 R 4962 0 R 4963 0 R 4964 0 R 4965 0 R 4966 0 R 4967 0 R 4968 0 R 4969 0 R 4970 0 R 4971 0 R 4972 0 R 4973 0 R 4974 0 R 4975 0 R 4976 0 R 4977 0 R 4978 0 R 4979 0 R 4980 0 R 4981 0 R 4982 0 R 4983 0 R 4984 0 R 4985 0 R 4986 0 R 4987 0 R 4988 0 R 4989 0 R 4990 0 R 4991 0 R 4992 0 R 4993 0 R 4994 0 R 4995 0 R 4996 0 R 4997 0 R 4998 0 R 4999 0 R]
+/Annots [4909 0 R 4910 0 R 4911 0 R 4912 0 R 4913 0 R 4914 0 R 4915 0 R 4916 0 R 4917 0 R 4918 0 R 4919 0 R 4920 0 R 4921 0 R 4922 0 R 4923 0 R 4924 0 R 4925 0 R 4926 0 R 4927 0 R 4928 0 R 4929 0 R 4930 0 R 4931 0 R 4932 0 R 4933 0 R 4934 0 R 4935 0 R 4936 0 R 4937 0 R 4938 0 R 4939 0 R 4940 0 R 4941 0 R 4942 0 R 4943 0 R 4944 0 R 4945 0 R 4946 0 R 4947 0 R 4948 0 R 4949 0 R 4950 0 R 4951 0 R 4952 0 R 4953 0 R 4954 0 R 4955 0 R 4956 0 R 4957 0 R 4958 0 R 4959 0 R 4960 0 R 4961 0 R 4962 0 R 4963 0 R 4964 0 R 4965 0 R 4966 0 R 4967 0 R 4968 0 R 4969 0 R 4970 0 R 4971 0 R 4972 0 R 4973 0 R 4974 0 R 4975 0 R 4976 0 R 4977 0 R 4978 0 R 4979 0 R 4980 0 R 4981 0 R 4982 0 R 4983 0 R 4984 0 R 4985 0 R 4986 0 R 4987 0 R 4988 0 R 4989 0 R 4990 0 R 4991 0 R 4992 0 R]
 >>
 endobj
 23 0 obj
-<< /Length 3496
+<< /Length 2782
 >>
 stream
 q
@@ -10123,7 +10123,7 @@ q
 BT
 60.24 794.676 Td
 /F1.0 10.5 Tf
-<3230302e20436c69656e74204d6f64696669636174696f6e73> Tj
+[<3230312e205472> 20.0195 <6163696e672066726f6d204842617365205368656c6c>] TJ
 ET
 
 0.0 0.0 0.0 SCN
@@ -10132,9 +10132,9 @@ ET
 0.6627 0.6627 0.6627 SCN
 
 BT
-186.7036 794.676 Td
+213.4261 794.676 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -10152,7 +10152,7 @@ ET
 BT
 529.4315 794.676 Td
 /F1.0 10.5 Tf
-<373533> Tj
+<373530> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -10163,7 +10163,7 @@ ET
 BT
 60.24 776.196 Td
 /F1.0 10.5 Tf
-[<3230312e205472> 20.0195 <6163696e672066726f6d204842617365205368656c6c>] TJ
+<417070656e646978204d3a20302e3935205250432053706563696669636174696f6e> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -10172,9 +10172,9 @@ ET
 0.6627 0.6627 0.6627 SCN
 
 BT
-213.4261 776.196 Td
+240.1486 776.196 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -10192,7 +10192,7 @@ ET
 BT
 529.4315 776.196 Td
 /F1.0 10.5 Tf
-<373534> Tj
+<373531> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -10203,7 +10203,7 @@ ET
 BT
 60.24 757.716 Td
 /F1.0 10.5 Tf
-<417070656e646978204e3a20302e3935205250432053706563696669636174696f6e> Tj
+[<417070656e646978204e3a204b6e6f776e20496e636f6d7061746962696c697469657320416d6f6e672048426173652056> 60.0586 <657273696f6e73>] TJ
 ET
 
 0.0 0.0 0.0 SCN
@@ -10212,9 +10212,9 @@ ET
 0.6627 0.6627 0.6627 SCN
 
 BT
-240.1486 757.716 Td
+368.4166 757.716 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -10243,46 +10243,6 @@ ET
 BT
 60.24 739.236 Td
 /F1.0 10.5 Tf
-[<417070656e646978204f3a204b6e6f776e20496e636f6d7061746962696c697469657320416d6f6e672048426173652056> 60.0586 <657273696f6e73>] TJ
-ET
-
-0.0 0.0 0.0 SCN
-0.0 0.0 0.0 scn
-0.6627 0.6627 0.6627 scn
-0.6627 0.6627 0.6627 SCN
-
-BT
-368.4166 739.236 Td
-/F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
-ET
-
-0.0 0.0 0.0 SCN
-0.0 0.0 0.0 scn
-
-BT
-528.7516 739.236 Td
-/F1.0 2.625 Tf
-<ca> Tj
-ET
-
-0.2 0.2 0.2 scn
-0.2 0.2 0.2 SCN
-
-BT
-529.4315 739.236 Td
-/F1.0 10.5 Tf
-<373539> Tj
-ET
-
-0.0 0.0 0.0 SCN
-0.0 0.0 0.0 scn
-0.2 0.2 0.2 scn
-0.2 0.2 0.2 SCN
-
-BT
-60.24 720.756 Td
-/F1.0 10.5 Tf
 <3230322e20484261736520322e3020496e636f6d70617469626c65204368616e676573> Tj
 ET
 
@@ -10292,7 +10252,7 @@ ET
 0.6627 0.6627 0.6627 SCN
 
 BT
-245.4931 720.756 Td
+245.4931 739.236 Td
 /F1.0 10.5 Tf
 <2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
@@ -10301,7 +10261,7 @@ ET
 0.0 0.0 0.0 scn
 
 BT
-528.7516 720.756 Td
+528.7516 739.236 Td
 /F1.0 2.625 Tf
 <ca> Tj
 ET
@@ -10310,9 +10270,9 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-529.4315 720.756 Td
+529.4315 739.236 Td
 /F1.0 10.5 Tf
-<373630> Tj
+<373536> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -10334,7 +10294,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [5000 0 R 5001 0 R 5002 0 R 5003 0 R 5004 0 R 5005 0 R 5006 0 R 5007 0 R 5008 0 R 5009 0 R]
+/Annots [4993 0 R 4994 0 R 4995 0 R 4996 0 R 4997 0 R 4998 0 R 4999 0 R 5000 0 R]
 >>
 endobj
 25 0 obj
@@ -11146,7 +11106,7 @@ endobj
 /F4.0 37 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [32 0 R 33 0 R 34 0 R 36 0 R 38 0 R 39 0 R 41 0 R 42 0 R 43 0 R]
@@ -11161,7 +11121,7 @@ endobj
 >>
 endobj
 29 0 obj
-<< /Kids [651 0 R 3751 0 R 1979 0 R 652 0 R 3682 0 R 1190 0 R 2609 0 R 3986 0 R]
+<< /Kids [651 0 R 3759 0 R 1982 0 R 652 0 R 3692 0 R 1193 0 R 2612 0 R 3996 0 R]
 >>
 endobj
 30 0 obj
@@ -11171,11 +11131,11 @@ endobj
 << /Type /Font
 /BaseFont /309344+NotoSerif-Bold
 /Subtype /TrueType
-/FontDescriptor 5269 0 R
+/FontDescriptor 5259 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5271 0 R
-/ToUnicode 5270 0 R
+/Widths 5261 0 R
+/ToUnicode 5260 0 R
 >>
 endobj
 32 0 obj
@@ -11215,11 +11175,11 @@ endobj
 << /Type /Font
 /BaseFont /fbe45d+NotoSerif-Italic
 /Subtype /TrueType
-/FontDescriptor 5273 0 R
+/FontDescriptor 5263 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5275 0 R
-/ToUnicode 5274 0 R
+/Widths 5265 0 R
+/ToUnicode 5264 0 R
 >>
 endobj
 36 0 obj
@@ -11237,11 +11197,11 @@ endobj
 << /Type /Font
 /BaseFont /c7d210+mplus1mn-regular
 /Subtype /TrueType
-/FontDescriptor 5277 0 R
+/FontDescriptor 5267 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5279 0 R
-/ToUnicode 5278 0 R
+/Widths 5269 0 R
+/ToUnicode 5268 0 R
 >>
 endobj
 38 0 obj
@@ -11267,11 +11227,11 @@ endobj
 << /Type /Font
 /BaseFont /6bc580+NotoSerif
 /Subtype /TrueType
-/FontDescriptor 5281 0 R
+/FontDescriptor 5271 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5283 0 R
-/ToUnicode 5282 0 R
+/Widths 5273 0 R
+/ToUnicode 5272 0 R
 >>
 endobj
 41 0 obj
@@ -11705,7 +11665,7 @@ endobj
 /F5.1 47 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -11714,11 +11674,11 @@ endobj
 << /Type /Font
 /BaseFont /26ec65+FontAwesome
 /Subtype /TrueType
-/FontDescriptor 5285 0 R
+/FontDescriptor 5275 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5287 0 R
-/ToUnicode 5286 0 R
+/Widths 5277 0 R
+/ToUnicode 5276 0 R
 >>
 endobj
 48 0 obj
@@ -11776,7 +11736,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 >>
@@ -11861,7 +11821,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 /Annots [54 0 R]
@@ -13434,7 +13394,7 @@ endobj
 /F1.1 40 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [59 0 R 61 0 R]
@@ -14554,7 +14514,7 @@ endobj
 /F1.0 10 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -15433,7 +15393,7 @@ endobj
 /F3.0 35 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [66 0 R]
@@ -16223,7 +16183,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -16942,7 +16902,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 >>
@@ -17818,7 +17778,7 @@ endobj
 /F2.0 31 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 /Annots [75 0 R 76 0 R 77 0 R 78 0 R]
@@ -18808,7 +18768,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [81 0 R]
@@ -19731,7 +19691,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -21242,7 +21202,7 @@ endobj
 /F4.0 37 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [86 0 R 88 0 R]
@@ -22590,7 +22550,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 /Annots [92 0 R]
@@ -23664,7 +23624,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 >>
@@ -24387,7 +24347,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -25026,7 +24986,7 @@ endobj
 /F4.0 37 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [99 0 R 100 0 R 101 0 R 103 0 R]
@@ -25270,7 +25230,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 /Annots [107 0 R 108 0 R 109 0 R 110 0 R]
@@ -26142,7 +26102,7 @@ endobj
 /F4.0 37 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [114 0 R 115 0 R]
@@ -26422,7 +26382,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -27902,7 +27862,7 @@ endobj
 /F5.1 47 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [122 0 R 123 0 R 124 0 R 125 0 R 126 0 R 127 0 R 128 0 R 130 0 R 131 0 R 132 0 R 133 0 R]
@@ -28942,7 +28902,7 @@ endobj
 /F2.0 31 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 /Annots [136 0 R 138 0 R]
@@ -29695,7 +29655,7 @@ endobj
 /F2.0 31 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [141 0 R 143 0 R 144 0 R 145 0 R 146 0 R]
@@ -33665,7 +33625,7 @@ endobj
 /F2.0 31 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 /Annots [149 0 R 150 0 R 151 0 R 152 0 R 153 0 R 154 0 R 155 0 R]
@@ -34622,7 +34582,7 @@ endobj
 /F2.0 31 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [158 0 R 159 0 R 163 0 R]
@@ -34654,13 +34614,13 @@ endobj
 [157 0 R /XYZ 0 436.437 null]
 endobj
 161 0 obj
-<< /Limits [(__anchor-top) (adding.new.node)]
-/Names [(__anchor-top) 27 0 R (__indexterm-2002) 3647 0 R (__indexterm-2004) 3649 0 R (__indexterm-2006) 3651 0 R (__indexterm-2008) 3654 0 R (accesscontrolclient-changes) 4507 0 R (acid) 963 0 R (acl) 3449 0 R (add-metric-name-and-function-to-hadoop-compat-interface) 3749 0 R (add-the-implementation-to-both-hadoop-1-and-hadoop-2-compat-modules) 3752 0 R (add.metrics) 3747 0 R (adding-a-new-chapter-to-the-hbase-reference-guide) 4089 0 R (adding.new.node) 3190 0 R]
+<< /Limits [(HBCK2) (adding.new.node)]
+/Names [(HBCK2) 3083 0 R (__anchor-top) 27 0 R (__indexterm-2002) 3657 0 R (__indexterm-2004) 3659 0 R (__indexterm-2006) 3661 0 R (__indexterm-2008) 3664 0 R (accesscontrolclient-changes) 4500 0 R (acid) 966 0 R (acl) 3459 0 R (add-metric-name-and-function-to-hadoop-compat-interface) 3761 0 R (add-the-implementation-to-both-hadoop-1-and-hadoop-2-compat-modules) 3762 0 R (add.metrics) 3757 0 R (adding-a-new-chapter-to-the-hbase-reference-guide) 4099 0 R (adding.new.node) 3202 0 R]
 >>
 endobj
 162 0 obj
 << /Limits [(io.storefile.bloom.block.size) (jdk-version-requirements)]
-/Names [(io.storefile.bloom.block.size) 365 0 R (ipc) 4415 0 R (irbrc) 826 0 R (irc) 3481 0 R (isolate-system-tables) 3443 0 R (java) 121 0 R (java-2) 1982 0 R (java-3) 1987 0 R (java.client.config) 526 0 R (jdk-issues) 2988 0 R (jdk-version-requirements) 58 0 R]
+/Names [(io.storefile.bloom.block.size) 365 0 R (ipc) 4407 0 R (irbrc) 829 0 R (irc) 3491 0 R (isolate-system-tables) 3453 0 R (java) 121 0 R (java-2) 1985 0 R (java-3) 1990 0 R (java.client.config) 526 0 R (jdk-issues) 2991 0 R (jdk-version-requirements) 58 0 R]
 >>
 endobj
 163 0 obj
@@ -34782,7 +34742,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 /Annots [166 0 R]
@@ -35916,7 +35876,7 @@ endobj
 /F4.0 37 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [171 0 R 172 0 R 174 0 R]
@@ -36716,7 +36676,7 @@ endobj
 /F5.1 47 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 /Annots [179 0 R 180 0 R 181 0 R 183 0 R 184 0 R 186 0 R 187 0 R]
@@ -38188,7 +38148,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [190 0 R 191 0 R]
@@ -38613,7 +38573,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -39269,7 +39229,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [197 0 R]
@@ -40036,7 +39996,7 @@ endobj
 /F4.0 37 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 /Annots [202 0 R]
@@ -40567,7 +40527,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 >>
@@ -40583,7 +40543,7 @@ endobj
 endobj
 212 0 obj
 << /Limits [(getshortmidpointkey-an-optimization-for-data-index-block) (handling-of-errors-during-log-splitting)]
-/Names [(getshortmidpointkey-an-optimization-for-data-index-block) 4268 0 R (getting.involved) 3470 0 R (getting_started) 50 0 R (git.best.practices) 3753 0 R (git.patch.flow) 3815 0 R (goals) 4361 0 R (guide-for-hbase-committers) 3780 0 R (guidelines-for-deploying-a-coprocessor) 2447 0 R (guidelines-for-reporting-effective-issues) 3488 0 R (hadoop) 142 0 R (hadoop.native.lib) 4186 0 R (hadoop.policy.file) 391 0 R (handling-of-errors-during-log-splitting) 1720 0 R]
+/Names [(getshortmidpointkey-an-optimization-for-data-index-block) 4260 0 R (getting.involved) 3480 0 R (getting_started) 50 0 R (git.best.practices) 3763 0 R (git.patch.flow) 3825 0 R (goals) 4353 0 R (guide-for-hbase-committers) 3790 0 R (guidelines-for-deploying-a-coprocessor) 2450 0 R (guidelines-for-reporting-effective-issues) 3498 0 R (hadoop) 142 0 R (hadoop.native.lib) 4179 0 R (hadoop.policy.file) 391 0 R (handling-of-errors-during-log-splitting) 1723 0 R]
 >>
 endobj
 213 0 obj
@@ -41113,7 +41073,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -41635,7 +41595,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 >>
@@ -42270,7 +42230,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -42779,7 +42739,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 >>
@@ -43310,7 +43270,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -43889,7 +43849,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [258 0 R 259 0 R]
@@ -44456,7 +44416,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 /Annots [267 0 R 268 0 R 270 0 R 271 0 R]
@@ -44520,7 +44480,7 @@ endobj
 endobj
 274 0 obj
 << /Limits [(hbase.table.lock.enable) (hbase.tmp.dir)]
-/Names [(hbase.table.lock.enable) 418 0 R (hbase.table.max.rowsize) 419 0 R (hbase.tags) 1382 0 R (hbase.tests) 3630 0 R (hbase.tests.categories) 3674 0 R (hbase.tests.cluster) 3676 0 R (hbase.tests.example.code) 3677 0 R (hbase.tests.rules) 3670 0 R (hbase.tests.sleeps) 3675 0 R (hbase.tests.writing) 3669 0 R (hbase.thrift.maxQueuedRequests) 423 0 R (hbase.thrift.maxWorkerThreads) 422 0 R (hbase.thrift.minWorkerThreads) 421 0 R (hbase.tmp.dir) 204 0 R]
+/Names [(hbase.table.lock.enable) 418 0 R (hbase.table.max.rowsize) 419 0 R (hbase.tags) 1385 0 R (hbase.tests) 3640 0 R (hbase.tests.categories) 3684 0 R (hbase.tests.cluster) 3686 0 R (hbase.tests.example.code) 3687 0 R (hbase.tests.rules) 3680 0 R (hbase.tests.sleeps) 3685 0 R (hbase.tests.writing) 3679 0 R (hbase.thrift.maxQueuedRequests) 423 0 R (hbase.thrift.maxWorkerThreads) 422 0 R (hbase.thrift.minWorkerThreads) 421 0 R (hbase.tmp.dir) 204 0 R]
 >>
 endobj
 275 0 obj
@@ -45076,7 +45036,7 @@ endobj
 /F1.0 10 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 >>
@@ -45671,7 +45631,7 @@ endobj
 /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 /Annots [291 0 R 292 0 R]
@@ -45691,7 +45651,7 @@ endobj
 endobj
 290 0 obj
 << /Limits [(hbase.cluster.distributed) (hbase.data.umask.enable)]
-/Names [(hbase.cluster.distributed) 206 0 R (hbase.column.max.version) 445 0 R (hbase.commit.msg.format) 4032 0 R (hbase.coordinated.state.manager.class) 485 0 R (hbase.coprocessor.abortonerror) 407 0 R (hbase.coprocessor.enabled) 402 0 R (hbase.coprocessor.master.classes) 406 0 R (hbase.coprocessor.region.classes) 405 0 R (hbase.coprocessor.user.enabled) 404 0 R (hbase.data.umask) 433 0 R (hbase.data.umask.enable) 432 0 R]
+/Names [(hbase.cluster.distributed) 206 0 R (hbase.column.max.version) 445 0 R (hbase.commit.msg.format) 4042 0 R (hbase.coordinated.state.manager.class) 485 0 R (hbase.coprocessor.abortonerror) 407 0 R (hbase.coprocessor.enabled) 402 0 R (hbase.coprocessor.master.classes) 406 0 R (hbase.coprocessor.region.classes) 405 0 R (hbase.coprocessor.user.enabled) 404 0 R (hbase.data.umask) 433 0 R (hbase.data.umask.enable) 432 0 R]
 >>
 endobj
 291 0 obj
@@ -46237,7 +46197,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 >>
@@ -46728,7 +46688,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -47300,7 +47260,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 >>
@@ -47846,7 +47806,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -48423,7 +48383,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 >>
@@ -49043,7 +49003,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -49590,7 +49550,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 >>
@@ -50113,7 +50073,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -50673,7 +50633,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [357 0 R]
@@ -51208,7 +51168,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 /Annots [363 0 R]
@@ -51233,7 +51193,7 @@ endobj
 endobj
 366 0 obj
 << /Limits [(quota) (regions.arch)]
-/Names [(quota) 3303 0 R (read-api-and-usage) 1983 0 R (read-hbase-shell-commands-from-a-command-file) 812 0 R (reading-filtering-and-sending-edits) 3283 0 R (reading_cells_with_labels) 1436 0 R (recommended.configurations.hdfs) 554 0 R (recommended_configurations) 549 0 R (recommended_configurations.zk) 550 0 R (references) 3920 0 R (region-overlap-repairs) 4144 0 R (region-replication-for-meta-table-s-region) 1960 0 R (region-scanner-changes) 4487 0 R (region-transition-rpc-and-rs-heartbeat-can-arrive-at-same-time-on-master) 3953 0 R (regioncoprocessorenvironment-getregion-abstract-hregion) 4412 0 R (regioncoprocessorhost-postappend-append-append-result-result-void) 4413 0 R (regioncoprocessorhost-prestorefilereaderopen-filesystem-fs-path-p-fsdatainputstreamwrapper-in-long-size-cacheconfig-cacheconf-reference-r-storefile-reader) 4414 0 R (regionobserver) 4400 0 R (regions.arch) 1754 0 R]
+/Names [(quota) 3313 0 R (read-api-and-usage) 1986 0 R (read-hbase-shell-commands-from-a-command-file) 815 0 R (reading-filtering-and-sending-edits) 3293 0 R (reading_cells_with_labels) 1439 0 R (recommended.configurations.hdfs) 554 0 R (recommended_configurations) 549 0 R (recommended_configurations.zk) 550 0 R (references) 3930 0 R (region-replication-for-meta-table-s-region) 1963 0 R (region-scanner-changes) 4479 0 R (region-transition-rpc-and-rs-heartbeat-can-arrive-at-same-time-on-master) 3963 0 R (regioncoprocessorenvironment-getregion-abstract-hregion) 4404 0 R (regioncoprocessorhost-postappend-append-append-result-result-void) 4405 0 R (regioncoprocessorhost-prestorefilereaderopen-filesystem-fs-path-p-fsdatainputstreamwrapper-in-long-size-cacheconfig-cacheconf-reference-r-storefile-reader) 4406 0 R (regionobserver) 4392 0 R (regions.arch) 1757 0 R]
 >>
 endobj
 367 0 obj
@@ -51872,7 +51832,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [377 0 R 378 0 R 380 0 R 383 0 R 384 0 R]
@@ -51883,7 +51843,7 @@ endobj
 endobj
 375 0 obj
 << /Limits [(hbase.regionserver.thrift.compact) (hbase.rootdir.perms)]
-/Names [(hbase.regionserver.thrift.compact) 428 0 R (hbase.regionserver.thrift.framed) 424 0 R (hbase.regionserver.thrift.framed.max_frame_size_in_mb) 427 0 R (hbase.release.announcement) 3609 0 R (hbase.replication.management) 3253 0 R (hbase.replication.rpc.codec) 496 0 R (hbase.replication.source.maxthreads) 497 0 R (hbase.rest-csrf.browser-useragents-regex) 478 0 R (hbase.rest.csrf.enabled) 477 0 R (hbase.rest.filter.classes) 468 0 R (hbase.rest.port) 410 0 R (hbase.rest.readonly) 411 0 R (hbase.rest.support.proxyuser) 414 0 R (hbase.rest.threads.max) 412 0 R (hbase.rest.threads.min) 413 0 R (hbase.rolling.restart) 643 0 R (hbase.rolling.upgrade) 639 0 R (hbase.rootdir) 205 0 R (hbase.rootdir.perms) 429 0 R]
+/Names [(hbase.regionserver.thrift.compact) 428 0 R (hbase.regionserver.thrift.framed) 424 0 R (hbase.regionserver.thrift.framed.max_frame_size_in_mb) 427 0 R (hbase.release.announcement) 3619 0 R (hbase.replication.management) 3263 0 R (hbase.replication.rpc.codec) 496 0 R (hbase.replication.source.maxthreads) 497 0 R (hbase.rest-csrf.browser-useragents-regex) 478 0 R (hbase.rest.csrf.enabled) 477 0 R (hbase.rest.filter.classes) 468 0 R (hbase.rest.port) 410 0 R (hbase.rest.readonly) 411 0 R (hbase.rest.support.proxyuser) 414 0 R (hbase.rest.threads.max) 412 0 R (hbase.rest.threads.min) 413 0 R (hbase.rolling.restart) 643 0 R (hbase.rolling.upgrade) 639 0 R (hbase.rootdir) 205 0 R (hbase.rootdir.perms) 429 0 R]
 >>
 endobj
 376 0 obj
@@ -52462,7 +52422,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -52996,7 +52956,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 >>
@@ -53546,7 +53506,7 @@ endobj
 /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -54066,7 +54026,7 @@ endobj
 /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 >>
@@ -54599,7 +54559,7 @@ endobj
 /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -54612,7 +54572,7 @@ endobj
 endobj
 420 0 obj
 << /Limits [(hbase.zookeeper.property.maxClientCnxns) (hbase_supported_tested_definitions)]
-/Names [(hbase.zookeeper.property.maxClientCnxns) 279 0 R (hbase.zookeeper.property.syncLimit) 273 0 R (hbase.zookeeper.quorum) 209 0 R (hbase_apis) 2201 0 R (hbase_default_configurations) 203 0 R (hbase_env) 538 0 R (hbase_metrics) 3195 0 R (hbase_mob) 1997 0 R (hbase_site) 534 0 R (hbase_supported_tested_definitions) 44 0 R]
+/Names [(hbase.zookeeper.property.maxClientCnxns) 279 0 R (hbase.zookeeper.property.syncLimit) 273 0 R (hbase.zookeeper.quorum) 209 0 R (hbase_apis) 2204 0 R (hbase_default_configurations) 203 0 R (hbase_env) 538 0 R (hbase_metrics) 3205 0 R (hbase_mob) 2000 0 R (hbase_site) 534 0 R (hbase_supported_tested_definitions) 44 0 R]
 >>
 endobj
 421 0 obj
@@ -55087,7 +55047,7 @@ endobj
 /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 >>
@@ -55103,7 +55063,7 @@ endobj
 endobj
 430 0 obj
 << /Limits [(hbase.rpc) (hbase.secure.spnego.ui)]
-/Names [(hbase.rpc) 4354 0 R (hbase.rpc.rows.warning.threshold) 517 0 R (hbase.rpc.shortoperation.timeout) 374 0 R (hbase.rpc.timeout) 368 0 R (hbase.rs.cacheblocksonwrite) 367 0 R (hbase.secure.bulkload) 1462 0 R (hbase.secure.configuration) 1302 0 R (hbase.secure.enable) 1466 0 R (hbase.secure.simpleconfiguration) 1344 0 R (hbase.secure.spnego.ui) 1297 0 R]
+/Names [(hbase.rpc) 4346 0 R (hbase.rpc.rows.warning.threshold) 517 0 R (hbase.rpc.shortoperation.timeout) 374 0 R (hbase.rpc.timeout) 368 0 R (hbase.rs.cacheblocksonwrite) 367 0 R (hbase.secure.bulkload) 1465 0 R (hbase.secure.configuration) 1305 0 R (hbase.secure.enable) 1469 0 R (hbase.secure.simpleconfiguration) 1347 0 R (hbase.secure.spnego.ui) 1300 0 R]
 >>
 endobj
 431 0 obj
@@ -55625,7 +55585,7 @@ endobj
 /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -56170,7 +56130,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 >>
@@ -56720,7 +56680,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -57208,7 +57168,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 >>
@@ -57803,7 +57763,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 /Annots [471 0 R 472 0 R 475 0 R 476 0 R]
@@ -57817,7 +57777,7 @@ endobj
 endobj
 470 0 obj
 << /Limits [(hbase.limitetprivate.api) (hbase.master.logcleaner.plugins)]
-/Names [(hbase.limitetprivate.api) 634 0 R (hbase.local.dir) 211 0 R (hbase.mapreduce.classpath) 1199 0 R (hbase.master.balancer.maxRitPercent) 301 0 R (hbase.master.fileSplitTimeout) 223 0 R (hbase.master.hfilecleaner.plugins) 221 0 R (hbase.master.info.bindAddress) 215 0 R (hbase.master.info.port) 214 0 R (hbase.master.infoserver.redirect) 222 0 R (hbase.master.kerberos.principal) 388 0 R (hbase.master.keytab.file) 387 0 R (hbase.master.loadbalance.bytable) 473 0 R (hbase.master.loadbalancer.class) 469 0 R (hbase.master.logcleaner.plugins) 218 0 R]
+/Names [(hbase.limitetprivate.api) 634 0 R (hbase.local.dir) 211 0 R (hbase.mapreduce.classpath) 1202 0 R (hbase.master.balancer.maxRitPercent) 301 0 R (hbase.master.fileSplitTimeout) 223 0 R (hbase.master.hfilecleaner.plugins) 221 0 R (hbase.master.info.bindAddress) 215 0 R (hbase.master.info.port) 214 0 R (hbase.master.infoserver.redirect) 222 0 R (hbase.master.kerberos.principal) 388 0 R (hbase.master.keytab.file) 387 0 R (hbase.master.loadbalance.bytable) 473 0 R (hbase.master.loadbalancer.class) 469 0 R (hbase.master.logcleaner.plugins) 218 0 R]
 >>
 endobj
 471 0 obj
@@ -58456,7 +58416,7 @@ endobj
 /F4.0 37 0 R
 /F6.0 481 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 >>
@@ -58465,11 +58425,11 @@ endobj
 << /Type /Font
 /BaseFont /03fbbc+mplus1mn-bold
 /Subtype /TrueType
-/FontDescriptor 5289 0 R
+/FontDescriptor 5279 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5291 0 R
-/ToUnicode 5290 0 R
+/Widths 5281 0 R
+/ToUnicode 5280 0 R
 >>
 endobj
 482 0 obj
@@ -58486,7 +58446,7 @@ endobj
 endobj
 486 0 obj
 << /Limits [(hbase.defaults.for.version.skip) (hbase.hregion.percolumnfamilyflush.size.lower.bound.min)]
-/Names [(hbase.defaults.for.version.skip) 415 0 R (hbase.dfs.client.read.shortcircuit.buffer.size) 448 0 R (hbase.display.keys) 399 0 R (hbase.dynamic.jars.dir) 464 0 R (hbase.encryption.server) 1449 0 R (hbase.env.sh) 521 0 R (hbase.fix.version.in.jira) 4020 0 R (hbase.history) 4314 0 R (hbase.hregion.majorcompaction) 320 0 R (hbase.hregion.majorcompaction.jitter) 321 0 R (hbase.hregion.max.filesize) 319 0 R (hbase.hregion.memstore.block.multiplier) 315 0 R (hbase.hregion.memstore.flush.size) 312 0 R (hbase.hregion.memstore.mslab.enabled) 316 0 R (hbase.hregion.percolumnfamilyflush.size.lower.bound.min) 313 0 R]
+/Names [(hbase.defaults.for.version.skip) 415 0 R (hbase.dfs.client.read.shortcircuit.buffer.size) 448 0 R (hbase.display.keys) 399 0 R (hbase.dynamic.jars.dir) 464 0 R (hbase.encryption.server) 1452 0 R (hbase.env.sh) 521 0 R (hbase.fix.version.in.jira) 4030 0 R (hbase.history) 4306 0 R (hbase.hregion.majorcompaction) 320 0 R (hbase.hregion.majorcompaction.jitter) 321 0 R (hbase.hregion.max.filesize) 319 0 R (hbase.hregion.memstore.block.multiplier) 315 0 R (hbase.hregion.memstore.flush.size) 312 0 R (hbase.hregion.memstore.mslab.enabled) 316 0 R (hbase.hregion.percolumnfamilyflush.size.lower.bound.min) 313 0 R]
 >>
 endobj
 487 0 obj
@@ -59038,7 +58998,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -59565,7 +59525,7 @@ endobj
 /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 >>
@@ -60110,7 +60070,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -60129,7 +60089,7 @@ endobj
 endobj
 508 0 obj
 << /Limits [(hbase.moduletest.run) (hbase.procedure.store.wal.max.retries.before.roll)]
-/Names [(hbase.moduletest.run) 3639 0 R (hbase.moduletest.shell) 3634 0 R (hbase.moduletests) 3632 0 R (hbase.normalizer.min.region.count) 306 0 R (hbase.normalizer.period) 305 0 R (hbase.offpeak.end.hour) 342 0 R (hbase.offpeak.start.hour) 341 0 R (hbase.org) 3620 0 R (hbase.org.site.contributing) 3622 0 R (hbase.org.site.publishing) 3625 0 R (hbase.private.api) 635 0 R (hbase.procedure.master.classes) 484 0 R (hbase.procedure.regionserver.classes) 483 0 R (hbase.procedure.store.wal.max.retries.before.roll) 1613 0 R]
+/Names [(hbase.moduletest.run) 3649 0 R (hbase.moduletest.shell) 3644 0 R (hbase.moduletests) 3642 0 R (hbase.normalizer.min.region.count) 306 0 R (hbase.normalizer.period) 305 0 R (hbase.offpeak.end.hour) 342 0 R (hbase.offpeak.start.hour) 341 0 R (hbase.org) 3630 0 R (hbase.org.site.contributing) 3632 0 R (hbase.org.site.publishing) 3635 0 R (hbase.private.api) 635 0 R (hbase.procedure.master.classes) 484 0 R (hbase.procedure.regionserver.classes) 483 0 R (hbase.procedure.store.wal.max.retries.before.roll) 1616 0 R]
 >>
 endobj
 509 0 obj
@@ -60576,7 +60536,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 >>
@@ -61397,7 +61357,7 @@ endobj
 /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -62735,7 +62695,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [527 0 R 528 0 R]
@@ -64206,7 +64166,7 @@ endobj
 /F3.0 35 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -64730,7 +64690,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 >>
@@ -65383,7 +65343,7 @@ endobj
 /F4.0 37 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 /Annots [543 0 R 544 0 R 546 0 R 547 0 R 548 0 R 553 0 R]
@@ -66138,7 +66098,7 @@ endobj
 /F2.0 31 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [559 0 R 562 0 R 565 0 R]
@@ -66177,7 +66137,7 @@ endobj
 endobj
 564 0 obj
 << /Limits [(configuration) (coprocessor-implementation-overview)]
-/Names [(configuration) 106 0 R (configuration-2) 3224 0 R (configuration-3) 4107 0 R (configuration-files) 113 0 R (configuration-from-scratch) 4005 0 R (configuration-properties) 1965 0 R (configure-mob-compaction-mergeable-threshold) 2006 0 R (configure-mob-compaction-policy) 2005 0 R (configuring-columns-for-mob) 2002 0 R (configuring-server-wide-behavior-of-bloom-filters) 2571 0 R (configuring-the-rest-server-and-client) 2220 0 R (confirm) 196 0 R (connection-setup) 4366 0 R (constraints) 1101 0 R (contributing-to-documentation-or-other-strings) 4043 0 R (coprocessor-api-changes) 4390 0 R (coprocessor-implementation-overview) 2376 0 R]
+/Names [(configuration) 106 0 R (configuration-2) 3234 0 R (configuration-3) 4117 0 R (configuration-files) 113 0 R (configuration-from-scratch) 4015 0 R (configuration-properties) 1968 0 R (configure-mob-compaction-mergeable-threshold) 2009 0 R (configure-mob-compaction-policy) 2008 0 R (configuring-columns-for-mob) 2005 0 R (configuring-server-wide-behavior-of-bloom-filters) 2574 0 R (configuring-the-rest-server-and-client) 2223 0 R (confirm) 196 0 R (connection-setup) 4358 0 R (constraints) 1104 0 R (contributing-to-documentation-or-other-strings) 4053 0 R (coprocessor-api-changes) 4382 0 R (coprocessor-implementation-overview) 2379 0 R]
 >>
 endobj
 565 0 obj
@@ -67039,7 +66999,7 @@ endobj
 /F4.0 37 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 /Annots [569 0 R]
@@ -67853,7 +67813,7 @@ endobj
 /F5.1 47 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [573 0 R 574 0 R 575 0 R 579 0 R 582 0 R 583 0 R 584 0 R]
@@ -68595,7 +68555,7 @@ endobj
 /F1.1 40 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 /Annots [588 0 R 589 0 R]
@@ -70027,7 +69987,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [593 0 R 594 0 R]
@@ -70804,7 +70764,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -71505,7 +71465,7 @@ endobj
 /F3.0 35 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 >>
@@ -72836,7 +72796,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -74331,7 +74291,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 >>
@@ -74653,7 +74613,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -74851,7 +74811,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [609 0 R 610 0 R 611 0 R 612 0 R 613 0 R]
@@ -75605,7 +75565,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 /Annots [618 0 R]
@@ -76522,7 +76482,7 @@ endobj
 /F3.0 35 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [622 0 R]
@@ -78837,7 +78797,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 /Annots [625 0 R 626 0 R]
@@ -79870,7 +79830,7 @@ endobj
 /F1.1 40 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [630 0 R 631 0 R 632 0 R]
@@ -80534,7 +80494,7 @@ endobj
 /F2.0 31 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 /Annots [640 0 R 641 0 R 642 0 R 644 0 R 645 0 R 646 0 R]
@@ -81329,7 +81289,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [654 0 R]
@@ -81340,17 +81300,17 @@ endobj
 endobj
 650 0 obj
 << /Limits [(standalone.over.hdfs) (storefile-refresher)]
-/Names [(standalone.over.hdfs) 175 0 R (standalone_dist) 170 0 R (starting-and-stopping-the-rest-server) 2219 0 R (statemachineprocedure) 3916 0 R (static-loading) 2410 0 R (static-unloading) 2413 0 R (store) 1805 0 R (store-file-ttl) 1959 0 R (store.file.dir) 1821 0 R (store.memstore) 1806 0 R (storefile-changes) 4489 0 R (storefile-refresher) 1955 0 R]
+/Names [(standalone.over.hdfs) 175 0 R (standalone_dist) 170 0 R (starting-and-stopping-the-rest-server) 2222 0 R (statemachineprocedure) 3926 0 R (static-loading) 2413 0 R (static-unloading) 2416 0 R (store) 1808 0 R (store-file-ttl) 1962 0 R (store.file.dir) 1824 0 R (store.memstore) 1809 0 R (storefile-changes) 4481 0 R (storefile-refresher) 1958 0 R]
 >>
 endobj
 651 0 obj
-<< /Limits [(__anchor-top) (build.thrift)]
-/Kids [161 0 R 3750 0 R 4449 0 R 1923 0 R 1486 0 R 3703 0 R 1664 0 R 4263 0 R 2153 0 R 2111 0 R 2068 0 R 2102 0 R]
+<< /Limits [(HBCK2) (build.thrift)]
+/Kids [161 0 R 3758 0 R 4440 0 R 1926 0 R 1489 0 R 3713 0 R 1667 0 R 4255 0 R 2156 0 R 2114 0 R 2071 0 R 2105 0 R]
 >>
 endobj
 652 0 obj
 << /Limits [(hbase.moduletest.run) (hbase.zookeeper.property.initLimit)]
-/Kids [508 0 R 3623 0 R 382 0 R 245 0 R 375 0 R 430 0 R 4355 0 R 462 0 R 274 0 R 3671 0 R 3642 0 R]
+/Kids [508 0 R 3633 0 R 382 0 R 245 0 R 375 0 R 430 0 R 4347 0 R 462 0 R 274 0 R 3681 0 R 3652 0 R]
 >>
 endobj
 653 0 obj
@@ -82014,7 +81974,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
@@ -82729,7 +82689,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
 /Annots [662 0 R]
@@ -83196,13 +83156,13 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 5011 0 R
+/XObject << /Stamp2 5002 0 R
 >>
 >>
 >>
 endobj
 665 0 obj
-<< /Length 11055
+<< /Length 12124
 >>
 stream
 q
@@ -83520,12 +83480,12 @@ ET
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
-1.8818 Tw
+0.2928 Tw
 
 BT
 48.24 372.944 Td
 /F1.0 10.5 Tf
-<4173206f6620484261736520322e302c204842434b206973206120726561642d6f6e6c7920746f6f6c20746861742063616e207265706f72742074686520737461747573206f6620736f6d65206e6f6e2d7075626c69632073797374656d> Tj
+<4173206f6620484261736520322e302c204842434b2028412e4b2e4120> Tj
 ET
 
 
@@ -83535,12 +83495,12 @@ ET
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
-1.6552 Tw
+0.2928 Tw
 
 BT
-48.24 357.164 Td
-/F1.0 10.5 Tf
-[<696e7465726e616c732e2059> 69.8242 <6f752073686f756c64206e6f742072656c79206f6e2074686520666f726d6174206e6f7220636f6e74656e74206f6620746865736520696e7465726e616c7320746f2072656d61696e20636f6e73697374656e74>] TJ
+196.7971 372.944 Td
+/F3.0 10.5 Tf
+<4842434b31> Tj
 ET
 
 
@@ -83550,34 +83510,12 @@ ET
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
-BT
-48.24 341.384 Td
-/F1.0 10.5 Tf
-<6163726f73732048426173652072656c65617365732e> Tj
-ET
-
-0.0 0.0 0.0 SCN
-0.0 0.0 0.0 scn
-0.2 0.2 0.2 scn
-0.2 0.2 0.2 SCN
-
-BT
-48.24 314.2022 Td
-/F3.0 9.975 Tf
-[<436f6e6669677572> 20.0195 <6174696f6e2073657474696e6773206e6f206c6f6e67657220696e20484261736520322e302b>] TJ
-ET
-
-0.0 0.0 0.0 SCN
-0.0 0.0 0.0 scn
-0.2 0.2 0.2 scn
-0.2 0.2 0.2 SCN
-
-1.427 Tw
+0.2928 Tw
 
 BT
-48.24 294.613 Td
+231.7621 372.944 Td
 /F1.0 10.5 Tf
-[<54686520666f6c6c6f77696e6720636f6e6669677572> 20.0195 <6174696f6e2073657474696e677320617265206e6f206c6f6e676572206170706c696361626c65206f7220617661696c61626c652e2046> 40.0391 <6f722064657461696c732c20706c6561736520736565>] TJ
+<206f7220> Tj
 ET
 
 
@@ -83587,53 +83525,42 @@ ET
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
-BT
-48.24 278.833 Td
-/F1.0 10.5 Tf
-<7468652064657461696c65642072656c65617365206e6f7465732e> Tj
-ET
-
-0.0 0.0 0.0 SCN
-0.0 0.0 0.0 scn
-
--0.5 Tc
-0.2 0.2 0.2 scn
-0.2 0.2 0.2 SCN
+0.2928 Tw
 
 BT
-56.8805 251.053 Td
-/F1.0 10.5 Tf
-<a5> Tj
+248.7906 372.944 Td
+/F3.0 10.5 Tf
+<6862636b31> Tj
 ET
 
+
+0.0 Tw
 0.0 0.0 0.0 SCN
 0.0 0.0 0.0 scn
-
-0.0 Tc
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
-3.1996 Tw
+0.2928 Tw
 
 BT
-66.24 251.053 Td
+277.9176 372.944 Td
 /F1.0 10.5 Tf
-[<68626173652e636f6e6669672e726561642e7a6f6f6b> 20.0195 <65657065722e636f6e666967202873656520>] TJ
+<29206973206120726561642d6f6e6c7920746f6f6c20746861742063616e207265706f72742074686520737461747573206f6620736f6d65> Tj
 ET
 
 
 0.0 Tw
 0.0 0.0 0.0 SCN
 0.0 0.0 0.0 scn
-0.2588 0.5451 0.7922 scn
-0.2588 0.5451 0.7922 SCN
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
 
-3.1996 Tw
+1.5432 Tw
 
 BT
-273.8085 251.053 Td
+48.24 357.164 Td
 /F1.0 10.5 Tf
-[<5a6f6f4b> 20.0195 <656570657220636f6e66696773206e6f206c6f6e67657220726561642066726f6d207a6f6f2e636667>] TJ
+[<6e6f6e2d7075626c69632073797374656d20696e7465726e616c732e2059> 69.8242 <6f752073686f756c64206e6f742072656c79206f6e2074686520666f726d6174206e6f7220636f6e74656e74206f6620746865736520696e7465726e616c7320746f>] TJ
 ET
 
 
@@ -83643,129 +83570,113 @@ ET
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
-3.1996 Tw
-
 BT
-526.2424 251.053 Td
+48.24 341.384 Td
 /F1.0 10.5 Tf
-<20666f72> Tj
+<72656d61696e20636f6e73697374656e74206163726f73732048426173652072656c65617365732e> Tj
 ET
 
-
-0.0 Tw
 0.0 0.0 0.0 SCN
 0.0 0.0 0.0 scn
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
 BT
-66.24 235.273 Td
+48.24 313.604 Td
 /F1.0 10.5 Tf
-[<6d696772> 20.0195 <6174696f6e2064657461696c7329>] TJ
+[<54> 29.7852 <6f20726561642061626f7574204842434bd573207265706c6163656d656e742c2073656520>] TJ
 ET
 
 0.0 0.0 0.0 SCN
 0.0 0.0 0.0 scn
-
--0.5 Tc
-0.2 0.2 0.2 scn
-0.2 0.2 0.2 SCN
+0.2588 0.5451 0.7922 scn
+0.2588 0.5451 0.7922 SCN
 
 BT
-56.8805 213.493 Td
+246.2303 313.604 Td
 /F1.0 10.5 Tf
-<a5> Tj
+<484261736520> Tj
 ET
 
 0.0 0.0 0.0 SCN
 0.0 0.0 0.0 scn
-
-0.0 Tc
-0.2 0.2 0.2 scn
-0.2 0.2 0.2 SCN
+0.6941 0.1294 0.2745 scn
+0.6941 0.1294 0.2745 SCN
 
 BT
-66.24 213.493 Td
-/F1.0 10.5 Tf
-[<68626173652e7a6f6f6b> 20.0195 <65657065722e7573654d756c746920284842617365206e6f7720616c7761> 20.0195 <79732075736573205a4bd573206d756c74692066756e6374696f6e616c69747929>] TJ
+280.3763 313.604 Td
+/F4.0 10.5 Tf
+<4842434b32> Tj
 ET
 
 0.0 0.0 0.0 SCN
 0.0 0.0 0.0 scn
-
--0.5 Tc
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
 BT
-56.8805 191.713 Td
+306.6263 313.604 Td
 /F1.0 10.5 Tf
-<a5> Tj
+<20696e20> Tj
 ET
 
 0.0 0.0 0.0 SCN
 0.0 0.0 0.0 scn
-
-0.0 Tc
-0.2 0.2 0.2 scn
-0.2 0.2 0.2 SCN
+0.2588 0.5451 0.7922 scn
+0.2588 0.5451 0.7922 SCN
 
 BT
-66.24 191.713 Td
+322.1873 313.604 Td
 /F1.0 10.5 Tf
-<68626173652e7270632e636c69656e742e746872656164732e6d6178> Tj
+[<417061636865204842617365204f706572> 20.0195 <6174696f6e616c204d616e6167656d656e74>] TJ
 ET
 
 0.0 0.0 0.0 SCN
 0.0 0.0 0.0 scn
-
--0.5 Tc
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
 BT
-56.8805 169.933 Td
+524.1441 313.604 Td
 /F1.0 10.5 Tf
-<a5> Tj
+<2e> Tj
 ET
 
 0.0 0.0 0.0 SCN
 0.0 0.0 0.0 scn
-
-0.0 Tc
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
 BT
-66.24 169.933 Td
-/F1.0 10.5 Tf
-[<68626173652e7270632e636c69656e742e6e61746976657472> 20.0195 <616e73706f7274>] TJ
+48.24 286.4222 Td
+/F3.0 9.975 Tf
+[<436f6e6669677572> 20.0195 <6174696f6e2073657474696e6773206e6f206c6f6e67657220696e20484261736520322e302b>] TJ
 ET
 
 0.0 0.0 0.0 SCN
 0.0 0.0 0.0 scn
-
--0.5 Tc
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
+1.427 Tw
+
 BT
-56.8805 148.153 Td
+48.24 266.833 Td
 /F1.0 10.5 Tf
-<a5> Tj
+[<54686520666f6c6c6f77696e6720636f6e6669677572> 20.0195 <6174696f6e2073657474696e677320617265206e6f206c6f6e676572206170706c696361626c65206f7220617661696c61626c652e2046> 40.0391 <6f722064657461696c732c20706c6561736520736565>] TJ
 ET
 
+
+0.0 Tw
 0.0 0.0 0.0 SCN
 0.0 0.0 0.0 scn
-
-0.0 Tc
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
 BT
-66.24 148.153 Td
+48.24 251.053 Td
 /F1.0 10.5 Tf
-<68626173652e66732e746d702e646972> Tj
+<7468652064657461696c65642072656c65617365206e6f7465732e> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -83776,7 +83687,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-56.8805 126.373 Td
+56.8805 223.273 Td
 /F1.0 10.5 Tf
 <a5> Tj
 ET
@@ -83788,62 +83699,55 @@ ET
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
-BT
-66.24 126.373 Td
-/F1.0 10.5 Tf
-[<68626173652e6275636b> 20.0195 <657463616368652e636f6d62696e656463616368652e656e61626c6564>] TJ
-ET
-
-0.0 0.0 0.0 SCN
-0.0 0.0 0.0 scn
-
--0.5 Tc
-0.2 0.2 0.2 scn
-0.2 0.2 0.2 SCN
+3.1996 Tw
 
 BT
-56.8805 104.593 Td
+66.24 223.273 Td
 /F1.0 10.5 Tf
-<a5> Tj
+[<68626173652e636f6e6669672e726561642e7a6f6f6b> 20.0195 <65657065722e636f6e666967202873656520>] TJ
 ET
 
+
+0.0 Tw
 0.0 0.0 0.0 SCN
 0.0 0.0 0.0 scn
+0.2588 0.5451 0.7922 scn
+0.2588 0.5451 0.7922 SCN
 
-0.0 Tc
-0.2 0.2 0.2 scn
-0.2 0.2 0.2 SCN
+3.1996 Tw
 
 BT
-66.24 104.593 Td
+273.8085 223.273 Td
 /F1.0 10.5 Tf
-[<68626173652e6275636b> 20.0195 <657463616368652e696f656e67696e65206e6f206c6f6e67657220737570706f72747320746865202768656170272076616c75652e>] TJ
+[<5a6f6f4b> 20.0195 <656570657220636f6e66696773206e6f206c6f6e67657220726561642066726f6d207a6f6f2e636667>] TJ
 ET
 
+
+0.0 Tw
 0.0 0.0 0.0 SCN
 0.0 0.0 0.0 scn
-
--0.5 Tc
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
+3.1996 Tw
+
 BT
-56.8805 82.813 Td
+526.2424 223.273 Td
 /F1.0 10.5 Tf
-<a5> Tj
+<20666f72> Tj
 ET
 
+
+0.0 Tw
 0.0 0.0 0.0 SCN
 0.0 0.0 0.0 scn
-
-0.0 Tc
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
 BT
-66.24 82.813 Td
+66.24 207.493 Td
 /F1.0 10.5 Tf
-<68626173652e62756c6b6c6f61642e73746167696e672e646972> Tj
+[<6d696772> 20.0195 <6174696f6e2064657461696c7329>] TJ
 ET
 
 0.0 0.0 0.0 SCN
@@ -83854,7 +83758,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-56.8805 61.033 Td
+56.8805 185.713 Td
 /F1.0 10.5 Tf
 <a5> Tj
 ET
@@ -83866,16 +83770,168 @@ ET
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
-6.2035 Tw
+BT
+66.24 185.713 Td
+/F1.0 10.5 Tf
+[<68626173652e7a6f6f6b> 20.0195 <65657065722e7573654d756c746920284842617365206e6f7720616c7761> 20.0195 <79732075736573205a4bd573206d756c74692066756e6374696f6e616c69747929>] TJ
+ET
+
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+
+-0.5 Tc
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
 
 BT
-66.24 61.033 Td
+56.8805 163.933 Td
 /F1.0 10.5 Tf
-<68626173652e62616c616e6365722e7461626c65734f6e4d6173746572207761736ed5742072656d6f7665642c207374726963746c7920737065616b696e672c2062757420697473206d65616e696e6720686173> Tj
+<a5> Tj
 ET
 
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+
+0.0 Tc
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
+
+BT
+66.24 163.933 Td
+/F1.0 10.5 Tf
+<68626173652e7270632e636c69656e742e746872656164732e6d6178> Tj
+ET
+
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+
+-0.5 Tc
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
+
+BT
+56.8805 142.153 Td
+/F1.0 10.5 Tf
+<a5> Tj
+ET
+
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+
+0.0 Tc
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
+
+BT
+66.24 142.153 Td
+/F1.0 10.5 Tf
+[<68626173652e7270632e636c69656e742e6e61746976657472> 20.0195 <616e73706f7274>] TJ
+ET
+
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+
+-0.5 Tc
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
+
+BT
+56.8805 120.373 Td
+/F1.0 10.5 Tf
+<a5> Tj
+ET
+
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+
+0.0 Tc
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
+
+BT
+66.24 120.373 Td
+/F1.0 10.5 Tf
+<68626173652e66732e746d702e646972> Tj
+ET
+
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+
+-0.5 Tc
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
+
+BT
+56.8805 98.593 Td
+/F1.0 10.5 Tf
+<a5> Tj
+ET
+
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+
+0.0 Tc
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
+
+BT
+66.24 98.593 Td
+/F1.0 10.5 Tf
+[<68626173652e6275636b> 20.0195 <657463616368652e636f6d62696e656463616368652e656e61626c6564>] TJ
+ET
+
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+
+-0.5 Tc
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
+
+BT
+56.8805 76.813 Td
+/F1.0 10.5 Tf
+<a5> Tj
+ET
+
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+
+0.0 Tc
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
+
+BT
+66.24 76.813 Td
+/F1.0 10.5 Tf
+[<68626173652e6275636b> 20.0195 <657463616368652e696f656e67696e65206e6f206c6f6e67657220737570706f72747320746865202768656170272076616c75652e>] TJ
+ET
+
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+
+-0.5 Tc
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
+
+BT
+56.8805 55.033 Td
+/F1.0 10.5 Tf
+<a5> Tj
+ET
+
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+
+0.0 Tc
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
+
+BT
+66.24 55.033 Td
+/F1.0 10.5 Tf
+<68626173652e62756c6b6c6f61642e73746167696e672e646972> Tj
+ET
 
-0.0 Tw
 0.0 0.0 0.0 SCN
 0.0 0.0 0.0 scn
 q
@@ -83915,11 +83971,12 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 /F3.0 35 0 R
+/F4.0 37 0 R
 >>
-/XObject << /Stamp1 5010 0 R
+/XObject << /Stamp1 5001 0 R
 >>
 >>
-/Annots [671 0 R 674 0 R]
+/Annots [671 0 R 673 0 R 674 0 R 675 0 R 677 0 R]
 >>
 endobj
 667 0 obj
@@ -83946,30 +84003,84 @@ endobj
 [666 0 R /XYZ 0 463.239 null]
 endobj
 673 0 obj
-[666 0 R /XYZ 0 325.568 null]
+<< /Border [0 0 0]
+/Dest (HBCK2)
+/Subtype /Link
+/Rect [246.2303 310.538 280.3763 324.818]
+/Type /Annot
+>>
 endobj
 674 0 obj
 << /Border [0 0 0]
-/Dest (upgrade2.0.zkconfig)
+/Dest (HBCK2)
 /Subtype /Link
-/Rect [273.8085 247.987 526.2424 262.267]
+/Rect [280.3763 312.134 306.6263 322.634]
 /Type /Annot
 >>
 endobj
 675 0 obj
-<< /Length 17299
+<< /Border [0 0 0]
+/Dest (ops_mgt)
+/Subtype /Link
+/Rect [322.1873 310.538 524.1441 324.818]
+/Type /Annot
+>>
+endobj
+676 0 obj
+[666 0 R /XYZ 0 297.788 null]
+endobj
+677 0 obj
+<< /Border [0 0 0]
+/Dest (upgrade2.0.zkconfig)
+/Subtype /Link
+/Rect [273.8085 220.207 526.2424 234.487]
+/Type /Annot
+>>
+endobj
+678 0 obj
+<< /Length 17234
 >>
 stream
 q
+
+-0.5 Tc
 /DeviceRGB cs
 0.2 0.2 0.2 scn
 /DeviceRGB CS
 0.2 0.2 0.2 SCN
 
+BT
+56.8805 793.926 Td
+/F1.0 10.5 Tf
+<a5> Tj
+ET
+
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+
+0.0 Tc
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
+
+6.2035 Tw
+
+BT
+66.24 793.926 Td
+/F1.0 10.5 Tf
+<68626173652e62616c616e6365722e7461626c65734f6e4d6173746572207761736ed5742072656d6f7665642c207374726963746c7920737065616b696e672c2062757420697473206d65616e696e6720686173> Tj
+ET
+
+
+0.0 Tw
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
+
 1.829 Tw
 
 BT
-66.24 794.676 Td
+66.24 778.146 Td
 /F1.0 10.5 Tf
 <66756e64616d656e74616c6c79206368616e67656420616e642075736572732073686f756c64206e6f74207365742069742e20536565207468652073656374696f6e20> Tj
 ET
@@ -83984,7 +84095,7 @@ ET
 1.829 Tw
 
 BT
-420.595 794.676 Td
+420.595 778.146 Td
 /F1.0 10.5 Tf
 <224d617374657220686f7374696e6720726567696f6e7322> Tj
 ET
@@ -83997,7 +84108,7 @@ ET
 0.2588 0.5451 0.7922 SCN
 
 BT
-66.24 778.896 Td
+66.24 762.366 Td
 /F1.0 10.5 Tf
 [<666561747572652062726f6b> 20.0195 <656e20616e6420756e737570706f72746564>] TJ
 ET
@@ -84008,7 +84119,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-230.0188 778.896 Td
+230.0188 762.366 Td
 /F1.0 10.5 Tf
 <20666f722064657461696c732e> Tj
 ET
@@ -84021,7 +84132,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-56.8805 757.116 Td
+56.8805 740.586 Td
 /F1.0 10.5 Tf
 <a5> Tj
 ET
@@ -84036,7 +84147,7 @@ ET
 0.3156 Tw
 
 BT
-66.24 757.116 Td
+66.24 740.586 Td
 /F1.0 10.5 Tf
 [<68626173652e6d61737465722e64697374726962757465642e6c6f672e7265706c61> 20.0195 <7920536565207468652073656374696f6e20>] TJ
 ET
@@ -84051,7 +84162,7 @@ ET
 0.3156 Tw
 
 BT
-323.5238 757.116 Td
+323.5238 740.586 Td
 /F1.0 10.5 Tf
 [<224469737472696275746564204c6f67205265706c61> 20.0195 <792220666561747572652062726f6b> 20.0195 <656e20616e64>] TJ
 ET
@@ -84064,7 +84175,7 @@ ET
 0.2588 0.5451 0.7922 SCN
 
 BT
-66.24 741.336 Td
+66.24 724.806 Td
 /F1.0 10.5 Tf
 <72656d6f766564> Tj
 ET
@@ -84075,7 +84186,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-110.907 741.336 Td
+110.907 724.806 Td
 /F1.0 10.5 Tf
 <20666f722064657461696c73> Tj
 ET
@@ -84088,7 +84199,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-56.8805 719.556 Td
+56.8805 703.026 Td
 /F1.0 10.5 Tf
 <a5> Tj
 ET
@@ -84103,7 +84214,7 @@ ET
 2.8723 Tw
 
 BT
-66.24 719.556 Td
+66.24 703.026 Td
 /F1.0 10.5 Tf
 [<68626173652e726567696f6e7365727665722e646973616c6c6f77> 69.8242 <2e7772697465732e7768656e2e7265636f766572696e6720536565207468652073656374696f6e20>] TJ
 ET
@@ -84118,7 +84229,7 @@ ET
 2.8723 Tw
 
 BT
-418.6871 719.556 Td
+418.6871 703.026 Td
 /F1.0 10.5 Tf
 [<224469737472696275746564204c6f67205265706c61> 20.0195 <7922>] TJ
 ET
@@ -84131,7 +84242,7 @@ ET
 0.2588 0.5451 0.7922 SCN
 
 BT
-66.24 703.776 Td
+66.24 687.246 Td
 /F1.0 10.5 Tf
 [<666561747572652062726f6b> 20.0195 <656e20616e642072656d6f766564>] TJ
 ET
@@ -84142,7 +84253,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-210.2368 703.776 Td
+210.2368 687.246 Td
 /F1.0 10.5 Tf
 <20666f722064657461696c73> Tj
 ET
@@ -84155,7 +84266,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-56.8805 681.996 Td
+56.8805 665.466 Td
 /F1.0 10.5 Tf
 <a5> Tj
 ET
@@ -84170,7 +84281,7 @@ ET
 3.167 Tw
 
 BT
-66.24 681.996 Td
+66.24 665.466 Td
 /F1.0 10.5 Tf
 [<68626173652e726567696f6e7365727665722e77616c2e6c6f677265706c61> 20.0195 <79> 89.8438 <2e62617463682e73697a6520536565207468652073656374696f6e20>] TJ
 ET
@@ -84185,7 +84296,7 @@ ET
 3.167 Tw
 
 BT
-375.9021 681.996 Td
+375.9021 665.466 Td
 /F1.0 10.5 Tf
 [<224469737472696275746564204c6f67205265706c61> 20.0195 <79222066656174757265>] TJ
 ET
@@ -84198,7 +84309,7 @@ ET
 0.2588 0.5451 0.7922 SCN
 
 BT
-66.24 666.216 Td
+66.24 649.686 Td
 /F1.0 10.5 Tf
 [<62726f6b> 20.0195 <656e20616e642072656d6f766564>] TJ
 ET
@@ -84209,7 +84320,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-171.2083 666.216 Td
+171.2083 649.686 Td
 /F1.0 10.5 Tf
 <20666f722064657461696c73> Tj
 ET
@@ -84222,7 +84333,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-56.8805 644.436 Td
+56.8805 627.906 Td
 /F1.0 10.5 Tf
 <a5> Tj
 ET
@@ -84235,7 +84346,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-66.24 644.436 Td
+66.24 627.906 Td
 /F1.0 10.5 Tf
 <68626173652e6d61737465722e636174616c6f672e74696d656f7574> Tj
 ET
@@ -84248,7 +84359,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-56.8805 622.656 Td
+56.8805 606.126 Td
 /F1.0 10.5 Tf
 <a5> Tj
 ET
@@ -84261,7 +84372,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-66.24 622.656 Td
+66.24 606.126 Td
 /F1.0 10.5 Tf
 <68626173652e726567696f6e7365727665722e636174616c6f672e74696d656f7574> Tj
 ET
@@ -84274,7 +84385,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-56.8805 600.876 Td
+56.8805 584.346 Td
 /F1.0 10.5 Tf
 <a5> Tj
 ET
@@ -84287,7 +84398,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-66.24 600.876 Td
+66.24 584.346 Td
 /F1.0 10.5 Tf
 [<68626173652e6d6574726963732e6578706f73654f706572> 20.0195 <6174696f6e54696d6573>] TJ
 ET
@@ -84300,7 +84411,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-56.8805 579.096 Td
+56.8805 562.566 Td
 /F1.0 10.5 Tf
 <a5> Tj
 ET
@@ -84313,7 +84424,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-66.24 579.096 Td
+66.24 562.566 Td
 /F1.0 10.5 Tf
 [<68626173652e6d6574726963732e73686f7754> 29.7852 <61626c654e616d65>] TJ
 ET
@@ -84326,7 +84437,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-56.8805 557.316 Td
+56.8805 540.786 Td
 /F1.0 10.5 Tf
 <a5> Tj
 ET
@@ -84339,7 +84450,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-66.24 557.316 Td
+66.24 540.786 Td
 /F1.0 10.5 Tf
 [<68626173652e6f6e6c696e652e736368656d612e7570646174652e656e61626c6520284842617365206e6f7720616c7761> 20.0195 <797320737570706f727473207468697329>] TJ
 ET
@@ -84352,7 +84463,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-56.8805 535.536 Td
+56.8805 519.006 Td
 /F1.0 10.5 Tf
 <a5> Tj
 ET
@@ -84365,7 +84476,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-66.24 535.536 Td
+66.24 519.006 Td
 /F1.0 10.5 Tf
 <68626173652e7468726966742e687461626c65706f6f6c2e73697a652e6d6178> Tj
 ET
@@ -84376,7 +84487,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-48.24 508.3542 Td
+48.24 491.8242 Td
 /F3.0 9.975 Tf
 [<436f6e6669677572> 20.0195 <6174696f6e2070726f7065727469657320746861742077657265207

<TRUNCATED>

[05/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/testdevapidocs/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html
new file mode 100644
index 0000000..381f127
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html
@@ -0,0 +1,463 @@
+<!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>TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor (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="TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":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/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" target="_top">Frames</a></li>
+<li><a href="TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><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>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.client</div>
+<h2 title="Class TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor" class="title">Class TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.client.TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>org.apache.hadoop.hbase.Coprocessor, org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.hadoop.hbase.coprocessor.RegionObserver</dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.html#line.139">TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor</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.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.hadoop.hbase.coprocessor.RegionObserver</pre>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.Coprocessor">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.hadoop.hbase.Coprocessor</h3>
+<code>org.apache.hadoop.hbase.Coprocessor.State</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.coprocessor.RegionObserver">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.hadoop.hbase.coprocessor.RegionObserver</h3>
+<code>org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType</code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.Coprocessor">
+<!--   -->
+</a>
+<h3>Fields inherited from interface&nbsp;org.apache.hadoop.hbase.Coprocessor</h3>
+<code>PRIORITY_HIGHEST, PRIORITY_LOWEST, PRIORITY_SYSTEM, PRIORITY_USER, VERSION</code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html#ThrowDoNotRetryIOExceptionCoprocessor--">ThrowDoNotRetryIOExceptionCoprocessor</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><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;org.apache.hadoop.hbase.coprocessor.RegionObserver&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html#getRegionObserver--">getRegionObserver</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>org.apache.hadoop.hbase.client.Result</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html#preAppend-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Append-">preAppend</a></span>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+         org.apache.hadoop.hbase.client.Append&nbsp;append)</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/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html#preDelete-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Delete-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-">preDelete</a></span>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+         org.apache.hadoop.hbase.client.Delete&nbsp;delete,
+         org.apache.hadoop.hbase.wal.WALEdit&nbsp;edit,
+         org.apache.hadoop.hbase.client.Durability&nbsp;durability)</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/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html#preGetOp-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Get-java.util.List-">preGetOp</a></span>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+        org.apache.hadoop.hbase.client.Get&nbsp;get,
+        <a href="https://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.Cell&gt;&nbsp;results)</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>org.apache.hadoop.hbase.client.Result</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html#preIncrement-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Increment-">preIncrement</a></span>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+            org.apache.hadoop.hbase.client.Increment&nbsp;increment)</code>&nbsp;</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html#prePut-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Put-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-">prePut</a></span>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+      org.apache.hadoop.hbase.client.Put&nbsp;put,
+      org.apache.hadoop.hbase.wal.WALEdit&nbsp;edit,
+      org.apache.hadoop.hbase.client.Durability&nbsp;durability)</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>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.coprocessor.RegionCoprocessor">
+<!--   -->
+</a>
+<h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.coprocessor.RegionCoprocessor</h3>
+<code>getBulkLoadObserver, getEndpointObserver</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.Coprocessor">
+<!--   -->
+</a>
+<h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.Coprocessor</h3>
+<code>getServices, start, stop</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.coprocessor.RegionObserver">
+<!--   -->
+</a>
+<h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.coprocessor.RegionObserver</h3>
+<code>postAppend, postBatchMutate, postBatchMutateIndispensably, postBulkLoadHFile, postCheckAndDelete, postCheckAndPut, postClose, postCloseRegionOperation, postCommitStoreFile, postCompact, postCompactSelection, postDelete, postExists, postFlush, postFlush, postGetOp, postIncrement, postInstantiateDeleteTracker, postMemStoreCompaction, postMutationBeforeWAL, postOpen, postPut, postReplayWALs, postScannerClose, postScannerFilterRow, postScannerNext, postScannerOpen, postStartRegionOperation, postStoreFileReaderOpen, postWALRestore, preAppendAfterRowLock, preBatchMutate, preBulkLoadHFile, preCheckAndDelete, preCheckAndDeleteAfterRowLock, preCheckAndPut, preCheckAndPutAfterRowLock, preClose, preCommitStoreFile, preCompact, preCompactScannerOpen, preCompactSelection, preExists, preFlush, preFlush, preFlushScannerOpen, preIncrementAfterRowLock, preMemStoreCompaction, preMemStoreCompactionCompact, preMemStoreCompactionCompactScannerOpen, preOpen, prePrepareTimeStampForDeleteVersion, pre
 ReplayWALs, preScannerClose, preScannerNext, preScannerOpen, preStoreFileReaderOpen, preStoreScannerOpen, preWALRestore</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="ThrowDoNotRetryIOExceptionCoprocessor--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>ThrowDoNotRetryIOExceptionCoprocessor</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html#line.142">ThrowDoNotRetryIOExceptionCoprocessor</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="getRegionObserver--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getRegionObserver</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;org.apache.hadoop.hbase.coprocessor.RegionObserver&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html#line.146">getRegionObserver</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>getRegionObserver</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.coprocessor.RegionCoprocessor</code></dd>
+</dl>
+</li>
+</ul>
+<a name="preGetOp-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Get-java.util.List-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>preGetOp</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html#line.151">preGetOp</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+                     org.apache.hadoop.hbase.client.Get&nbsp;get,
+                     <a href="https://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.Cell&gt;&nbsp;results)
+              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>
+<dd><code>preGetOp</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.coprocessor.RegionObserver</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="prePut-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Put-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>prePut</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html#line.157">prePut</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+                   org.apache.hadoop.hbase.client.Put&nbsp;put,
+                   org.apache.hadoop.hbase.wal.WALEdit&nbsp;edit,
+                   org.apache.hadoop.hbase.client.Durability&nbsp;durability)
+            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>
+<dd><code>prePut</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.coprocessor.RegionObserver</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="preDelete-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Delete-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>preDelete</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html#line.163">preDelete</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+                      org.apache.hadoop.hbase.client.Delete&nbsp;delete,
+                      org.apache.hadoop.hbase.wal.WALEdit&nbsp;edit,
+                      org.apache.hadoop.hbase.client.Durability&nbsp;durability)
+               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>
+<dd><code>preDelete</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.coprocessor.RegionObserver</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="preIncrement-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Increment-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>preIncrement</h4>
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Result&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html#line.169">preIncrement</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+                                                          org.apache.hadoop.hbase.client.Increment&nbsp;increment)
+                                                   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>
+<dd><code>preIncrement</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.coprocessor.RegionObserver</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="preAppend-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Append-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>preAppend</h4>
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Result&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html#line.175">preAppend</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+                                                       org.apache.hadoop.hbase.client.Append&nbsp;append)
+                                                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>
+<dd><code>preAppend</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.coprocessor.RegionObserver</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</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/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" target="_top">Frames</a></li>
+<li><a href="TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><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>Field&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/fa850293/testdevapidocs/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html
new file mode 100644
index 0000000..9e16307
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html
@@ -0,0 +1,463 @@
+<!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>TestTableOperationException.ThrowIOExceptionCoprocessor (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="TestTableOperationException.ThrowIOExceptionCoprocessor (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":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/TestTableOperationException.ThrowIOExceptionCoprocessor.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestTableShell.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html" target="_top">Frames</a></li>
+<li><a href="TestTableOperationException.ThrowIOExceptionCoprocessor.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><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>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.client</div>
+<h2 title="Class TestTableOperationException.ThrowIOExceptionCoprocessor" class="title">Class TestTableOperationException.ThrowIOExceptionCoprocessor</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.client.TestTableOperationException.ThrowIOExceptionCoprocessor</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>org.apache.hadoop.hbase.Coprocessor, org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.hadoop.hbase.coprocessor.RegionObserver</dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.html#line.181">TestTableOperationException.ThrowIOExceptionCoprocessor</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.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.hadoop.hbase.coprocessor.RegionObserver</pre>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.Coprocessor">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.hadoop.hbase.Coprocessor</h3>
+<code>org.apache.hadoop.hbase.Coprocessor.State</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.coprocessor.RegionObserver">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.hadoop.hbase.coprocessor.RegionObserver</h3>
+<code>org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType</code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.Coprocessor">
+<!--   -->
+</a>
+<h3>Fields inherited from interface&nbsp;org.apache.hadoop.hbase.Coprocessor</h3>
+<code>PRIORITY_HIGHEST, PRIORITY_LOWEST, PRIORITY_SYSTEM, PRIORITY_USER, VERSION</code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html#ThrowIOExceptionCoprocessor--">ThrowIOExceptionCoprocessor</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><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;org.apache.hadoop.hbase.coprocessor.RegionObserver&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html#getRegionObserver--">getRegionObserver</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>org.apache.hadoop.hbase.client.Result</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html#preAppend-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Append-">preAppend</a></span>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+         org.apache.hadoop.hbase.client.Append&nbsp;append)</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/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html#preDelete-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Delete-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-">preDelete</a></span>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+         org.apache.hadoop.hbase.client.Delete&nbsp;delete,
+         org.apache.hadoop.hbase.wal.WALEdit&nbsp;edit,
+         org.apache.hadoop.hbase.client.Durability&nbsp;durability)</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/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html#preGetOp-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Get-java.util.List-">preGetOp</a></span>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+        org.apache.hadoop.hbase.client.Get&nbsp;get,
+        <a href="https://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.Cell&gt;&nbsp;results)</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>org.apache.hadoop.hbase.client.Result</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html#preIncrement-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Increment-">preIncrement</a></span>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+            org.apache.hadoop.hbase.client.Increment&nbsp;increment)</code>&nbsp;</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html#prePut-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Put-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-">prePut</a></span>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+      org.apache.hadoop.hbase.client.Put&nbsp;put,
+      org.apache.hadoop.hbase.wal.WALEdit&nbsp;edit,
+      org.apache.hadoop.hbase.client.Durability&nbsp;durability)</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>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.coprocessor.RegionCoprocessor">
+<!--   -->
+</a>
+<h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.coprocessor.RegionCoprocessor</h3>
+<code>getBulkLoadObserver, getEndpointObserver</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.Coprocessor">
+<!--   -->
+</a>
+<h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.Coprocessor</h3>
+<code>getServices, start, stop</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.coprocessor.RegionObserver">
+<!--   -->
+</a>
+<h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.coprocessor.RegionObserver</h3>
+<code>postAppend, postBatchMutate, postBatchMutateIndispensably, postBulkLoadHFile, postCheckAndDelete, postCheckAndPut, postClose, postCloseRegionOperation, postCommitStoreFile, postCompact, postCompactSelection, postDelete, postExists, postFlush, postFlush, postGetOp, postIncrement, postInstantiateDeleteTracker, postMemStoreCompaction, postMutationBeforeWAL, postOpen, postPut, postReplayWALs, postScannerClose, postScannerFilterRow, postScannerNext, postScannerOpen, postStartRegionOperation, postStoreFileReaderOpen, postWALRestore, preAppendAfterRowLock, preBatchMutate, preBulkLoadHFile, preCheckAndDelete, preCheckAndDeleteAfterRowLock, preCheckAndPut, preCheckAndPutAfterRowLock, preClose, preCommitStoreFile, preCompact, preCompactScannerOpen, preCompactSelection, preExists, preFlush, preFlush, preFlushScannerOpen, preIncrementAfterRowLock, preMemStoreCompaction, preMemStoreCompactionCompact, preMemStoreCompactionCompactScannerOpen, preOpen, prePrepareTimeStampForDeleteVersion, pre
 ReplayWALs, preScannerClose, preScannerNext, preScannerOpen, preStoreFileReaderOpen, preStoreScannerOpen, preWALRestore</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="ThrowIOExceptionCoprocessor--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>ThrowIOExceptionCoprocessor</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html#line.184">ThrowIOExceptionCoprocessor</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="getRegionObserver--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getRegionObserver</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;org.apache.hadoop.hbase.coprocessor.RegionObserver&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html#line.188">getRegionObserver</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>getRegionObserver</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.coprocessor.RegionCoprocessor</code></dd>
+</dl>
+</li>
+</ul>
+<a name="preGetOp-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Get-java.util.List-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>preGetOp</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html#line.193">preGetOp</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+                     org.apache.hadoop.hbase.client.Get&nbsp;get,
+                     <a href="https://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.Cell&gt;&nbsp;results)
+              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>
+<dd><code>preGetOp</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.coprocessor.RegionObserver</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="prePut-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Put-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>prePut</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html#line.199">prePut</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+                   org.apache.hadoop.hbase.client.Put&nbsp;put,
+                   org.apache.hadoop.hbase.wal.WALEdit&nbsp;edit,
+                   org.apache.hadoop.hbase.client.Durability&nbsp;durability)
+            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>
+<dd><code>prePut</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.coprocessor.RegionObserver</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="preDelete-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Delete-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>preDelete</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html#line.205">preDelete</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+                      org.apache.hadoop.hbase.client.Delete&nbsp;delete,
+                      org.apache.hadoop.hbase.wal.WALEdit&nbsp;edit,
+                      org.apache.hadoop.hbase.client.Durability&nbsp;durability)
+               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>
+<dd><code>preDelete</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.coprocessor.RegionObserver</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="preIncrement-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Increment-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>preIncrement</h4>
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Result&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html#line.211">preIncrement</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+                                                          org.apache.hadoop.hbase.client.Increment&nbsp;increment)
+                                                   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>
+<dd><code>preIncrement</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.coprocessor.RegionObserver</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="preAppend-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Append-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>preAppend</h4>
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Result&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html#line.217">preAppend</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+                                                       org.apache.hadoop.hbase.client.Append&nbsp;append)
+                                                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>
+<dd><code>preAppend</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.coprocessor.RegionObserver</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</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/TestTableOperationException.ThrowIOExceptionCoprocessor.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestTableShell.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html" target="_top">Frames</a></li>
+<li><a href="TestTableOperationException.ThrowIOExceptionCoprocessor.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><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>Field&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>


[13/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 da040ad..d6702a7 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
@@ -2957,7 +2957,7 @@
 <span class="sourceLineNo">2949</span>        if(family == null) {<a name="line.2949"></a>
 <span class="sourceLineNo">2950</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2950"></a>
 <span class="sourceLineNo">2951</span>        }<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>        checkFamily(family);<a name="line.2952"></a>
+<span class="sourceLineNo">2952</span>        checkFamily(family, delete.getDurability());<a name="line.2952"></a>
 <span class="sourceLineNo">2953</span>      }<a name="line.2953"></a>
 <span class="sourceLineNo">2954</span>    }<a name="line.2954"></a>
 <span class="sourceLineNo">2955</span>  }<a name="line.2955"></a>
@@ -3569,7 +3569,7 @@
 <span class="sourceLineNo">3561</span><a name="line.3561"></a>
 <span class="sourceLineNo">3562</span>    @Override<a name="line.3562"></a>
 <span class="sourceLineNo">3563</span>    public void checkAndPreparePut(Put p) throws IOException {<a name="line.3563"></a>
-<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet());<a name="line.3564"></a>
+<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet(), p.getDurability());<a name="line.3564"></a>
 <span class="sourceLineNo">3565</span>    }<a name="line.3565"></a>
 <span class="sourceLineNo">3566</span><a name="line.3566"></a>
 <span class="sourceLineNo">3567</span>    @Override<a name="line.3567"></a>
@@ -4462,4304 +4462,4307 @@
 <span class="sourceLineNo">4454</span>    store.add(cell, memstoreAccounting);<a name="line.4454"></a>
 <span class="sourceLineNo">4455</span>  }<a name="line.4455"></a>
 <span class="sourceLineNo">4456</span><a name="line.4456"></a>
-<span class="sourceLineNo">4457</span>  /**<a name="line.4457"></a>
-<span class="sourceLineNo">4458</span>   * Check the collection of families for validity.<a name="line.4458"></a>
-<span class="sourceLineNo">4459</span>   * @param families<a name="line.4459"></a>
-<span class="sourceLineNo">4460</span>   * @throws NoSuchColumnFamilyException<a name="line.4460"></a>
-<span class="sourceLineNo">4461</span>   */<a name="line.4461"></a>
-<span class="sourceLineNo">4462</span>  public void checkFamilies(Collection&lt;byte[]&gt; families) throws NoSuchColumnFamilyException {<a name="line.4462"></a>
-<span class="sourceLineNo">4463</span>    for (byte[] family : families) {<a name="line.4463"></a>
-<span class="sourceLineNo">4464</span>      checkFamily(family);<a name="line.4464"></a>
-<span class="sourceLineNo">4465</span>    }<a name="line.4465"></a>
-<span class="sourceLineNo">4466</span>  }<a name="line.4466"></a>
-<span class="sourceLineNo">4467</span><a name="line.4467"></a>
-<span class="sourceLineNo">4468</span>  /**<a name="line.4468"></a>
-<span class="sourceLineNo">4469</span>   * Check the collection of families for valid timestamps<a name="line.4469"></a>
-<span class="sourceLineNo">4470</span>   * @param familyMap<a name="line.4470"></a>
-<span class="sourceLineNo">4471</span>   * @param now current timestamp<a name="line.4471"></a>
-<span class="sourceLineNo">4472</span>   * @throws FailedSanityCheckException<a name="line.4472"></a>
-<span class="sourceLineNo">4473</span>   */<a name="line.4473"></a>
-<span class="sourceLineNo">4474</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4474"></a>
-<span class="sourceLineNo">4475</span>      throws FailedSanityCheckException {<a name="line.4475"></a>
-<span class="sourceLineNo">4476</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4476"></a>
-<span class="sourceLineNo">4477</span>      return;<a name="line.4477"></a>
-<span class="sourceLineNo">4478</span>    }<a name="line.4478"></a>
-<span class="sourceLineNo">4479</span>    long maxTs = now + timestampSlop;<a name="line.4479"></a>
-<span class="sourceLineNo">4480</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4480"></a>
-<span class="sourceLineNo">4481</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4481"></a>
-<span class="sourceLineNo">4482</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4482"></a>
-<span class="sourceLineNo">4483</span>      assert kvs instanceof RandomAccess;<a name="line.4483"></a>
-<span class="sourceLineNo">4484</span>      int listSize  = kvs.size();<a name="line.4484"></a>
-<span class="sourceLineNo">4485</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4485"></a>
-<span class="sourceLineNo">4486</span>        Cell cell = kvs.get(i);<a name="line.4486"></a>
-<span class="sourceLineNo">4487</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4487"></a>
-<span class="sourceLineNo">4488</span>        long ts = cell.getTimestamp();<a name="line.4488"></a>
-<span class="sourceLineNo">4489</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4489"></a>
-<span class="sourceLineNo">4490</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4490"></a>
-<span class="sourceLineNo">4491</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4491"></a>
-<span class="sourceLineNo">4492</span>        }<a name="line.4492"></a>
-<span class="sourceLineNo">4493</span>      }<a name="line.4493"></a>
+<span class="sourceLineNo">4457</span>  private void checkFamilies(Collection&lt;byte[]&gt; families, Durability durability)<a name="line.4457"></a>
+<span class="sourceLineNo">4458</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4458"></a>
+<span class="sourceLineNo">4459</span>    for (byte[] family : families) {<a name="line.4459"></a>
+<span class="sourceLineNo">4460</span>      checkFamily(family, durability);<a name="line.4460"></a>
+<span class="sourceLineNo">4461</span>    }<a name="line.4461"></a>
+<span class="sourceLineNo">4462</span>  }<a name="line.4462"></a>
+<span class="sourceLineNo">4463</span><a name="line.4463"></a>
+<span class="sourceLineNo">4464</span>  private void checkFamily(final byte[] family, Durability durability)<a name="line.4464"></a>
+<span class="sourceLineNo">4465</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4465"></a>
+<span class="sourceLineNo">4466</span>    checkFamily(family);<a name="line.4466"></a>
+<span class="sourceLineNo">4467</span>    if (durability.equals(Durability.SKIP_WAL)<a name="line.4467"></a>
+<span class="sourceLineNo">4468</span>        &amp;&amp; htableDescriptor.getColumnFamily(family).getScope()<a name="line.4468"></a>
+<span class="sourceLineNo">4469</span>        != HConstants.REPLICATION_SCOPE_LOCAL) {<a name="line.4469"></a>
+<span class="sourceLineNo">4470</span>      throw new InvalidMutationDurabilityException(<a name="line.4470"></a>
+<span class="sourceLineNo">4471</span>          "Mutation's durability is SKIP_WAL but table's column family " + Bytes.toString(family)<a name="line.4471"></a>
+<span class="sourceLineNo">4472</span>              + " need replication");<a name="line.4472"></a>
+<span class="sourceLineNo">4473</span>    }<a name="line.4473"></a>
+<span class="sourceLineNo">4474</span>  }<a name="line.4474"></a>
+<span class="sourceLineNo">4475</span><a name="line.4475"></a>
+<span class="sourceLineNo">4476</span>  void checkFamily(final byte[] family) throws NoSuchColumnFamilyException {<a name="line.4476"></a>
+<span class="sourceLineNo">4477</span>    if (!this.htableDescriptor.hasColumnFamily(family)) {<a name="line.4477"></a>
+<span class="sourceLineNo">4478</span>      throw new NoSuchColumnFamilyException(<a name="line.4478"></a>
+<span class="sourceLineNo">4479</span>          "Column family " + Bytes.toString(family) + " does not exist in region " + this<a name="line.4479"></a>
+<span class="sourceLineNo">4480</span>              + " in table " + this.htableDescriptor);<a name="line.4480"></a>
+<span class="sourceLineNo">4481</span>    }<a name="line.4481"></a>
+<span class="sourceLineNo">4482</span>  }<a name="line.4482"></a>
+<span class="sourceLineNo">4483</span><a name="line.4483"></a>
+<span class="sourceLineNo">4484</span>  /**<a name="line.4484"></a>
+<span class="sourceLineNo">4485</span>   * Check the collection of families for valid timestamps<a name="line.4485"></a>
+<span class="sourceLineNo">4486</span>   * @param familyMap<a name="line.4486"></a>
+<span class="sourceLineNo">4487</span>   * @param now current timestamp<a name="line.4487"></a>
+<span class="sourceLineNo">4488</span>   * @throws FailedSanityCheckException<a name="line.4488"></a>
+<span class="sourceLineNo">4489</span>   */<a name="line.4489"></a>
+<span class="sourceLineNo">4490</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4490"></a>
+<span class="sourceLineNo">4491</span>      throws FailedSanityCheckException {<a name="line.4491"></a>
+<span class="sourceLineNo">4492</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4492"></a>
+<span class="sourceLineNo">4493</span>      return;<a name="line.4493"></a>
 <span class="sourceLineNo">4494</span>    }<a name="line.4494"></a>
-<span class="sourceLineNo">4495</span>  }<a name="line.4495"></a>
-<span class="sourceLineNo">4496</span><a name="line.4496"></a>
-<span class="sourceLineNo">4497</span>  /*<a name="line.4497"></a>
-<span class="sourceLineNo">4498</span>   * @param size<a name="line.4498"></a>
-<span class="sourceLineNo">4499</span>   * @return True if size is over the flush threshold<a name="line.4499"></a>
-<span class="sourceLineNo">4500</span>   */<a name="line.4500"></a>
-<span class="sourceLineNo">4501</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4501"></a>
-<span class="sourceLineNo">4502</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4502"></a>
-<span class="sourceLineNo">4503</span>  }<a name="line.4503"></a>
-<span class="sourceLineNo">4504</span><a name="line.4504"></a>
-<span class="sourceLineNo">4505</span>  /**<a name="line.4505"></a>
-<span class="sourceLineNo">4506</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4506"></a>
-<span class="sourceLineNo">4507</span>   * the recovered edits back up into this region.<a name="line.4507"></a>
-<span class="sourceLineNo">4508</span>   *<a name="line.4508"></a>
-<span class="sourceLineNo">4509</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4509"></a>
-<span class="sourceLineNo">4510</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4510"></a>
-<span class="sourceLineNo">4511</span>   * reflected in the HFiles.)<a name="line.4511"></a>
-<span class="sourceLineNo">4512</span>   *<a name="line.4512"></a>
-<span class="sourceLineNo">4513</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4513"></a>
-<span class="sourceLineNo">4514</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4514"></a>
-<span class="sourceLineNo">4515</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4515"></a>
-<span class="sourceLineNo">4516</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4516"></a>
-<span class="sourceLineNo">4517</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4517"></a>
-<span class="sourceLineNo">4518</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4518"></a>
-<span class="sourceLineNo">4519</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4519"></a>
-<span class="sourceLineNo">4520</span>   * edits.<a name="line.4520"></a>
-<span class="sourceLineNo">4521</span>   *<a name="line.4521"></a>
-<span class="sourceLineNo">4522</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4522"></a>
-<span class="sourceLineNo">4523</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4523"></a>
-<span class="sourceLineNo">4524</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4524"></a>
-<span class="sourceLineNo">4525</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4525"></a>
-<span class="sourceLineNo">4526</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4526"></a>
-<span class="sourceLineNo">4527</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4527"></a>
-<span class="sourceLineNo">4528</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4528"></a>
-<span class="sourceLineNo">4529</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4529"></a>
-<span class="sourceLineNo">4530</span>   * make sense in a this single region context only -- until we online.<a name="line.4530"></a>
-<span class="sourceLineNo">4531</span>   *<a name="line.4531"></a>
-<span class="sourceLineNo">4532</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4532"></a>
-<span class="sourceLineNo">4533</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4533"></a>
-<span class="sourceLineNo">4534</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4534"></a>
-<span class="sourceLineNo">4535</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4535"></a>
-<span class="sourceLineNo">4536</span>   * @throws IOException<a name="line.4536"></a>
-<span class="sourceLineNo">4537</span>   */<a name="line.4537"></a>
-<span class="sourceLineNo">4538</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4538"></a>
-<span class="sourceLineNo">4539</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4539"></a>
-<span class="sourceLineNo">4540</span>      throws IOException {<a name="line.4540"></a>
-<span class="sourceLineNo">4541</span>    long minSeqIdForTheRegion = -1;<a name="line.4541"></a>
-<span class="sourceLineNo">4542</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4542"></a>
-<span class="sourceLineNo">4543</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4543"></a>
-<span class="sourceLineNo">4544</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4544"></a>
-<span class="sourceLineNo">4545</span>      }<a name="line.4545"></a>
-<span class="sourceLineNo">4546</span>    }<a name="line.4546"></a>
-<span class="sourceLineNo">4547</span>    long seqid = minSeqIdForTheRegion;<a name="line.4547"></a>
-<span class="sourceLineNo">4548</span><a name="line.4548"></a>
-<span class="sourceLineNo">4549</span>    FileSystem walFS = getWalFileSystem();<a name="line.4549"></a>
-<span class="sourceLineNo">4550</span>    FileSystem rootFS = getFilesystem();<a name="line.4550"></a>
-<span class="sourceLineNo">4551</span>    Path regionDir = getWALRegionDir();<a name="line.4551"></a>
-<span class="sourceLineNo">4552</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4552"></a>
-<span class="sourceLineNo">4553</span><a name="line.4553"></a>
-<span class="sourceLineNo">4554</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4554"></a>
-<span class="sourceLineNo">4555</span>    // under the root dir even if walDir is set.<a name="line.4555"></a>
-<span class="sourceLineNo">4556</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4556"></a>
-<span class="sourceLineNo">4557</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4557"></a>
-<span class="sourceLineNo">4558</span>      filesUnderRootDir =<a name="line.4558"></a>
-<span class="sourceLineNo">4559</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4559"></a>
-<span class="sourceLineNo">4560</span>      seqid = Math.max(seqid,<a name="line.4560"></a>
-<span class="sourceLineNo">4561</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4561"></a>
-<span class="sourceLineNo">4562</span>              defaultRegionDir));<a name="line.4562"></a>
-<span class="sourceLineNo">4563</span>    }<a name="line.4563"></a>
+<span class="sourceLineNo">4495</span>    long maxTs = now + timestampSlop;<a name="line.4495"></a>
+<span class="sourceLineNo">4496</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4496"></a>
+<span class="sourceLineNo">4497</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4497"></a>
+<span class="sourceLineNo">4498</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4498"></a>
+<span class="sourceLineNo">4499</span>      assert kvs instanceof RandomAccess;<a name="line.4499"></a>
+<span class="sourceLineNo">4500</span>      int listSize  = kvs.size();<a name="line.4500"></a>
+<span class="sourceLineNo">4501</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4501"></a>
+<span class="sourceLineNo">4502</span>        Cell cell = kvs.get(i);<a name="line.4502"></a>
+<span class="sourceLineNo">4503</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4503"></a>
+<span class="sourceLineNo">4504</span>        long ts = cell.getTimestamp();<a name="line.4504"></a>
+<span class="sourceLineNo">4505</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4505"></a>
+<span class="sourceLineNo">4506</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4506"></a>
+<span class="sourceLineNo">4507</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4507"></a>
+<span class="sourceLineNo">4508</span>        }<a name="line.4508"></a>
+<span class="sourceLineNo">4509</span>      }<a name="line.4509"></a>
+<span class="sourceLineNo">4510</span>    }<a name="line.4510"></a>
+<span class="sourceLineNo">4511</span>  }<a name="line.4511"></a>
+<span class="sourceLineNo">4512</span><a name="line.4512"></a>
+<span class="sourceLineNo">4513</span>  /*<a name="line.4513"></a>
+<span class="sourceLineNo">4514</span>   * @param size<a name="line.4514"></a>
+<span class="sourceLineNo">4515</span>   * @return True if size is over the flush threshold<a name="line.4515"></a>
+<span class="sourceLineNo">4516</span>   */<a name="line.4516"></a>
+<span class="sourceLineNo">4517</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4517"></a>
+<span class="sourceLineNo">4518</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4518"></a>
+<span class="sourceLineNo">4519</span>  }<a name="line.4519"></a>
+<span class="sourceLineNo">4520</span><a name="line.4520"></a>
+<span class="sourceLineNo">4521</span>  /**<a name="line.4521"></a>
+<span class="sourceLineNo">4522</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4522"></a>
+<span class="sourceLineNo">4523</span>   * the recovered edits back up into this region.<a name="line.4523"></a>
+<span class="sourceLineNo">4524</span>   *<a name="line.4524"></a>
+<span class="sourceLineNo">4525</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4525"></a>
+<span class="sourceLineNo">4526</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4526"></a>
+<span class="sourceLineNo">4527</span>   * reflected in the HFiles.)<a name="line.4527"></a>
+<span class="sourceLineNo">4528</span>   *<a name="line.4528"></a>
+<span class="sourceLineNo">4529</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4529"></a>
+<span class="sourceLineNo">4530</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4530"></a>
+<span class="sourceLineNo">4531</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4531"></a>
+<span class="sourceLineNo">4532</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4532"></a>
+<span class="sourceLineNo">4533</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4533"></a>
+<span class="sourceLineNo">4534</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4534"></a>
+<span class="sourceLineNo">4535</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4535"></a>
+<span class="sourceLineNo">4536</span>   * edits.<a name="line.4536"></a>
+<span class="sourceLineNo">4537</span>   *<a name="line.4537"></a>
+<span class="sourceLineNo">4538</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4538"></a>
+<span class="sourceLineNo">4539</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4539"></a>
+<span class="sourceLineNo">4540</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4540"></a>
+<span class="sourceLineNo">4541</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4541"></a>
+<span class="sourceLineNo">4542</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4542"></a>
+<span class="sourceLineNo">4543</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4543"></a>
+<span class="sourceLineNo">4544</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4544"></a>
+<span class="sourceLineNo">4545</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4545"></a>
+<span class="sourceLineNo">4546</span>   * make sense in a this single region context only -- until we online.<a name="line.4546"></a>
+<span class="sourceLineNo">4547</span>   *<a name="line.4547"></a>
+<span class="sourceLineNo">4548</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4548"></a>
+<span class="sourceLineNo">4549</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4549"></a>
+<span class="sourceLineNo">4550</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4550"></a>
+<span class="sourceLineNo">4551</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4551"></a>
+<span class="sourceLineNo">4552</span>   * @throws IOException<a name="line.4552"></a>
+<span class="sourceLineNo">4553</span>   */<a name="line.4553"></a>
+<span class="sourceLineNo">4554</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4554"></a>
+<span class="sourceLineNo">4555</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4555"></a>
+<span class="sourceLineNo">4556</span>      throws IOException {<a name="line.4556"></a>
+<span class="sourceLineNo">4557</span>    long minSeqIdForTheRegion = -1;<a name="line.4557"></a>
+<span class="sourceLineNo">4558</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4558"></a>
+<span class="sourceLineNo">4559</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4559"></a>
+<span class="sourceLineNo">4560</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4560"></a>
+<span class="sourceLineNo">4561</span>      }<a name="line.4561"></a>
+<span class="sourceLineNo">4562</span>    }<a name="line.4562"></a>
+<span class="sourceLineNo">4563</span>    long seqid = minSeqIdForTheRegion;<a name="line.4563"></a>
 <span class="sourceLineNo">4564</span><a name="line.4564"></a>
-<span class="sourceLineNo">4565</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4565"></a>
-<span class="sourceLineNo">4566</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4566"></a>
-<span class="sourceLineNo">4567</span>        files, reporter, regionDir));<a name="line.4567"></a>
-<span class="sourceLineNo">4568</span><a name="line.4568"></a>
-<span class="sourceLineNo">4569</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4569"></a>
-<span class="sourceLineNo">4570</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4570"></a>
-<span class="sourceLineNo">4571</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4571"></a>
-<span class="sourceLineNo">4572</span>    }<a name="line.4572"></a>
-<span class="sourceLineNo">4573</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4573"></a>
-<span class="sourceLineNo">4574</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4574"></a>
-<span class="sourceLineNo">4575</span>      // For debugging data loss issues!<a name="line.4575"></a>
-<span class="sourceLineNo">4576</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4576"></a>
-<span class="sourceLineNo">4577</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4577"></a>
-<span class="sourceLineNo">4578</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4578"></a>
-<span class="sourceLineNo">4579</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4579"></a>
-<span class="sourceLineNo">4580</span>      for (Path file: files) {<a name="line.4580"></a>
-<span class="sourceLineNo">4581</span>        fakeStoreFiles.add(<a name="line.4581"></a>
-<span class="sourceLineNo">4582</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4582"></a>
-<span class="sourceLineNo">4583</span>      }<a name="line.4583"></a>
-<span class="sourceLineNo">4584</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4584"></a>
-<span class="sourceLineNo">4585</span>    } else {<a name="line.4585"></a>
-<span class="sourceLineNo">4586</span>      if (filesUnderRootDir != null) {<a name="line.4586"></a>
-<span class="sourceLineNo">4587</span>        for (Path file : filesUnderRootDir) {<a name="line.4587"></a>
-<span class="sourceLineNo">4588</span>          if (!rootFS.delete(file, false)) {<a name="line.4588"></a>
-<span class="sourceLineNo">4589</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4589"></a>
-<span class="sourceLineNo">4590</span>          } else {<a name="line.4590"></a>
-<span class="sourceLineNo">4591</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4591"></a>
-<span class="sourceLineNo">4592</span>          }<a name="line.4592"></a>
-<span class="sourceLineNo">4593</span>        }<a name="line.4593"></a>
-<span class="sourceLineNo">4594</span>      }<a name="line.4594"></a>
-<span class="sourceLineNo">4595</span>      for (Path file: files) {<a name="line.4595"></a>
-<span class="sourceLineNo">4596</span>        if (!walFS.delete(file, false)) {<a name="line.4596"></a>
-<span class="sourceLineNo">4597</span>          LOG.error("Failed delete of " + file);<a name="line.4597"></a>
-<span class="sourceLineNo">4598</span>        } else {<a name="line.4598"></a>
-<span class="sourceLineNo">4599</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4599"></a>
-<span class="sourceLineNo">4600</span>        }<a name="line.4600"></a>
-<span class="sourceLineNo">4601</span>      }<a name="line.4601"></a>
-<span class="sourceLineNo">4602</span>    }<a name="line.4602"></a>
-<span class="sourceLineNo">4603</span>    return seqid;<a name="line.4603"></a>
-<span class="sourceLineNo">4604</span>  }<a name="line.4604"></a>
-<span class="sourceLineNo">4605</span><a name="line.4605"></a>
-<span class="sourceLineNo">4606</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4606"></a>
-<span class="sourceLineNo">4607</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4607"></a>
-<span class="sourceLineNo">4608</span>      throws IOException {<a name="line.4608"></a>
-<span class="sourceLineNo">4609</span>    long seqid = minSeqIdForTheRegion;<a name="line.4609"></a>
-<span class="sourceLineNo">4610</span>    if (LOG.isDebugEnabled()) {<a name="line.4610"></a>
-<span class="sourceLineNo">4611</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4611"></a>
-<span class="sourceLineNo">4612</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4612"></a>
-<span class="sourceLineNo">4613</span>    }<a name="line.4613"></a>
-<span class="sourceLineNo">4614</span><a name="line.4614"></a>
-<span class="sourceLineNo">4615</span>    if (files == null || files.isEmpty()) {<a name="line.4615"></a>
-<span class="sourceLineNo">4616</span>      return minSeqIdForTheRegion;<a name="line.4616"></a>
-<span class="sourceLineNo">4617</span>    }<a name="line.4617"></a>
-<span class="sourceLineNo">4618</span><a name="line.4618"></a>
-<span class="sourceLineNo">4619</span>    for (Path edits: files) {<a name="line.4619"></a>
-<span class="sourceLineNo">4620</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4620"></a>
-<span class="sourceLineNo">4621</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4621"></a>
-<span class="sourceLineNo">4622</span>        continue;<a name="line.4622"></a>
-<span class="sourceLineNo">4623</span>      }<a name="line.4623"></a>
-<span class="sourceLineNo">4624</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4624"></a>
-<span class="sourceLineNo">4625</span><a name="line.4625"></a>
-<span class="sourceLineNo">4626</span>      long maxSeqId;<a name="line.4626"></a>
-<span class="sourceLineNo">4627</span>      String fileName = edits.getName();<a name="line.4627"></a>
-<span class="sourceLineNo">4628</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4628"></a>
-<span class="sourceLineNo">4629</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4629"></a>
-<span class="sourceLineNo">4630</span>        if (LOG.isDebugEnabled()) {<a name="line.4630"></a>
-<span class="sourceLineNo">4631</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4631"></a>
-<span class="sourceLineNo">4632</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4632"></a>
-<span class="sourceLineNo">4633</span>              + ", skipped the whole file, path=" + edits;<a name="line.4633"></a>
-<span class="sourceLineNo">4634</span>          LOG.debug(msg);<a name="line.4634"></a>
-<span class="sourceLineNo">4635</span>        }<a name="line.4635"></a>
-<span class="sourceLineNo">4636</span>        continue;<a name="line.4636"></a>
-<span class="sourceLineNo">4637</span>      }<a name="line.4637"></a>
-<span class="sourceLineNo">4638</span><a name="line.4638"></a>
-<span class="sourceLineNo">4639</span>      try {<a name="line.4639"></a>
-<span class="sourceLineNo">4640</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4640"></a>
-<span class="sourceLineNo">4641</span>        // if seqId is greater<a name="line.4641"></a>
-<span class="sourceLineNo">4642</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4642"></a>
-<span class="sourceLineNo">4643</span>      } catch (IOException e) {<a name="line.4643"></a>
-<span class="sourceLineNo">4644</span>        boolean skipErrors = conf.getBoolean(<a name="line.4644"></a>
-<span class="sourceLineNo">4645</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4645"></a>
-<span class="sourceLineNo">4646</span>            conf.getBoolean(<a name="line.4646"></a>
-<span class="sourceLineNo">4647</span>                "hbase.skip.errors",<a name="line.4647"></a>
-<span class="sourceLineNo">4648</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4648"></a>
-<span class="sourceLineNo">4649</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4649"></a>
-<span class="sourceLineNo">4650</span>          LOG.warn(<a name="line.4650"></a>
-<span class="sourceLineNo">4651</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4651"></a>
-<span class="sourceLineNo">4652</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4652"></a>
-<span class="sourceLineNo">4653</span>        }<a name="line.4653"></a>
-<span class="sourceLineNo">4654</span>        if (skipErrors) {<a name="line.4654"></a>
-<span class="sourceLineNo">4655</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4655"></a>
-<span class="sourceLineNo">4656</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4656"></a>
-<span class="sourceLineNo">4657</span>              + "=true so continuing. Renamed " + edits +<a name="line.4657"></a>
-<span class="sourceLineNo">4658</span>              " as " + p, e);<a name="line.4658"></a>
-<span class="sourceLineNo">4659</span>        } else {<a name="line.4659"></a>
-<span class="sourceLineNo">4660</span>          throw e;<a name="line.4660"></a>
-<span class="sourceLineNo">4661</span>        }<a name="line.4661"></a>
-<span class="sourceLineNo">4662</span>      }<a name="line.4662"></a>
-<span class="sourceLineNo">4663</span>    }<a name="line.4663"></a>
-<span class="sourceLineNo">4664</span>    return seqid;<a name="line.4664"></a>
-<span class="sourceLineNo">4665</span>  }<a name="line.4665"></a>
-<span class="sourceLineNo">4666</span><a name="line.4666"></a>
-<span class="sourceLineNo">4667</span>  /*<a name="line.4667"></a>
-<span class="sourceLineNo">4668</span>   * @param edits File of recovered edits.<a name="line.4668"></a>
-<span class="sourceLineNo">4669</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4669"></a>
-<span class="sourceLineNo">4670</span>   * must be larger than this to be replayed for each store.<a name="line.4670"></a>
-<span class="sourceLineNo">4671</span>   * @param reporter<a name="line.4671"></a>
-<span class="sourceLineNo">4672</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4672"></a>
-<span class="sourceLineNo">4673</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4673"></a>
-<span class="sourceLineNo">4674</span>   * @throws IOException<a name="line.4674"></a>
-<span class="sourceLineNo">4675</span>   */<a name="line.4675"></a>
-<span class="sourceLineNo">4676</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4676"></a>
-<span class="sourceLineNo">4677</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4677"></a>
-<span class="sourceLineNo">4678</span>    throws IOException {<a name="line.4678"></a>
-<span class="sourceLineNo">4679</span>    String msg = "Replaying edits from " + edits;<a name="line.4679"></a>
-<span class="sourceLineNo">4680</span>    LOG.info(msg);<a name="line.4680"></a>
-<span class="sourceLineNo">4681</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4681"></a>
+<span class="sourceLineNo">4565</span>    FileSystem walFS = getWalFileSystem();<a name="line.4565"></a>
+<span class="sourceLineNo">4566</span>    FileSystem rootFS = getFilesystem();<a name="line.4566"></a>
+<span class="sourceLineNo">4567</span>    Path regionDir = getWALRegionDir();<a name="line.4567"></a>
+<span class="sourceLineNo">4568</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4568"></a>
+<span class="sourceLineNo">4569</span><a name="line.4569"></a>
+<span class="sourceLineNo">4570</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4570"></a>
+<span class="sourceLineNo">4571</span>    // under the root dir even if walDir is set.<a name="line.4571"></a>
+<span class="sourceLineNo">4572</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4572"></a>
+<span class="sourceLineNo">4573</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4573"></a>
+<span class="sourceLineNo">4574</span>      filesUnderRootDir =<a name="line.4574"></a>
+<span class="sourceLineNo">4575</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4575"></a>
+<span class="sourceLineNo">4576</span>      seqid = Math.max(seqid,<a name="line.4576"></a>
+<span class="sourceLineNo">4577</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4577"></a>
+<span class="sourceLineNo">4578</span>              defaultRegionDir));<a name="line.4578"></a>
+<span class="sourceLineNo">4579</span>    }<a name="line.4579"></a>
+<span class="sourceLineNo">4580</span><a name="line.4580"></a>
+<span class="sourceLineNo">4581</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4581"></a>
+<span class="sourceLineNo">4582</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4582"></a>
+<span class="sourceLineNo">4583</span>        files, reporter, regionDir));<a name="line.4583"></a>
+<span class="sourceLineNo">4584</span><a name="line.4584"></a>
+<span class="sourceLineNo">4585</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4585"></a>
+<span class="sourceLineNo">4586</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4586"></a>
+<span class="sourceLineNo">4587</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4587"></a>
+<span class="sourceLineNo">4588</span>    }<a name="line.4588"></a>
+<span class="sourceLineNo">4589</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4589"></a>
+<span class="sourceLineNo">4590</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4590"></a>
+<span class="sourceLineNo">4591</span>      // For debugging data loss issues!<a name="line.4591"></a>
+<span class="sourceLineNo">4592</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4592"></a>
+<span class="sourceLineNo">4593</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4593"></a>
+<span class="sourceLineNo">4594</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4594"></a>
+<span class="sourceLineNo">4595</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4595"></a>
+<span class="sourceLineNo">4596</span>      for (Path file: files) {<a name="line.4596"></a>
+<span class="sourceLineNo">4597</span>        fakeStoreFiles.add(<a name="line.4597"></a>
+<span class="sourceLineNo">4598</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4598"></a>
+<span class="sourceLineNo">4599</span>      }<a name="line.4599"></a>
+<span class="sourceLineNo">4600</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4600"></a>
+<span class="sourceLineNo">4601</span>    } else {<a name="line.4601"></a>
+<span class="sourceLineNo">4602</span>      if (filesUnderRootDir != null) {<a name="line.4602"></a>
+<span class="sourceLineNo">4603</span>        for (Path file : filesUnderRootDir) {<a name="line.4603"></a>
+<span class="sourceLineNo">4604</span>          if (!rootFS.delete(file, false)) {<a name="line.4604"></a>
+<span class="sourceLineNo">4605</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4605"></a>
+<span class="sourceLineNo">4606</span>          } else {<a name="line.4606"></a>
+<span class="sourceLineNo">4607</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4607"></a>
+<span class="sourceLineNo">4608</span>          }<a name="line.4608"></a>
+<span class="sourceLineNo">4609</span>        }<a name="line.4609"></a>
+<span class="sourceLineNo">4610</span>      }<a name="line.4610"></a>
+<span class="sourceLineNo">4611</span>      for (Path file: files) {<a name="line.4611"></a>
+<span class="sourceLineNo">4612</span>        if (!walFS.delete(file, false)) {<a name="line.4612"></a>
+<span class="sourceLineNo">4613</span>          LOG.error("Failed delete of " + file);<a name="line.4613"></a>
+<span class="sourceLineNo">4614</span>        } else {<a name="line.4614"></a>
+<span class="sourceLineNo">4615</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4615"></a>
+<span class="sourceLineNo">4616</span>        }<a name="line.4616"></a>
+<span class="sourceLineNo">4617</span>      }<a name="line.4617"></a>
+<span class="sourceLineNo">4618</span>    }<a name="line.4618"></a>
+<span class="sourceLineNo">4619</span>    return seqid;<a name="line.4619"></a>
+<span class="sourceLineNo">4620</span>  }<a name="line.4620"></a>
+<span class="sourceLineNo">4621</span><a name="line.4621"></a>
+<span class="sourceLineNo">4622</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4622"></a>
+<span class="sourceLineNo">4623</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4623"></a>
+<span class="sourceLineNo">4624</span>      throws IOException {<a name="line.4624"></a>
+<span class="sourceLineNo">4625</span>    long seqid = minSeqIdForTheRegion;<a name="line.4625"></a>
+<span class="sourceLineNo">4626</span>    if (LOG.isDebugEnabled()) {<a name="line.4626"></a>
+<span class="sourceLineNo">4627</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4627"></a>
+<span class="sourceLineNo">4628</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4628"></a>
+<span class="sourceLineNo">4629</span>    }<a name="line.4629"></a>
+<span class="sourceLineNo">4630</span><a name="line.4630"></a>
+<span class="sourceLineNo">4631</span>    if (files == null || files.isEmpty()) {<a name="line.4631"></a>
+<span class="sourceLineNo">4632</span>      return minSeqIdForTheRegion;<a name="line.4632"></a>
+<span class="sourceLineNo">4633</span>    }<a name="line.4633"></a>
+<span class="sourceLineNo">4634</span><a name="line.4634"></a>
+<span class="sourceLineNo">4635</span>    for (Path edits: files) {<a name="line.4635"></a>
+<span class="sourceLineNo">4636</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4636"></a>
+<span class="sourceLineNo">4637</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4637"></a>
+<span class="sourceLineNo">4638</span>        continue;<a name="line.4638"></a>
+<span class="sourceLineNo">4639</span>      }<a name="line.4639"></a>
+<span class="sourceLineNo">4640</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4640"></a>
+<span class="sourceLineNo">4641</span><a name="line.4641"></a>
+<span class="sourceLineNo">4642</span>      long maxSeqId;<a name="line.4642"></a>
+<span class="sourceLineNo">4643</span>      String fileName = edits.getName();<a name="line.4643"></a>
+<span class="sourceLineNo">4644</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4644"></a>
+<span class="sourceLineNo">4645</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4645"></a>
+<span class="sourceLineNo">4646</span>        if (LOG.isDebugEnabled()) {<a name="line.4646"></a>
+<span class="sourceLineNo">4647</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4647"></a>
+<span class="sourceLineNo">4648</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4648"></a>
+<span class="sourceLineNo">4649</span>              + ", skipped the whole file, path=" + edits;<a name="line.4649"></a>
+<span class="sourceLineNo">4650</span>          LOG.debug(msg);<a name="line.4650"></a>
+<span class="sourceLineNo">4651</span>        }<a name="line.4651"></a>
+<span class="sourceLineNo">4652</span>        continue;<a name="line.4652"></a>
+<span class="sourceLineNo">4653</span>      }<a name="line.4653"></a>
+<span class="sourceLineNo">4654</span><a name="line.4654"></a>
+<span class="sourceLineNo">4655</span>      try {<a name="line.4655"></a>
+<span class="sourceLineNo">4656</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4656"></a>
+<span class="sourceLineNo">4657</span>        // if seqId is greater<a name="line.4657"></a>
+<span class="sourceLineNo">4658</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4658"></a>
+<span class="sourceLineNo">4659</span>      } catch (IOException e) {<a name="line.4659"></a>
+<span class="sourceLineNo">4660</span>        boolean skipErrors = conf.getBoolean(<a name="line.4660"></a>
+<span class="sourceLineNo">4661</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4661"></a>
+<span class="sourceLineNo">4662</span>            conf.getBoolean(<a name="line.4662"></a>
+<span class="sourceLineNo">4663</span>                "hbase.skip.errors",<a name="line.4663"></a>
+<span class="sourceLineNo">4664</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4664"></a>
+<span class="sourceLineNo">4665</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4665"></a>
+<span class="sourceLineNo">4666</span>          LOG.warn(<a name="line.4666"></a>
+<span class="sourceLineNo">4667</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4667"></a>
+<span class="sourceLineNo">4668</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4668"></a>
+<span class="sourceLineNo">4669</span>        }<a name="line.4669"></a>
+<span class="sourceLineNo">4670</span>        if (skipErrors) {<a name="line.4670"></a>
+<span class="sourceLineNo">4671</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4671"></a>
+<span class="sourceLineNo">4672</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4672"></a>
+<span class="sourceLineNo">4673</span>              + "=true so continuing. Renamed " + edits +<a name="line.4673"></a>
+<span class="sourceLineNo">4674</span>              " as " + p, e);<a name="line.4674"></a>
+<span class="sourceLineNo">4675</span>        } else {<a name="line.4675"></a>
+<span class="sourceLineNo">4676</span>          throw e;<a name="line.4676"></a>
+<span class="sourceLineNo">4677</span>        }<a name="line.4677"></a>
+<span class="sourceLineNo">4678</span>      }<a name="line.4678"></a>
+<span class="sourceLineNo">4679</span>    }<a name="line.4679"></a>
+<span class="sourceLineNo">4680</span>    return seqid;<a name="line.4680"></a>
+<span class="sourceLineNo">4681</span>  }<a name="line.4681"></a>
 <span class="sourceLineNo">4682</span><a name="line.4682"></a>
-<span class="sourceLineNo">4683</span>    status.setStatus("Opening recovered edits");<a name="line.4683"></a>
-<span class="sourceLineNo">4684</span>    WAL.Reader reader = null;<a name="line.4684"></a>
-<span class="sourceLineNo">4685</span>    try {<a name="line.4685"></a>
-<span class="sourceLineNo">4686</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4686"></a>
-<span class="sourceLineNo">4687</span>      long currentEditSeqId = -1;<a name="line.4687"></a>
-<span class="sourceLineNo">4688</span>      long currentReplaySeqId = -1;<a name="line.4688"></a>
-<span class="sourceLineNo">4689</span>      long firstSeqIdInLog = -1;<a name="line.4689"></a>
-<span class="sourceLineNo">4690</span>      long skippedEdits = 0;<a name="line.4690"></a>
-<span class="sourceLineNo">4691</span>      long editsCount = 0;<a name="line.4691"></a>
-<span class="sourceLineNo">4692</span>      long intervalEdits = 0;<a name="line.4692"></a>
-<span class="sourceLineNo">4693</span>      WAL.Entry entry;<a name="line.4693"></a>
-<span class="sourceLineNo">4694</span>      HStore store = null;<a name="line.4694"></a>
-<span class="sourceLineNo">4695</span>      boolean reported_once = false;<a name="line.4695"></a>
-<span class="sourceLineNo">4696</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4696"></a>
-<span class="sourceLineNo">4697</span><a name="line.4697"></a>
-<span class="sourceLineNo">4698</span>      try {<a name="line.4698"></a>
-<span class="sourceLineNo">4699</span>        // How many edits seen before we check elapsed time<a name="line.4699"></a>
-<span class="sourceLineNo">4700</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4700"></a>
-<span class="sourceLineNo">4701</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4701"></a>
-<span class="sourceLineNo">4702</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4702"></a>
-<span class="sourceLineNo">4703</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4703"></a>
-<span class="sourceLineNo">4704</span><a name="line.4704"></a>
-<span class="sourceLineNo">4705</span>        if (coprocessorHost != null) {<a name="line.4705"></a>
-<span class="sourceLineNo">4706</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4706"></a>
-<span class="sourceLineNo">4707</span>        }<a name="line.4707"></a>
-<span class="sourceLineNo">4708</span><a name="line.4708"></a>
-<span class="sourceLineNo">4709</span>        while ((entry = reader.next()) != null) {<a name="line.4709"></a>
-<span class="sourceLineNo">4710</span>          WALKey key = entry.getKey();<a name="line.4710"></a>
-<span class="sourceLineNo">4711</span>          WALEdit val = entry.getEdit();<a name="line.4711"></a>
-<span class="sourceLineNo">4712</span><a name="line.4712"></a>
-<span class="sourceLineNo">4713</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4713"></a>
-<span class="sourceLineNo">4714</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4714"></a>
-<span class="sourceLineNo">4715</span>          }<a name="line.4715"></a>
-<span class="sourceLineNo">4716</span><a name="line.4716"></a>
-<span class="sourceLineNo">4717</span>          if (reporter != null) {<a name="line.4717"></a>
-<span class="sourceLineNo">4718</span>            intervalEdits += val.size();<a name="line.4718"></a>
-<span class="sourceLineNo">4719</span>            if (intervalEdits &gt;= interval) {<a name="line.4719"></a>
-<span class="sourceLineNo">4720</span>              // Number of edits interval reached<a name="line.4720"></a>
-<span class="sourceLineNo">4721</span>              intervalEdits = 0;<a name="line.4721"></a>
-<span class="sourceLineNo">4722</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4722"></a>
-<span class="sourceLineNo">4723</span>              if (lastReport + period &lt;= cur) {<a name="line.4723"></a>
-<span class="sourceLineNo">4724</span>                status.setStatus("Replaying edits..." +<a name="line.4724"></a>
-<span class="sourceLineNo">4725</span>                    " skipped=" + skippedEdits +<a name="line.4725"></a>
-<span class="sourceLineNo">4726</span>                    " edits=" + editsCount);<a name="line.4726"></a>
-<span class="sourceLineNo">4727</span>                // Timeout reached<a name="line.4727"></a>
-<span class="sourceLineNo">4728</span>                if(!reporter.progress()) {<a name="line.4728"></a>
-<span class="sourceLineNo">4729</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4729"></a>
-<span class="sourceLineNo">4730</span>                  LOG.warn(msg);<a name="line.4730"></a>
-<span class="sourceLineNo">4731</span>                  status.abort(msg);<a name="line.4731"></a>
-<span class="sourceLineNo">4732</span>                  throw new IOException(msg);<a name="line.4732"></a>
-<span class="sourceLineNo">4733</span>                }<a name="line.4733"></a>
-<span class="sourceLineNo">4734</span>                reported_once = true;<a name="line.4734"></a>
-<span class="sourceLineNo">4735</span>                lastReport = cur;<a name="line.4735"></a>
-<span class="sourceLineNo">4736</span>              }<a name="line.4736"></a>
-<span class="sourceLineNo">4737</span>            }<a name="line.4737"></a>
-<span class="sourceLineNo">4738</span>          }<a name="line.4738"></a>
-<span class="sourceLineNo">4739</span><a name="line.4739"></a>
-<span class="sourceLineNo">4740</span>          if (firstSeqIdInLog == -1) {<a name="line.4740"></a>
-<span class="sourceLineNo">4741</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4741"></a>
-<span class="sourceLineNo">4742</span>          }<a name="line.4742"></a>
-<span class="sourceLineNo">4743</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4743"></a>
-<span class="sourceLineNo">4744</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4744"></a>
-<span class="sourceLineNo">4745</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4745"></a>
-<span class="sourceLineNo">4746</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4746"></a>
-<span class="sourceLineNo">4747</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4747"></a>
-<span class="sourceLineNo">4748</span>                + "; edit=" + val);<a name="line.4748"></a>
-<span class="sourceLineNo">4749</span>          } else {<a name="line.4749"></a>
-<span class="sourceLineNo">4750</span>            currentEditSeqId = key.getSequenceId();<a name="line.4750"></a>
-<span class="sourceLineNo">4751</span>          }<a name="line.4751"></a>
-<span class="sourceLineNo">4752</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4752"></a>
-<span class="sourceLineNo">4753</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4753"></a>
-<span class="sourceLineNo">4754</span><a name="line.4754"></a>
-<span class="sourceLineNo">4755</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4755"></a>
-<span class="sourceLineNo">4756</span>          // instead of a KeyValue.<a name="line.4756"></a>
-<span class="sourceLineNo">4757</span>          if (coprocessorHost != null) {<a name="line.4757"></a>
-<span class="sourceLineNo">4758</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4758"></a>
-<span class="sourceLineNo">4759</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4759"></a>
-<span class="sourceLineNo">4760</span>              // if bypass this wal entry, ignore it ...<a name="line.4760"></a>
-<span class="sourceLineNo">4761</span>              continue;<a name="line.4761"></a>
-<span class="sourceLineNo">4762</span>            }<a name="line.4762"></a>
-<span class="sourceLineNo">4763</span>          }<a name="line.4763"></a>
-<span class="sourceLineNo">4764</span>          boolean checkRowWithinBoundary = false;<a name="line.4764"></a>
-<span class="sourceLineNo">4765</span>          // Check this edit is for this region.<a name="line.4765"></a>
-<span class="sourceLineNo">4766</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4766"></a>
-<span class="sourceLineNo">4767</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4767"></a>
-<span class="sourceLineNo">4768</span>            checkRowWithinBoundary = true;<a name="line.4768"></a>
-<span class="sourceLineNo">4769</span>          }<a name="line.4769"></a>
+<span class="sourceLineNo">4683</span>  /*<a name="line.4683"></a>
+<span class="sourceLineNo">4684</span>   * @param edits File of recovered edits.<a name="line.4684"></a>
+<span class="sourceLineNo">4685</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4685"></a>
+<span class="sourceLineNo">4686</span>   * must be larger than this to be replayed for each store.<a name="line.4686"></a>
+<span class="sourceLineNo">4687</span>   * @param reporter<a name="line.4687"></a>
+<span class="sourceLineNo">4688</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4688"></a>
+<span class="sourceLineNo">4689</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4689"></a>
+<span class="sourceLineNo">4690</span>   * @throws IOException<a name="line.4690"></a>
+<span class="sourceLineNo">4691</span>   */<a name="line.4691"></a>
+<span class="sourceLineNo">4692</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4692"></a>
+<span class="sourceLineNo">4693</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4693"></a>
+<span class="sourceLineNo">4694</span>    throws IOException {<a name="line.4694"></a>
+<span class="sourceLineNo">4695</span>    String msg = "Replaying edits from " + edits;<a name="line.4695"></a>
+<span class="sourceLineNo">4696</span>    LOG.info(msg);<a name="line.4696"></a>
+<span class="sourceLineNo">4697</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4697"></a>
+<span class="sourceLineNo">4698</span><a name="line.4698"></a>
+<span class="sourceLineNo">4699</span>    status.setStatus("Opening recovered edits");<a name="line.4699"></a>
+<span class="sourceLineNo">4700</span>    WAL.Reader reader = null;<a name="line.4700"></a>
+<span class="sourceLineNo">4701</span>    try {<a name="line.4701"></a>
+<span class="sourceLineNo">4702</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4702"></a>
+<span class="sourceLineNo">4703</span>      long currentEditSeqId = -1;<a name="line.4703"></a>
+<span class="sourceLineNo">4704</span>      long currentReplaySeqId = -1;<a name="line.4704"></a>
+<span class="sourceLineNo">4705</span>      long firstSeqIdInLog = -1;<a name="line.4705"></a>
+<span class="sourceLineNo">4706</span>      long skippedEdits = 0;<a name="line.4706"></a>
+<span class="sourceLineNo">4707</span>      long editsCount = 0;<a name="line.4707"></a>
+<span class="sourceLineNo">4708</span>      long intervalEdits = 0;<a name="line.4708"></a>
+<span class="sourceLineNo">4709</span>      WAL.Entry entry;<a name="line.4709"></a>
+<span class="sourceLineNo">4710</span>      HStore store = null;<a name="line.4710"></a>
+<span class="sourceLineNo">4711</span>      boolean reported_once = false;<a name="line.4711"></a>
+<span class="sourceLineNo">4712</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4712"></a>
+<span class="sourceLineNo">4713</span><a name="line.4713"></a>
+<span class="sourceLineNo">4714</span>      try {<a name="line.4714"></a>
+<span class="sourceLineNo">4715</span>        // How many edits seen before we check elapsed time<a name="line.4715"></a>
+<span class="sourceLineNo">4716</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4716"></a>
+<span class="sourceLineNo">4717</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4717"></a>
+<span class="sourceLineNo">4718</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4718"></a>
+<span class="sourceLineNo">4719</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4719"></a>
+<span class="sourceLineNo">4720</span><a name="line.4720"></a>
+<span class="sourceLineNo">4721</span>        if (coprocessorHost != null) {<a name="line.4721"></a>
+<span class="sourceLineNo">4722</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4722"></a>
+<span class="sourceLineNo">4723</span>        }<a name="line.4723"></a>
+<span class="sourceLineNo">4724</span><a name="line.4724"></a>
+<span class="sourceLineNo">4725</span>        while ((entry = reader.next()) != null) {<a name="line.4725"></a>
+<span class="sourceLineNo">4726</span>          WALKey key = entry.getKey();<a name="line.4726"></a>
+<span class="sourceLineNo">4727</span>          WALEdit val = entry.getEdit();<a name="line.4727"></a>
+<span class="sourceLineNo">4728</span><a name="line.4728"></a>
+<span class="sourceLineNo">4729</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4729"></a>
+<span class="sourceLineNo">4730</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4730"></a>
+<span class="sourceLineNo">4731</span>          }<a name="line.4731"></a>
+<span class="sourceLineNo">4732</span><a name="line.4732"></a>
+<span class="sourceLineNo">4733</span>          if (reporter != null) {<a name="line.4733"></a>
+<span class="sourceLineNo">4734</span>            intervalEdits += val.size();<a name="line.4734"></a>
+<span class="sourceLineNo">4735</span>            if (intervalEdits &gt;= interval) {<a name="line.4735"></a>
+<span class="sourceLineNo">4736</span>              // Number of edits interval reached<a name="line.4736"></a>
+<span class="sourceLineNo">4737</span>              intervalEdits = 0;<a name="line.4737"></a>
+<span class="sourceLineNo">4738</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4738"></a>
+<span class="sourceLineNo">4739</span>              if (lastReport + period &lt;= cur) {<a name="line.4739"></a>
+<span class="sourceLineNo">4740</span>                status.setStatus("Replaying edits..." +<a name="line.4740"></a>
+<span class="sourceLineNo">4741</span>                    " skipped=" + skippedEdits +<a name="line.4741"></a>
+<span class="sourceLineNo">4742</span>                    " edits=" + editsCount);<a name="line.4742"></a>
+<span class="sourceLineNo">4743</span>                // Timeout reached<a name="line.4743"></a>
+<span class="sourceLineNo">4744</span>                if(!reporter.progress()) {<a name="line.4744"></a>
+<span class="sourceLineNo">4745</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4745"></a>
+<span class="sourceLineNo">4746</span>                  LOG.warn(msg);<a name="line.4746"></a>
+<span class="sourceLineNo">4747</span>                  status.abort(msg);<a name="line.4747"></a>
+<span class="sourceLineNo">4748</span>                  throw new IOException(msg);<a name="line.4748"></a>
+<span class="sourceLineNo">4749</span>                }<a name="line.4749"></a>
+<span class="sourceLineNo">4750</span>                reported_once = true;<a name="line.4750"></a>
+<span class="sourceLineNo">4751</span>                lastReport = cur;<a name="line.4751"></a>
+<span class="sourceLineNo">4752</span>              }<a name="line.4752"></a>
+<span class="sourceLineNo">4753</span>            }<a name="line.4753"></a>
+<span class="sourceLineNo">4754</span>          }<a name="line.4754"></a>
+<span class="sourceLineNo">4755</span><a name="line.4755"></a>
+<span class="sourceLineNo">4756</span>          if (firstSeqIdInLog == -1) {<a name="line.4756"></a>
+<span class="sourceLineNo">4757</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4757"></a>
+<span class="sourceLineNo">4758</span>          }<a name="line.4758"></a>
+<span class="sourceLineNo">4759</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4759"></a>
+<span class="sourceLineNo">4760</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4760"></a>
+<span class="sourceLineNo">4761</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4761"></a>
+<span class="sourceLineNo">4762</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4762"></a>
+<span class="sourceLineNo">4763</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4763"></a>
+<span class="sourceLineNo">4764</span>                + "; edit=" + val);<a name="line.4764"></a>
+<span class="sourceLineNo">4765</span>          } else {<a name="line.4765"></a>
+<span class="sourceLineNo">4766</span>            currentEditSeqId = key.getSequenceId();<a name="line.4766"></a>
+<span class="sourceLineNo">4767</span>          }<a name="line.4767"></a>
+<span class="sourceLineNo">4768</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4768"></a>
+<span class="sourceLineNo">4769</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4769"></a>
 <span class="sourceLineNo">4770</span><a name="line.4770"></a>
-<span class="sourceLineNo">4771</span>          boolean flush = false;<a name="line.4771"></a>
-<span class="sourceLineNo">4772</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4772"></a>
-<span class="sourceLineNo">4773</span>          for (Cell cell: val.getCells()) {<a name="line.4773"></a>
-<span class="sourceLineNo">4774</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4774"></a>
-<span class="sourceLineNo">4775</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4775"></a>
-<span class="sourceLineNo">4776</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4776"></a>
-<span class="sourceLineNo">4777</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4777"></a>
-<span class="sourceLineNo">4778</span>              if (!checkRowWithinBoundary) {<a name="line.4778"></a>
-<span class="sourceLineNo">4779</span>                //this is a special edit, we should handle it<a name="line.4779"></a>
-<span class="sourceLineNo">4780</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4780"></a>
-<span class="sourceLineNo">4781</span>                if (compaction != null) {<a name="line.4781"></a>
-<span class="sourceLineNo">4782</span>                  //replay the compaction<a name="line.4782"></a>
-<span class="sourceLineNo">4783</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4783"></a>
-<span class="sourceLineNo">4784</span>                }<a name="line.4784"></a>
-<span class="sourceLineNo">4785</span>              }<a name="line.4785"></a>
-<span class="sourceLineNo">4786</span>              skippedEdits++;<a name="line.4786"></a>
-<span class="sourceLineNo">4787</span>              continue;<a name="line.4787"></a>
-<span class="sourceLineNo">4788</span>            }<a name="line.4788"></a>
-<span class="sourceLineNo">4789</span>            // Figure which store the edit is meant for.<a name="line.4789"></a>
-<span class="sourceLineNo">4790</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4790"></a>
-<span class="sourceLineNo">4791</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4791"></a>
-<span class="sourceLineNo">4792</span>              store = getStore(cell);<a name="line.4792"></a>
-<span class="sourceLineNo">4793</span>            }<a name="line.4793"></a>
-<span class="sourceLineNo">4794</span>            if (store == null) {<a name="line.4794"></a>
-<span class="sourceLineNo">4795</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4795"></a>
-<span class="sourceLineNo">4796</span>              // crash and redeploy?<a name="line.4796"></a>
-<span class="sourceLineNo">4797</span>              LOG.warn("No family for " + cell);<a name="line.4797"></a>
-<span class="sourceLineNo">4798</span>              skippedEdits++;<a name="line.4798"></a>
-<span class="sourceLineNo">4799</span>              continue;<a name="line.4799"></a>
-<span class="sourceLineNo">4800</span>            }<a name="line.4800"></a>
-<span class="sourceLineNo">4801</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4801"></a>
-<span class="sourceLineNo">4802</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4802"></a>
-<span class="sourceLineNo">4803</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4803"></a>
-<span class="sourceLineNo">4804</span>              skippedEdits++;<a name="line.4804"></a>
-<span class="sourceLineNo">4805</span>              continue;<a name="line.4805"></a>
-<span class="sourceLineNo">4806</span>            }<a name="line.4806"></a>
-<span class="sourceLineNo">4807</span>            // Now, figure if we should skip this edit.<a name="line.4807"></a>
-<span class="sourceLineNo">4808</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4808"></a>
-<span class="sourceLineNo">4809</span>                .getName())) {<a name="line.4809"></a>
-<span class="sourceLineNo">4810</span>              skippedEdits++;<a name="line.4810"></a>
-<span class="sourceLineNo">4811</span>              continue;<a name="line.4811"></a>
-<span class="sourceLineNo">4812</span>            }<a name="line.4812"></a>
-<span class="sourceLineNo">4813</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4813"></a>
-<span class="sourceLineNo">4814</span><a name="line.4814"></a>
-<span class="sourceLineNo">4815</span>            restoreEdit(store, cell, memStoreSizing);<a name="line.4815"></a>
-<span class="sourceLineNo">4816</span>            editsCount++;<a name="line.4816"></a>
-<span class="sourceLineNo">4817</span>          }<a name="line.4817"></a>
-<span class="sourceLineNo">4818</span>          MemStoreSize mss = memStoreSizing.getMemStoreSize();<a name="line.4818"></a>
-<span class="sourceLineNo">4819</span>          incMemStoreSize(mss);<a name="line.4819"></a>
-<span class="sourceLineNo">4820</span>          flush = isFlushSize(this.memStoreSizing.getMemStoreSize());<a name="line.4820"></a>
-<span class="sourceLineNo">4821</span>          if (flush) {<a name="line.4821"></a>
-<span class="sourceLineNo">4822</span>            internalFlushcache(null, currentEditSeqId, stores.values(), status, false,<a name="line.4822"></a>
-<span class="sourceLineNo">4823</span>              FlushLifeCycleTracker.DUMMY);<a name="line.4823"></a>
-<span class="sourceLineNo">4824</span>          }<a name="line.4824"></a>
-<span class="sourceLineNo">4825</span><a name="line.4825"></a>
-<span class="sourceLineNo">4826</span>          if (coprocessorHost != null) {<a name="line.4826"></a>
-<span class="sourceLineNo">4827</span>            coprocessorHost.postWALRestore(this.getRegionInfo(), key, val);<a name="line.4827"></a>
-<span class="sourceLineNo">4828</span>          }<a name="line.4828"></a>
-<span class="sourceLineNo">4829</span>        }<a name="line.4829"></a>
+<span class="sourceLineNo">4771</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4771"></a>
+<span class="sourceLineNo">4772</span>          // instead of a KeyValue.<a name="line.4772"></a>
+<span class="sourceLineNo">4773</span>          if (coprocessorHost != null) {<a name="line.4773"></a>
+<span class="sourceLineNo">4774</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4774"></a>
+<span class="sourceLineNo">4775</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4775"></a>
+<span class="sourceLineNo">4776</span>              // if bypass this wal entry, ignore it ...<a name="line.4776"></a>
+<span class="sourceLineNo">4777</span>              continue;<a name="line.4777"></a>
+<span class="sourceLineNo">4778</span>            }<a name="line.4778"></a>
+<span class="sourceLineNo">4779</span>          }<a name="line.4779"></a>
+<span class="sourceLineNo">4780</span>          boolean checkRowWithinBoundary = false;<a name="line.4780"></a>
+<span class="sourceLineNo">4781</span>          // Check this edit is for this region.<a name="line.4781"></a>
+<span class="sourceLineNo">4782</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4782"></a>
+<span class="sourceLineNo">4783</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4783"></a>
+<span class="sourceLineNo">4784</span>            checkRowWithinBoundary = true;<a name="line.4784"></a>
+<span class="sourceLineNo">4785</span>          }<a name="line.4785"></a>
+<span class="sourceLineNo">4786</span><a name="line.4786"></a>
+<span class="sourceLineNo">4787</span>          boolean flush = false;<a name="line.4787"></a>
+<span class="sourceLineNo">4788</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4788"></a>
+<span class="sourceLineNo">4789</span>          for (Cell cell: val.getCells()) {<a name="line.4789"></a>
+<span class="sourceLineNo">4790</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4790"></a>
+<span class="sourceLineNo">4791</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4791"></a>
+<span class="sourceLineNo">4792</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4792"></a>
+<span class="sourceLineNo">4793</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4793"></a>
+<span class="sourceLineNo">4794</span>              if (!checkRowWithinBoundary) {<a name="line.4794"></a>
+<span class="sourceLineNo">4795</span>                //this is a special edit, we should handle it<a name="line.4795"></a>
+<span class="sourceLineNo">4796</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4796"></a>
+<span class="sourceLineNo">4797</span>                if (compaction != null) {<a name="line.4797"></a>
+<span class="sourceLineNo">4798</span>                  //replay the compaction<a name="line.4798"></a>
+<span class="sourceLineNo">4799</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4799"></a>
+<span class="sourceLineNo">4800</span>                }<a name="line.4800"></a>
+<span class="sourceLineNo">4801</span>              }<a name="line.4801"></a>
+<span class="sourceLineNo">4802</span>              skippedEdits++;<a name="line.4802"></a>
+<span class="sourceLineNo">4803</span>              continue;<a name="line.4803"></a>
+<span class="sourceLineNo">4804</span>            }<a name="line.4804"></a>
+<span class="sourceLineNo">4805</span>            // Figure which store the edit is meant for.<a name="line.4805"></a>
+<span class="sourceLineNo">4806</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4806"></a>
+<span class="sourceLineNo">4807</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4807"></a>
+<span class="sourceLineNo">4808</span>              store = getStore(cell);<a name="line.4808"></a>
+<span class="sourceLineNo">4809</span>            }<a name="line.4809"></a>
+<span class="sourceLineNo">4810</span>            if (store == null) {<a name="line.4810"></a>
+<span class="sourceLineNo">4811</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4811"></a>
+<span class="sourceLineNo">4812</span>              // crash and redeploy?<a name="line.4812"></a>
+<span class="sourceLineNo">4813</span>              LOG.warn("No family for " + cell);<a name="line.4813"></a>
+<span class="sourceLineNo">4814</span>              skippedEdits++;<a name="line.4814"></a>
+<span class="sourceLineNo">4815</span>              continue;<a name="line.4815"></a>
+<span class="sourceLineNo">4816</span>            }<a name="line.4816"></a>
+<span class="sourceLineNo">4817</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4817"></a>
+<span class="sourceLineNo">4818</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4818"></a>
+<span class="sourceLineNo">4819</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4819"></a>
+<span class="sourceLineNo">4820</span>              skippedEdits++;<a name="line.4820"></a>
+<span class="sourceLineNo">4821</span>              continue;<a name="line.4821"></a>
+<span class="sourceLineNo">4822</span>            }<a name="line.4822"></a>
+<span class="sourceLineNo">4823</span>            // Now, figure if we should skip this edit.<a name="line.4823"></a>
+<span class="sourceLineNo">4824</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4824"></a>
+<span class="sourceLineNo">4825</span>                .getName())) {<a name="line.4825"></a>
+<span class="sourceLineNo">4826</span>              skippedEdits++;<a name="line.4826"></a>
+<span class="sourceLineNo">4827</span>              continue;<a name="line.4827"></a>
+<span class="sourceLineNo">4828</span>            }<a name="line.4828"></a>
+<span class="sourceLineNo">4829</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4829"></a>
 <span class="sourceLineNo">4830</span><a name="line.4830"></a>
-<span class="sourceLineNo">4831</span>        if (coprocessorHost != null) {<a name="line.4831"></a>
-<span class="sourceLineNo">4832</span>          coprocessorHost.postReplayWALs(this.getRegionInfo(), edits);<a name="line.4832"></a>
-<span class="sourceLineNo">4833</span>        }<a name="line.4833"></a>
-<span class="sourceLineNo">4834</span>      } catch (EOFException eof) {<a name="line.4834"></a>
-<span class="sourceLineNo">4835</span>        Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4835"></a>
-<span class="sourceLineNo">4836</span>        msg = "EnLongAddered EOF. Most likely due to Master failure during " +<a name="line.4836"></a>
-<span class="sourceLineNo">4837</span>            "wal splitting, so we have this data in another edit.  " +<a name="line.4837"></a>
-<span class="sourceLineNo">4838</span>            "Continuing, but renaming " + edits + " as " + p;<a name="line.4838"></a>
-<span class="sourceLineNo">4839</span>        LOG.warn(msg, eof);<a name="line.4839"></a>
-<span class="sourceLineNo">4840</span>        status.abort(msg);<a name="line.4840"></a>
-<span class="sourceLineNo">4841</span>      } catch (IOException ioe) {<a name="line.4841"></a>
-<span class="sourceLineNo">4842</span>        // If the IOE resulted from bad file format,<a name="line.4842"></a>
-<span class="sourceLineNo">4843</span>        // then this problem is idempotent and retrying won't help<a name="line.4843"></a>
-<span class="sourceLineNo">4844</span>        if (ioe.getCause() instanceof ParseException) {<a name="line.4844"></a>
-<span class="sourceLineNo">4845</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4845"></a>
-<span class="sourceLineNo">4846</span>          msg = "File corruption enLongAddered!  " +<a name="line.4846"></a>
-<span class="sourceLineNo">4847</span>              "Continuing, but renaming " + edits + " as " + p;<a name="line.4847"></a>
-<span class="sourceLineNo">4848</span>          LOG.warn(msg, ioe);<a name="line.4848"></a>
-<span class="sourceLineNo">4849</span>          status.setStatus(msg);<a name="line.4849"></a>
-<span class="sourceLineNo">4850</span>        } else {<a name="line.4850"></a>
-<span class="sourceLineNo">4851</span>          status.abort(StringUtils.stringifyException(ioe));<a name="line.4851"></a>
-<span class="sourceLineNo">4852</span>          // other IO errors may be transient (bad network connection,<a name="line.4852"></a>
-<span class="sourceLineNo">4853</span>          // checksum exception on one datanode, etc).  throw &amp; retry<a name="line.4853"></a>
-<span class="sourceLineNo">4854</span>          throw ioe;<a name="line.4854"></a>
-<span class="sourceLineNo">4855</span>        }<a name="line.4855"></a>
-<span class="sourceLineNo">4856</span>      }<a name="line.4856"></a>
-<span class="sourceLineNo">4857</span>      if (reporter != null &amp;&amp; !reported_once) {<a name="line.4857"></a>
-<span class="sourceLineNo">4858</span>        reporter.progress();<a name="line.4858"></a>
-<span class="sourceLineNo">4859</span>      }<a name="line.4859"></a>
-<span class="sourceLineNo">4860</span>      msg = "Applied " + editsCount + ", skipped " + skippedEdits +<a name="line.4860"></a>
-<span class="sourceLineNo">4861</span>        ", firstSequenceIdInLog=" + firstSeqIdInLog +<a name="line.4861"></a>
-<span class="sourceLineNo">4862</span>        ", maxSequenceIdInLog=" + currentEditSeqId + ", path=" + edits;<a name="line.4862"></a>
-<span class="sourceLineNo">4863</span>      status.markComplete(msg);<a name="line.4863"></a>
-<span class="sourceLineNo">4864</span>      LOG.debug(msg);<a name="line.4864"></a>
-<span class="sourceLineNo">4865</span>      return currentEditSeqId;<a name="line.4865"></a>
-<span class="sourceLineNo">4866</span>    } finally {<a name="line.4866"></a>
-<span class="sourceLineNo">4867</span>      status.cleanup();<a name="line.4867"></a>
-<span class="sourceLineNo">4868</span>      if (reader != null) {<a name="line.4868"></a>
-<span class="sourceLineNo">4869</span>         reader.close();<a name="line.4869"></a>
-<span class="sourceLineNo">4870</span>      }<a name="line.4870"></a>
-<span class="sourceLineNo">4871</span>    }<a name="line.4871"></a>
-<span class="sourceLineNo">4872</span>  }<a name="line.4872"></a>
-<span class="sourceLineNo">4873</span><a name="line.4873"></a>
-<span class="sourceLineNo">4874</span>  /**<a name="line.4874"></a>
-<span class="sourceLineNo">4875</span>   * Call to complete a compaction. Its for the case where we find in the WAL a compaction<a name="line.4875"></a>
-<span class="sourceLineNo">4876</span>   * that was not finished.  We could find one recovering a WAL after a regionserver crash.<a name="line.4876"></a>
-<span class="sourceLineNo">4877</span>   * See HBASE-2331.<a name="line.4877"></a>
-<span class="sourceLineNo">4878</span>   */<a name="line.4878"></a>
-<span class="sourceLineNo">4879</span>  void replayWALCompactionMarker(CompactionDescriptor compaction, boolean pickCompactionFiles,<a name="line.4879"></a>
-<span class="sourceLineNo">4880</span>      boolean removeFiles, long replaySeqId)<a name="line.4880"></a>
-<span class="sourceLineNo">4881</span>      throws IOException {<a name="line.4881"></a>
-<span class="sourceLineNo">4882</span>    try {<a name="line.4882"></a>
-<span class="sourceLineNo">4883</span>      checkTargetRegion(compaction.getEncodedRegionName().toByteArray(),<a name="line.4883"></a>
-<span class="sourceLineNo">4884</span>        "Compaction marker from WAL ", compaction);<a name="line.4884"></a>
-<span class="sourceLineNo">4885</span>    } catch (WrongRegionException wre) {<a name="line.4885"></a>
-<span class="sourceLineNo">4886</span>      if (RegionReplicaUtil.isDefaultReplica(this.getRegionInfo())) {<a name="line.4886"></a>
-<span class="sourceLineNo">4887</span>        // skip the compaction marker since it is not for this region<a name="line.4887"></a>
-<span class="sourceLineNo">4888</span>        return;<a name="line.4888"></a>
-<span class="sourceLineNo">4889</span>      }<a name="line.4889"></a>
-<span class="sourceLineNo">4890</span>      throw wre;<a name="line.4890"></a>
-<span class="sourceLineNo">4891</span>    }<a name="line.4891"></a>
-<span class="sourceLineNo">4892</span><a name="line.4892"></a>
-<span class="sourceLineNo">4893</span>    synchronized (writestate) {<a name="line.4893"></a>
-<span class="sourceLineNo">4894</span>      if (replaySeqId &lt; lastReplayedOpenRegionSeqId) {<a name="line.4894"></a>
-<span class="sourceLineNo">4895</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4895"></a>
-<span class="sourceLineNo">4896</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4896"></a>
-<span class="sourceLineNo">4897</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4897"></a>
-<span class="sourceLineNo">4898</span>            + "lastReplayedOpenRegionSeqId of " + lastReplayedOpenRegionSeqId);<a name="line.4898"></a>
-<span class="sourceLineNo">4899</span>        return;<a name="line.4899"></a>
-<span class="sourceLineNo">4900</span>      }<a name="line.4900"></a>
-<span class="sourceLineNo">4901</span>      if (replaySeqId &lt; lastReplayedCompactionSeqId) {<a name="line.4901"></a>
-<span class="sourceLineNo">4902</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4902"></a>
-<span class="sourceLineNo">4903</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4903"></a>
-<span class="sourceLineNo">4904</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4904"></a>
-<span class="sourceLineNo">4905</span>            + "lastReplayedCompactionSeqId of " + lastReplayedCompactionSeqId);<a name="line.4905"></a>
-<span class="sourceLineNo">4906</span>        return;<a name="line.4906"></a>
-<span class="sourceLineNo">4907</span>      } else {<a name="line.4907"></a>
-<span class="sourceLineNo">4908</span>        lastReplayedCompactionSeqId = replaySeqId;<a 

<TRUNCATED>

[27/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/org/apache/hadoop/hbase/regionserver/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/package-use.html b/devapidocs/org/apache/hadoop/hbase/regionserver/package-use.html
index e9cc3ea..52add23 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-use.html
@@ -1259,35 +1259,40 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/InvalidMutationDurabilityException.html#org.apache.hadoop.hbase.regionserver">InvalidMutationDurabilityException</a>
+<div class="block">Thrown if Mutation's <a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><code>Durability</code></a> is skip wal but table need replication.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/KeyValueHeap.html#org.apache.hadoop.hbase.regionserver">KeyValueHeap</a>
 <div class="block">Implements a heap merge across any number of KeyValueScanners.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/KeyValueHeap.KVScannerComparator.html#org.apache.hadoop.hbase.regionserver">KeyValueHeap.KVScannerComparator</a>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/KeyValueScanner.html#org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>
 <div class="block">Scanner that returns the next KeyValue.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/LastSequenceId.html#org.apache.hadoop.hbase.regionserver">LastSequenceId</a>
 <div class="block">Last flushed sequence Ids for the regions and their stores on region server</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/LeaseException.html#org.apache.hadoop.hbase.regionserver">LeaseException</a>
 <div class="block">Reports a problem with a lease</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/LeaseListener.html#org.apache.hadoop.hbase.regionserver">LeaseListener</a>
 <div class="block">LeaseListener is an interface meant to be implemented by users of the Leases
  class.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/Leases.html#org.apache.hadoop.hbase.regionserver">Leases</a>
 <div class="block">Leases
 
@@ -1295,45 +1300,45 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
  clients that occasionally send heartbeats.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/Leases.Lease.html#org.apache.hadoop.hbase.regionserver">Leases.Lease</a>
 <div class="block">This class tracks a single Lease.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/Leases.LeaseStillHeldException.html#org.apache.hadoop.hbase.regionserver">Leases.LeaseStillHeldException</a>
 <div class="block">Thrown if we are asked to create a lease but lease on passed name already
  exists.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/LogRoller.html#org.apache.hadoop.hbase.regionserver">LogRoller</a>
 <div class="block">Runs periodically to determine if the WAL should be rolled.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MemStore.html#org.apache.hadoop.hbase.regionserver">MemStore</a>
 <div class="block">The MemStore holds in-memory modifications to the Store.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MemStoreCompactionStrategy.html#org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy</a>
 <div class="block">MemStoreCompactionStrategy is the root of a class hierarchy which defines the strategy for
  choosing the next action to apply in an (in-memory) memstore compaction.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MemStoreCompactionStrategy.Action.html#org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>
 <div class="block">Types of actions to be done on the pipeline upon MemStoreCompaction invocation.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MemStoreCompactor.html#org.apache.hadoop.hbase.regionserver">MemStoreCompactor</a>
 <div class="block">The ongoing MemStore Compaction manager, dispatches a solo running compaction and interrupts
  the compaction if requested.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MemStoreFlusher.html#org.apache.hadoop.hbase.regionserver">MemStoreFlusher</a>
 <div class="block">Thread that flushes cache on request
 
@@ -1342,23 +1347,23 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
  sleep time which is invariant.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MemStoreFlusher.FlushHandler.html#org.apache.hadoop.hbase.regionserver">MemStoreFlusher.FlushHandler</a>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MemStoreFlusher.FlushQueueEntry.html#org.apache.hadoop.hbase.regionserver">MemStoreFlusher.FlushQueueEntry</a>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MemStoreFlusher.FlushRegionEntry.html#org.apache.hadoop.hbase.regionserver">MemStoreFlusher.FlushRegionEntry</a>
 <div class="block">Datastructure used in the flush queue.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MemStoreLAB.html#org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>
 <div class="block">A memstore-local allocation buffer.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MemStoreSegmentsIterator.html#org.apache.hadoop.hbase.regionserver">MemStoreSegmentsIterator</a>
 <div class="block">The MemStoreSegmentsIterator is designed to perform one iteration over given list of segments
  For another iteration new instance of MemStoreSegmentsIterator needs to be created
@@ -1366,298 +1371,298 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
  in each period of time</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MemStoreSize.html#org.apache.hadoop.hbase.regionserver">MemStoreSize</a>
 <div class="block">Data structure of three longs.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MemStoreSizing.html#org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>
 <div class="block">Accounting of current heap and data sizes.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MemStoreSnapshot.html#org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a>
 <div class="block">Holds details of the snapshot taken on a MemStore.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MetricsHeapMemoryManager.html#org.apache.hadoop.hbase.regionserver">MetricsHeapMemoryManager</a>
 <div class="block">This class is for maintaining the various regionserver's heap memory manager statistics and
  publishing them through the metrics interfaces.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MetricsHeapMemoryManagerSource.html#org.apache.hadoop.hbase.regionserver">MetricsHeapMemoryManagerSource</a>
 <div class="block">This interface will be implemented by a MetricsSource that will export metrics from
  HeapMemoryManager in RegionServer into the hadoop metrics system.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MetricsHeapMemoryManagerSourceImpl.html#org.apache.hadoop.hbase.regionserver">MetricsHeapMemoryManagerSourceImpl</a>
 <div class="block">Hadoop2 implementation of MetricsHeapMemoryManagerSource.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MetricsRegion.html#org.apache.hadoop.hbase.regionserver">MetricsRegion</a>
 <div class="block">This is the glue between the HRegion and whatever hadoop shim layer
  is loaded (hbase-hadoop1-compat or hbase-hadoop2-compat).</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MetricsRegionAggregateSource.html#org.apache.hadoop.hbase.regionserver">MetricsRegionAggregateSource</a>
 <div class="block">This interface will be implemented by a MetricsSource that will export metrics from
  multiple regions into the hadoop metrics system.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MetricsRegionAggregateSourceImpl.html#org.apache.hadoop.hbase.regionserver">MetricsRegionAggregateSourceImpl</a>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MetricsRegionServer.html#org.apache.hadoop.hbase.regionserver">MetricsRegionServer</a>
 <div class="block">
  This class is for maintaining the various regionserver statistics
  and publishing them through the metrics interfaces.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MetricsRegionServerQuotaSource.html#org.apache.hadoop.hbase.regionserver">MetricsRegionServerQuotaSource</a>
 <div class="block">A collection of exposed metrics for space quotas from an HBase RegionServer.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MetricsRegionServerSource.html#org.apache.hadoop.hbase.regionserver">MetricsRegionServerSource</a>
 <div class="block">Interface for classes that expose metrics about the regionserver.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MetricsRegionServerSourceFactory.html#org.apache.hadoop.hbase.regionserver">MetricsRegionServerSourceFactory</a>
 <div class="block">Interface of a factory to create Metrics Sources used inside of regionservers.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html#org.apache.hadoop.hbase.regionserver">MetricsRegionServerSourceFactoryImpl.FactoryStorage</a>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MetricsRegionServerWrapper.html#org.apache.hadoop.hbase.regionserver">MetricsRegionServerWrapper</a>
 <div class="block">This is the interface that will expose RegionServer information to hadoop1/hadoop2
  implementations of the MetricsRegionServerSource.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MetricsRegionSource.html#org.apache.hadoop.hbase.regionserver">MetricsRegionSource</a>
 <div class="block">This interface will be implemented to allow single regions to push metrics into
  MetricsRegionAggregateSource that will in turn push data to the Hadoop metrics system.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MetricsRegionWrapper.html#org.apache.hadoop.hbase.regionserver">MetricsRegionWrapper</a>
 <div class="block">Interface of class that will wrap an HRegion and export numbers so they can be
  used in MetricsRegionSource</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MetricsRegionWrapperImpl.html#org.apache.hadoop.hbase.regionserver">MetricsRegionWrapperImpl</a>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MetricsTable.html#org.apache.hadoop.hbase.regionserver">MetricsTable</a>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MetricsTableAggregateSource.html#org.apache.hadoop.hbase.regionserver">MetricsTableAggregateSource</a>
 <div class="block">This interface will be implemented by a MetricsSource that will export metrics from
  multiple regions of a table into the hadoop metrics system.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MetricsTableAggregateSourceImpl.html#org.apache.hadoop.hbase.regionserver">MetricsTableAggregateSourceImpl</a>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MetricsTableLatencies.html#org.apache.hadoop.hbase.regionserver">MetricsTableLatencies</a>
 <div class="block">Latency metrics for a specific table in a RegionServer.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MetricsTableLatenciesImpl.TableHistograms.html#org.apache.hadoop.hbase.regionserver">MetricsTableLatenciesImpl.TableHistograms</a>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MetricsTableSource.html#org.apache.hadoop.hbase.regionserver">MetricsTableSource</a>
 <div class="block">This interface will be implemented to allow region server to push table metrics into
  MetricsRegionAggregateSource that will in turn push data to the Hadoop metrics system.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MetricsTableWrapperAggregate.html#org.apache.hadoop.hbase.regionserver">MetricsTableWrapperAggregate</a>
 <div class="block">Interface of class that will wrap a MetricsTableSource and export numbers so they can be
  used in MetricsTableSource</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MetricsTableWrapperAggregateImpl.MetricsTableValues.html#org.apache.hadoop.hbase.regionserver">MetricsTableWrapperAggregateImpl.MetricsTableValues</a>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MiniBatchOperationInProgress.html#org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>
 <div class="block">Wraps together the mutations which are applied as a batch to the region and their operation
  status and WALEdits.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MultiVersionConcurrencyControl.html#org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl</a>
 <div class="block">Manages the read/write consistency.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MultiVersionConcurrencyControl.WriteEntry.html#org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>
 <div class="block">Write number and whether write has completed given out at start of a write transaction.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MutableOnlineRegions.html#org.apache.hadoop.hbase.regionserver">MutableOnlineRegions</a>
 <div class="block">Interface to Map of online regions.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/MutableSegment.html#org.apache.hadoop.hbase.regionserver">MutableSegment</a>
 <div class="block">A mutable segment in memstore, specifically the active segment.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/NonLazyKeyValueScanner.html#org.apache.hadoop.hbase.regionserver">NonLazyKeyValueScanner</a>
 <div class="block">A "non-lazy" scanner which always does a real seek operation.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/NonReversedNonLazyKeyValueScanner.html#org.apache.hadoop.hbase.regionserver">NonReversedNonLazyKeyValueScanner</a>
 <div class="block">A "non-reversed &amp; non-lazy" scanner which does not support backward scanning
  and always does a real seek operation.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/NoSuchColumnFamilyException.html#org.apache.hadoop.hbase.regionserver">NoSuchColumnFamilyException</a>
 <div class="block">Thrown if request for nonexistent column family.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/OnlineRegions.html#org.apache.hadoop.hbase.regionserver">OnlineRegions</a>
 <div class="block">Provides read-only access to the Regions presently online on the
  current RegionServer</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/OperationStatus.html#org.apache.hadoop.hbase.regionserver">OperationStatus</a>
 <div class="block">This class stores the Operation status code and the exception message
  that occurs in case of failure of operations like put, delete, etc.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/Region.html#org.apache.hadoop.hbase.regionserver">Region</a>
 <div class="block">Region is a subset of HRegion with operations required for the <a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessor.html" title="interface in org.apache.hadoop.hbase.coprocessor"><code>Coprocessors</code></a>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/Region.Operation.html#org.apache.hadoop.hbase.regionserver">Region.Operation</a>
 <div class="block">Operation enum is used in <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#startRegionOperation--"><code>Region.startRegionOperation()</code></a> and elsewhere to provide
  context for various checks.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/Region.RowLock.html#org.apache.hadoop.hbase.regionserver">Region.RowLock</a>
 <div class="block">Row lock held by a given thread.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/RegionCoprocessorHost.html#org.apache.hadoop.hbase.regionserver">RegionCoprocessorHost</a>
 <div class="block">Implements the coprocessor environment and runtime support for coprocessors
  loaded within a <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver"><code>Region</code></a>.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/RegionCoprocessorHost.RegionEnvironment.html#org.apache.hadoop.hbase.regionserver">RegionCoprocessorHost.RegionEnvironment</a>
 <div class="block">Encapsulation of the environment of each coprocessor</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/RegionCoprocessorHost.TableCoprocessorAttribute.html#org.apache.hadoop.hbase.regionserver">RegionCoprocessorHost.TableCoprocessorAttribute</a>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/RegionScanner.html#org.apache.hadoop.hbase.regionserver">RegionScanner</a>
 <div class="block">RegionScanner describes iterators over rows in an HRegion.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/RegionServerAccounting.html#org.apache.hadoop.hbase.regionserver">RegionServerAccounting</a>
 <div class="block">RegionServerAccounting keeps record of some basic real time information about
  the Region Server.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/RegionServerCoprocessorHost.html#org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost</a>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/RegionServerCoprocessorHost.RegionServerEnvironment.html#org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost.RegionServerEnvironment</a>
 <div class="block">Coprocessor environment extension providing access to region server
  related services.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/RegionServerServices.html#org.apache.hadoop.hbase.regionserver">RegionServerServices</a>
 <div class="block">A curated subset of services provided by <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver"><code>HRegionServer</code></a>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/RegionServerServices.PostOpenDeployContext.html#org.apache.hadoop.hbase.regionserver">RegionServerServices.PostOpenDeployContext</a>
 <div class="block">Context for postOpenDeployTasks().</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/RegionServerServices.RegionStateTransitionContext.html#org.apache.hadoop.hbase.regionserver">RegionServerServices.RegionStateTransitionContext</a>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/RegionServerStoppedException.html#org.apache.hadoop.hbase.regionserver">RegionServerStoppedException</a>
 <div class="block">Thrown by the region server when it is in shutting down state.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/RegionServerTableMetrics.html#org.apache.hadoop.hbase.regionserver">RegionServerTableMetrics</a>
 <div class="block">Captures operation metrics by table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/RegionServicesForStores.html#org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a>
 <div class="block">Services a Store needs from a Region.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/RegionSplitPolicy.html#org.apache.hadoop.hbase.regionserver">RegionSplitPolicy</a>
 <div class="block">A split policy determines when a Region should be split.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/RemoteProcedureResultReporter.html#org.apache.hadoop.hbase.regionserver">RemoteProcedureResultReporter</a>
 <div class="block">A thread which calls <code>reportProcedureDone</code> to tell master the result of a remote procedure.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/ReplicationService.html#org.apache.hadoop.hbase.regionserver">ReplicationService</a>
 <div class="block">Gateway to Cluster Replication.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/ReplicationSinkService.html#org.apache.hadoop.hbase.regionserver">ReplicationSinkService</a>
 <div class="block">A sink for a replication stream has to expose this service.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/ReplicationSourceService.html#org.apache.hadoop.hbase.regionserver">ReplicationSourceService</a>
 <div class="block">A source for a replication stream has to expose this service.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/ReversedStoreScanner.html#org.apache.hadoop.hbase.regionserver">ReversedStoreScanner</a>
 <div class="block">ReversedStoreScanner extends from StoreScanner, and is used to support
  reversed scanning.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/RowProcessor.html#org.apache.hadoop.hbase.regionserver">RowProcessor</a>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0. For customization, use
@@ -1665,244 +1670,244 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/RpcSchedulerFactory.html#org.apache.hadoop.hbase.regionserver">RpcSchedulerFactory</a>
 <div class="block">A factory class that constructs an <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc"><code>RpcScheduler</code></a>.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/RSRpcServices.html#org.apache.hadoop.hbase.regionserver">RSRpcServices</a>
 <div class="block">Implements the regionserver RPC services.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/RSRpcServices.LogDelegate.html#org.apache.hadoop.hbase.regionserver">RSRpcServices.LogDelegate</a>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/RSRpcServices.RegionScannerHolder.html#org.apache.hadoop.hbase.regionserver">RSRpcServices.RegionScannerHolder</a>
 <div class="block">Holder class which holds the RegionScanner, nextCallSeq and RpcCallbacks together.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/RSRpcServices.RegionScannersCloseCallBack.html#org.apache.hadoop.hbase.regionserver">RSRpcServices.RegionScannersCloseCallBack</a>
 <div class="block">An RpcCallBack that creates a list of scanners that needs to perform callBack operation on
  completion of multiGets.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/ScanInfo.html#org.apache.hadoop.hbase.regionserver">ScanInfo</a>
 <div class="block">Immutable information for scans over a store.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/ScannerContext.html#org.apache.hadoop.hbase.regionserver">ScannerContext</a>
 <div class="block">ScannerContext instances encapsulate limit tracking AND progress towards those limits during
  invocations of <a href="../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html#next-java.util.List-"><code>InternalScanner.next(java.util.List)</code></a> and
  <a href="../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html#next-java.util.List-"><code>InternalScanner.next(java.util.List)</code></a>.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/ScannerContext.Builder.html#org.apache.hadoop.hbase.regionserver">ScannerContext.Builder</a>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/ScannerContext.LimitFields.html#org.apache.hadoop.hbase.regionserver">ScannerContext.LimitFields</a>
 <div class="block">The different fields that can be used as limits in calls to
  <a href="../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html#next-java.util.List-"><code>InternalScanner.next(java.util.List)</code></a> and <a href="../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html#next-java.util.List-"><code>InternalScanner.next(java.util.List)</code></a></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/ScannerContext.LimitScope.html#org.apache.hadoop.hbase.regionserver">ScannerContext.LimitScope</a>
 <div class="block">The various scopes where a limit can be enforced.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/ScannerContext.NextState.html#org.apache.hadoop.hbase.regionserver">ScannerContext.NextState</a>
 <div class="block">The possible states a scanner may be in following a call to <a href="../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html#next-java.util.List-"><code>InternalScanner.next(List)</code></a></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/ScannerContext.ProgressFields.html#org.apache.hadoop.hbase.regionserver">ScannerContext.ProgressFields</a>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/ScannerIdGenerator.html#org.apache.hadoop.hbase.regionserver">ScannerIdGenerator</a>
 <div class="block">Generate a new style scanner id to prevent collision with previous started server or other RSs.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/ScanOptions.html#org.apache.hadoop.hbase.regionserver">ScanOptions</a>
 <div class="block">This class gives you the ability to change the max versions and TTL options before opening a
  scanner for a Store.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/ScanType.html#org.apache.hadoop.hbase.regionserver">ScanType</a>
 <div class="block">Enum to distinguish general scan types.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/SecureBulkLoadManager.html#org.apache.hadoop.hbase.regionserver">SecureBulkLoadManager</a>
 <div class="block">Bulk loads in secure mode.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/Segment.html#org.apache.hadoop.hbase.regionserver">Segment</a>
 <div class="block">This is an abstraction of a segment maintained in a memstore, e.g., the active
  cell set or its snapshot.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/SegmentFactory.html#org.apache.hadoop.hbase.regionserver">SegmentFactory</a>
 <div class="block">A singleton store segment factory.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/ServerNonceManager.html#org.apache.hadoop.hbase.regionserver">ServerNonceManager</a>
 <div class="block">Implementation of nonce manager that stores nonces in a hash map and cleans them up after
  some time; if nonce group/client ID is supplied, nonces are stored by client ID.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/ServerNonceManager.OperationContext.html#org.apache.hadoop.hbase.regionserver">ServerNonceManager.OperationContext</a>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/Shipper.html#org.apache.hadoop.hbase.regionserver">Shipper</a>
 <div class="block">This interface denotes a scanner as one which can ship cells.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/ShipperListener.html#org.apache.hadoop.hbase.regionserver">ShipperListener</a>
 <div class="block">Implementors of this interface are the ones who needs to do some action when the
  <a href="../../../../../org/apache/hadoop/hbase/regionserver/Shipper.html#shipped--"><code>Shipper.shipped()</code></a> is called</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/SplitLogWorker.html#org.apache.hadoop.hbase.regionserver">SplitLogWorker</a>
 <div class="block">This worker is spawned in every regionserver, including master.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/SplitLogWorker.TaskExecutor.html#org.apache.hadoop.hbase.regionserver">SplitLogWorker.TaskExecutor</a>
 <div class="block">Objects implementing this interface actually do the task that has been
  acquired by a <a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.html" title="class in org.apache.hadoop.hbase.regionserver"><code>SplitLogWorker</code></a>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/SplitLogWorker.TaskExecutor.Status.html#org.apache.hadoop.hbase.regionserver">SplitLogWorker.TaskExecutor.Status</a>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/Store.html#org.apache.hadoop.hbase.regionserver">Store</a>
 <div class="block">Interface for objects that hold a column family in a Region.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StoreConfigInformation.html#org.apache.hadoop.hbase.regionserver">StoreConfigInformation</a>
 <div class="block">A more restricted interface for HStore.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StoreEngine.html#org.apache.hadoop.hbase.regionserver">StoreEngine</a>
 <div class="block">StoreEngine is a factory that can create the objects necessary for HStore to operate.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StoreFile.html#org.apache.hadoop.hbase.regionserver">StoreFile</a>
 <div class="block">An interface to describe a store data file.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StoreFileInfo.html#org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>
 <div class="block">Describe a StoreFile (hfile, reference, link)</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StoreFileManager.html#org.apache.hadoop.hbase.regionserver">StoreFileManager</a>
 <div class="block">Manages the store files and basic metadata about that that determines the logical structure
  (e.g.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StoreFileReader.html#org.apache.hadoop.hbase.regionserver">StoreFileReader</a>
 <div class="block">Reader for a StoreFile.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StoreFileReader.Listener.html#org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StorefileRefresherChore.html#org.apache.hadoop.hbase.regionserver">StorefileRefresherChore</a>
 <div class="block">A chore for refreshing the store files for secondary regions hosted in the region server.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StoreFileScanner.html#org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>
 <div class="block">KeyValueScanner adaptor over the Reader.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StoreFileWriter.html#org.apache.hadoop.hbase.regionserver">StoreFileWriter</a>
 <div class="block">A StoreFile writer.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StoreFileWriter.Builder.html#org.apache.hadoop.hbase.regionserver">StoreFileWriter.Builder</a>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StoreFlushContext.html#org.apache.hadoop.hbase.regionserver">StoreFlushContext</a>
 <div class="block">A package protected interface for a store flushing.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StoreFlusher.html#org.apache.hadoop.hbase.regionserver">StoreFlusher</a>
 <div class="block">Store flusher interface.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StoreScanner.html#org.apache.hadoop.hbase.regionserver">StoreScanner</a>
 <div class="block">Scanner scans both the memstore and the Store.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StripeMultiFileWriter.html#org.apache.hadoop.hbase.regionserver">StripeMultiFileWriter</a>
 <div class="block">Base class for cell sink that separates the provided cells into multiple files for stripe
  compaction.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StripeStoreConfig.html#org.apache.hadoop.hbase.regionserver">StripeStoreConfig</a>
 <div class="block">Configuration class for stripe store and compactions.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StripeStoreFileManager.html#org.apache.hadoop.hbase.regionserver">StripeStoreFileManager</a>
 <div class="block">Stripe implementation of StoreFileManager.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StripeStoreFileManager.State.html#org.apache.hadoop.hbase.regionserver">StripeStoreFileManager.State</a>
 <div class="block">The state class.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StripeStoreFlusher.StripeFlushRequest.html#org.apache.hadoop.hbase.regionserver">StripeStoreFlusher.StripeFlushRequest</a>
 <div class="block">Stripe flush request wrapper that writes a non-striped file.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/TimeRangeTracker.html#org.apache.hadoop.hbase.regionserver">TimeRangeTracker</a>
 <div class="block">Stores minimum and maximum timestamp values, it is [minimumTimestamp, maximumTimestamp] in
  interval notation.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/TimeRangeTracker.Type.html#org.apache.hadoop.hbase.regionserver">TimeRangeTracker.Type</a>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/VersionedSegmentsList.html#org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a>
 <div class="block">A list of segment managers coupled with the version of the memstore (version at the time it was
  created).</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/WrongRegionException.html#org.apache.hadoop.hbase.regionserver">WrongRegionException</a>
 <div class="block">Thrown when a request contains a key which is not part of this region</div>
 </td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 7eedc5c..19354d1 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
@@ -247,9 +247,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.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/RingBufferTruck.Type.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">RingBufferTruck.Type</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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 eec8680..c128782 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/AccessController.OpType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessController.OpType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessControlFilter.Strategy.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessControlFilter.Strategy</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Action.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Action</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.OpType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessController.OpType</span></a></li>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
index 2853d09..2923faf 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
@@ -199,9 +199,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftMetrics.ThriftServerType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">MetricsThriftServerSourceFactoryImpl.FactoryStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServerRunner.ImplType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">MetricsThriftServerSourceFactoryImpl.FactoryStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftMetrics.ThriftServerType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 82f7607..3314ac1 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -540,14 +540,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/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Order</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PrettyPrinter.Unit</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/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/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/IdReadWriteLock.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLock.ReferenceType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.ErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">ChecksumType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Order</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PrettyPrinter.Unit</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/IdReadWriteLock.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLock.ReferenceType</span></a></li>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/overview-tree.html b/devapidocs/overview-tree.html
index b9ff6f1..739fe90 100644
--- a/devapidocs/overview-tree.html
+++ b/devapidocs/overview-tree.html
@@ -3953,6 +3953,7 @@
 <li type="circle">org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">HMaster.MasterStoppedException</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/InvalidFamilyOperationException.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">InvalidFamilyOperationException</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/InvalidLabelException.html" title="class in org.apache.hadoop.hbase.security.visibility"><span class="typeNameLink">InvalidLabelException</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">InvalidMutationDurabilityException</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/LabelAlreadyExistsException.html" title="class in org.apache.hadoop.hbase.security.visibility"><span class="typeNameLink">LabelAlreadyExistsException</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/LeaseException.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">LeaseException</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/NamespaceExistException.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">NamespaceExistException</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/serialized-form.html
----------------------------------------------------------------------
diff --git a/devapidocs/serialized-form.html b/devapidocs/serialized-form.html
index 2bbf6ed..b08de50 100644
--- a/devapidocs/serialized-form.html
+++ b/devapidocs/serialized-form.html
@@ -1437,6 +1437,11 @@
 <li class="blockList">
 <h2 title="Package">Package&nbsp;org.apache.hadoop.hbase.regionserver</h2>
 <ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.regionserver.InvalidMutationDurabilityException">
+<!--   -->
+</a>
+<h3>Class <a href="org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver">org.apache.hadoop.hbase.regionserver.InvalidMutationDurabilityException</a> extends <a href="org/apache/hadoop/hbase/DoNotRetryIOException.html" title="class in org.apache.hadoop.hbase">DoNotRetryIOException</a> implements Serializable</h3>
+</li>
 <li class="blockList"><a name="org.apache.hadoop.hbase.regionserver.LeaseException">
 <!--   -->
 </a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 6dca15b..8d24055 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -18,9 +18,9 @@
 <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 = "";<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 = "Thu Oct 25 14:45:40 UTC 2018";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Fri Oct 26 14:44: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 = "b014bfc106d82698ed39111e265b6e61";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "5655ad68eedc4f95ae249880bece0975";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 


[17/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 da040ad..d6702a7 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
@@ -2957,7 +2957,7 @@
 <span class="sourceLineNo">2949</span>        if(family == null) {<a name="line.2949"></a>
 <span class="sourceLineNo">2950</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2950"></a>
 <span class="sourceLineNo">2951</span>        }<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>        checkFamily(family);<a name="line.2952"></a>
+<span class="sourceLineNo">2952</span>        checkFamily(family, delete.getDurability());<a name="line.2952"></a>
 <span class="sourceLineNo">2953</span>      }<a name="line.2953"></a>
 <span class="sourceLineNo">2954</span>    }<a name="line.2954"></a>
 <span class="sourceLineNo">2955</span>  }<a name="line.2955"></a>
@@ -3569,7 +3569,7 @@
 <span class="sourceLineNo">3561</span><a name="line.3561"></a>
 <span class="sourceLineNo">3562</span>    @Override<a name="line.3562"></a>
 <span class="sourceLineNo">3563</span>    public void checkAndPreparePut(Put p) throws IOException {<a name="line.3563"></a>
-<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet());<a name="line.3564"></a>
+<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet(), p.getDurability());<a name="line.3564"></a>
 <span class="sourceLineNo">3565</span>    }<a name="line.3565"></a>
 <span class="sourceLineNo">3566</span><a name="line.3566"></a>
 <span class="sourceLineNo">3567</span>    @Override<a name="line.3567"></a>
@@ -4462,4304 +4462,4307 @@
 <span class="sourceLineNo">4454</span>    store.add(cell, memstoreAccounting);<a name="line.4454"></a>
 <span class="sourceLineNo">4455</span>  }<a name="line.4455"></a>
 <span class="sourceLineNo">4456</span><a name="line.4456"></a>
-<span class="sourceLineNo">4457</span>  /**<a name="line.4457"></a>
-<span class="sourceLineNo">4458</span>   * Check the collection of families for validity.<a name="line.4458"></a>
-<span class="sourceLineNo">4459</span>   * @param families<a name="line.4459"></a>
-<span class="sourceLineNo">4460</span>   * @throws NoSuchColumnFamilyException<a name="line.4460"></a>
-<span class="sourceLineNo">4461</span>   */<a name="line.4461"></a>
-<span class="sourceLineNo">4462</span>  public void checkFamilies(Collection&lt;byte[]&gt; families) throws NoSuchColumnFamilyException {<a name="line.4462"></a>
-<span class="sourceLineNo">4463</span>    for (byte[] family : families) {<a name="line.4463"></a>
-<span class="sourceLineNo">4464</span>      checkFamily(family);<a name="line.4464"></a>
-<span class="sourceLineNo">4465</span>    }<a name="line.4465"></a>
-<span class="sourceLineNo">4466</span>  }<a name="line.4466"></a>
-<span class="sourceLineNo">4467</span><a name="line.4467"></a>
-<span class="sourceLineNo">4468</span>  /**<a name="line.4468"></a>
-<span class="sourceLineNo">4469</span>   * Check the collection of families for valid timestamps<a name="line.4469"></a>
-<span class="sourceLineNo">4470</span>   * @param familyMap<a name="line.4470"></a>
-<span class="sourceLineNo">4471</span>   * @param now current timestamp<a name="line.4471"></a>
-<span class="sourceLineNo">4472</span>   * @throws FailedSanityCheckException<a name="line.4472"></a>
-<span class="sourceLineNo">4473</span>   */<a name="line.4473"></a>
-<span class="sourceLineNo">4474</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4474"></a>
-<span class="sourceLineNo">4475</span>      throws FailedSanityCheckException {<a name="line.4475"></a>
-<span class="sourceLineNo">4476</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4476"></a>
-<span class="sourceLineNo">4477</span>      return;<a name="line.4477"></a>
-<span class="sourceLineNo">4478</span>    }<a name="line.4478"></a>
-<span class="sourceLineNo">4479</span>    long maxTs = now + timestampSlop;<a name="line.4479"></a>
-<span class="sourceLineNo">4480</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4480"></a>
-<span class="sourceLineNo">4481</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4481"></a>
-<span class="sourceLineNo">4482</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4482"></a>
-<span class="sourceLineNo">4483</span>      assert kvs instanceof RandomAccess;<a name="line.4483"></a>
-<span class="sourceLineNo">4484</span>      int listSize  = kvs.size();<a name="line.4484"></a>
-<span class="sourceLineNo">4485</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4485"></a>
-<span class="sourceLineNo">4486</span>        Cell cell = kvs.get(i);<a name="line.4486"></a>
-<span class="sourceLineNo">4487</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4487"></a>
-<span class="sourceLineNo">4488</span>        long ts = cell.getTimestamp();<a name="line.4488"></a>
-<span class="sourceLineNo">4489</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4489"></a>
-<span class="sourceLineNo">4490</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4490"></a>
-<span class="sourceLineNo">4491</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4491"></a>
-<span class="sourceLineNo">4492</span>        }<a name="line.4492"></a>
-<span class="sourceLineNo">4493</span>      }<a name="line.4493"></a>
+<span class="sourceLineNo">4457</span>  private void checkFamilies(Collection&lt;byte[]&gt; families, Durability durability)<a name="line.4457"></a>
+<span class="sourceLineNo">4458</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4458"></a>
+<span class="sourceLineNo">4459</span>    for (byte[] family : families) {<a name="line.4459"></a>
+<span class="sourceLineNo">4460</span>      checkFamily(family, durability);<a name="line.4460"></a>
+<span class="sourceLineNo">4461</span>    }<a name="line.4461"></a>
+<span class="sourceLineNo">4462</span>  }<a name="line.4462"></a>
+<span class="sourceLineNo">4463</span><a name="line.4463"></a>
+<span class="sourceLineNo">4464</span>  private void checkFamily(final byte[] family, Durability durability)<a name="line.4464"></a>
+<span class="sourceLineNo">4465</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4465"></a>
+<span class="sourceLineNo">4466</span>    checkFamily(family);<a name="line.4466"></a>
+<span class="sourceLineNo">4467</span>    if (durability.equals(Durability.SKIP_WAL)<a name="line.4467"></a>
+<span class="sourceLineNo">4468</span>        &amp;&amp; htableDescriptor.getColumnFamily(family).getScope()<a name="line.4468"></a>
+<span class="sourceLineNo">4469</span>        != HConstants.REPLICATION_SCOPE_LOCAL) {<a name="line.4469"></a>
+<span class="sourceLineNo">4470</span>      throw new InvalidMutationDurabilityException(<a name="line.4470"></a>
+<span class="sourceLineNo">4471</span>          "Mutation's durability is SKIP_WAL but table's column family " + Bytes.toString(family)<a name="line.4471"></a>
+<span class="sourceLineNo">4472</span>              + " need replication");<a name="line.4472"></a>
+<span class="sourceLineNo">4473</span>    }<a name="line.4473"></a>
+<span class="sourceLineNo">4474</span>  }<a name="line.4474"></a>
+<span class="sourceLineNo">4475</span><a name="line.4475"></a>
+<span class="sourceLineNo">4476</span>  void checkFamily(final byte[] family) throws NoSuchColumnFamilyException {<a name="line.4476"></a>
+<span class="sourceLineNo">4477</span>    if (!this.htableDescriptor.hasColumnFamily(family)) {<a name="line.4477"></a>
+<span class="sourceLineNo">4478</span>      throw new NoSuchColumnFamilyException(<a name="line.4478"></a>
+<span class="sourceLineNo">4479</span>          "Column family " + Bytes.toString(family) + " does not exist in region " + this<a name="line.4479"></a>
+<span class="sourceLineNo">4480</span>              + " in table " + this.htableDescriptor);<a name="line.4480"></a>
+<span class="sourceLineNo">4481</span>    }<a name="line.4481"></a>
+<span class="sourceLineNo">4482</span>  }<a name="line.4482"></a>
+<span class="sourceLineNo">4483</span><a name="line.4483"></a>
+<span class="sourceLineNo">4484</span>  /**<a name="line.4484"></a>
+<span class="sourceLineNo">4485</span>   * Check the collection of families for valid timestamps<a name="line.4485"></a>
+<span class="sourceLineNo">4486</span>   * @param familyMap<a name="line.4486"></a>
+<span class="sourceLineNo">4487</span>   * @param now current timestamp<a name="line.4487"></a>
+<span class="sourceLineNo">4488</span>   * @throws FailedSanityCheckException<a name="line.4488"></a>
+<span class="sourceLineNo">4489</span>   */<a name="line.4489"></a>
+<span class="sourceLineNo">4490</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4490"></a>
+<span class="sourceLineNo">4491</span>      throws FailedSanityCheckException {<a name="line.4491"></a>
+<span class="sourceLineNo">4492</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4492"></a>
+<span class="sourceLineNo">4493</span>      return;<a name="line.4493"></a>
 <span class="sourceLineNo">4494</span>    }<a name="line.4494"></a>
-<span class="sourceLineNo">4495</span>  }<a name="line.4495"></a>
-<span class="sourceLineNo">4496</span><a name="line.4496"></a>
-<span class="sourceLineNo">4497</span>  /*<a name="line.4497"></a>
-<span class="sourceLineNo">4498</span>   * @param size<a name="line.4498"></a>
-<span class="sourceLineNo">4499</span>   * @return True if size is over the flush threshold<a name="line.4499"></a>
-<span class="sourceLineNo">4500</span>   */<a name="line.4500"></a>
-<span class="sourceLineNo">4501</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4501"></a>
-<span class="sourceLineNo">4502</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4502"></a>
-<span class="sourceLineNo">4503</span>  }<a name="line.4503"></a>
-<span class="sourceLineNo">4504</span><a name="line.4504"></a>
-<span class="sourceLineNo">4505</span>  /**<a name="line.4505"></a>
-<span class="sourceLineNo">4506</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4506"></a>
-<span class="sourceLineNo">4507</span>   * the recovered edits back up into this region.<a name="line.4507"></a>
-<span class="sourceLineNo">4508</span>   *<a name="line.4508"></a>
-<span class="sourceLineNo">4509</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4509"></a>
-<span class="sourceLineNo">4510</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4510"></a>
-<span class="sourceLineNo">4511</span>   * reflected in the HFiles.)<a name="line.4511"></a>
-<span class="sourceLineNo">4512</span>   *<a name="line.4512"></a>
-<span class="sourceLineNo">4513</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4513"></a>
-<span class="sourceLineNo">4514</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4514"></a>
-<span class="sourceLineNo">4515</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4515"></a>
-<span class="sourceLineNo">4516</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4516"></a>
-<span class="sourceLineNo">4517</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4517"></a>
-<span class="sourceLineNo">4518</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4518"></a>
-<span class="sourceLineNo">4519</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4519"></a>
-<span class="sourceLineNo">4520</span>   * edits.<a name="line.4520"></a>
-<span class="sourceLineNo">4521</span>   *<a name="line.4521"></a>
-<span class="sourceLineNo">4522</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4522"></a>
-<span class="sourceLineNo">4523</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4523"></a>
-<span class="sourceLineNo">4524</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4524"></a>
-<span class="sourceLineNo">4525</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4525"></a>
-<span class="sourceLineNo">4526</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4526"></a>
-<span class="sourceLineNo">4527</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4527"></a>
-<span class="sourceLineNo">4528</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4528"></a>
-<span class="sourceLineNo">4529</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4529"></a>
-<span class="sourceLineNo">4530</span>   * make sense in a this single region context only -- until we online.<a name="line.4530"></a>
-<span class="sourceLineNo">4531</span>   *<a name="line.4531"></a>
-<span class="sourceLineNo">4532</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4532"></a>
-<span class="sourceLineNo">4533</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4533"></a>
-<span class="sourceLineNo">4534</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4534"></a>
-<span class="sourceLineNo">4535</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4535"></a>
-<span class="sourceLineNo">4536</span>   * @throws IOException<a name="line.4536"></a>
-<span class="sourceLineNo">4537</span>   */<a name="line.4537"></a>
-<span class="sourceLineNo">4538</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4538"></a>
-<span class="sourceLineNo">4539</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4539"></a>
-<span class="sourceLineNo">4540</span>      throws IOException {<a name="line.4540"></a>
-<span class="sourceLineNo">4541</span>    long minSeqIdForTheRegion = -1;<a name="line.4541"></a>
-<span class="sourceLineNo">4542</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4542"></a>
-<span class="sourceLineNo">4543</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4543"></a>
-<span class="sourceLineNo">4544</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4544"></a>
-<span class="sourceLineNo">4545</span>      }<a name="line.4545"></a>
-<span class="sourceLineNo">4546</span>    }<a name="line.4546"></a>
-<span class="sourceLineNo">4547</span>    long seqid = minSeqIdForTheRegion;<a name="line.4547"></a>
-<span class="sourceLineNo">4548</span><a name="line.4548"></a>
-<span class="sourceLineNo">4549</span>    FileSystem walFS = getWalFileSystem();<a name="line.4549"></a>
-<span class="sourceLineNo">4550</span>    FileSystem rootFS = getFilesystem();<a name="line.4550"></a>
-<span class="sourceLineNo">4551</span>    Path regionDir = getWALRegionDir();<a name="line.4551"></a>
-<span class="sourceLineNo">4552</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4552"></a>
-<span class="sourceLineNo">4553</span><a name="line.4553"></a>
-<span class="sourceLineNo">4554</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4554"></a>
-<span class="sourceLineNo">4555</span>    // under the root dir even if walDir is set.<a name="line.4555"></a>
-<span class="sourceLineNo">4556</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4556"></a>
-<span class="sourceLineNo">4557</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4557"></a>
-<span class="sourceLineNo">4558</span>      filesUnderRootDir =<a name="line.4558"></a>
-<span class="sourceLineNo">4559</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4559"></a>
-<span class="sourceLineNo">4560</span>      seqid = Math.max(seqid,<a name="line.4560"></a>
-<span class="sourceLineNo">4561</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4561"></a>
-<span class="sourceLineNo">4562</span>              defaultRegionDir));<a name="line.4562"></a>
-<span class="sourceLineNo">4563</span>    }<a name="line.4563"></a>
+<span class="sourceLineNo">4495</span>    long maxTs = now + timestampSlop;<a name="line.4495"></a>
+<span class="sourceLineNo">4496</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4496"></a>
+<span class="sourceLineNo">4497</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4497"></a>
+<span class="sourceLineNo">4498</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4498"></a>
+<span class="sourceLineNo">4499</span>      assert kvs instanceof RandomAccess;<a name="line.4499"></a>
+<span class="sourceLineNo">4500</span>      int listSize  = kvs.size();<a name="line.4500"></a>
+<span class="sourceLineNo">4501</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4501"></a>
+<span class="sourceLineNo">4502</span>        Cell cell = kvs.get(i);<a name="line.4502"></a>
+<span class="sourceLineNo">4503</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4503"></a>
+<span class="sourceLineNo">4504</span>        long ts = cell.getTimestamp();<a name="line.4504"></a>
+<span class="sourceLineNo">4505</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4505"></a>
+<span class="sourceLineNo">4506</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4506"></a>
+<span class="sourceLineNo">4507</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4507"></a>
+<span class="sourceLineNo">4508</span>        }<a name="line.4508"></a>
+<span class="sourceLineNo">4509</span>      }<a name="line.4509"></a>
+<span class="sourceLineNo">4510</span>    }<a name="line.4510"></a>
+<span class="sourceLineNo">4511</span>  }<a name="line.4511"></a>
+<span class="sourceLineNo">4512</span><a name="line.4512"></a>
+<span class="sourceLineNo">4513</span>  /*<a name="line.4513"></a>
+<span class="sourceLineNo">4514</span>   * @param size<a name="line.4514"></a>
+<span class="sourceLineNo">4515</span>   * @return True if size is over the flush threshold<a name="line.4515"></a>
+<span class="sourceLineNo">4516</span>   */<a name="line.4516"></a>
+<span class="sourceLineNo">4517</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4517"></a>
+<span class="sourceLineNo">4518</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4518"></a>
+<span class="sourceLineNo">4519</span>  }<a name="line.4519"></a>
+<span class="sourceLineNo">4520</span><a name="line.4520"></a>
+<span class="sourceLineNo">4521</span>  /**<a name="line.4521"></a>
+<span class="sourceLineNo">4522</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4522"></a>
+<span class="sourceLineNo">4523</span>   * the recovered edits back up into this region.<a name="line.4523"></a>
+<span class="sourceLineNo">4524</span>   *<a name="line.4524"></a>
+<span class="sourceLineNo">4525</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4525"></a>
+<span class="sourceLineNo">4526</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4526"></a>
+<span class="sourceLineNo">4527</span>   * reflected in the HFiles.)<a name="line.4527"></a>
+<span class="sourceLineNo">4528</span>   *<a name="line.4528"></a>
+<span class="sourceLineNo">4529</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4529"></a>
+<span class="sourceLineNo">4530</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4530"></a>
+<span class="sourceLineNo">4531</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4531"></a>
+<span class="sourceLineNo">4532</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4532"></a>
+<span class="sourceLineNo">4533</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4533"></a>
+<span class="sourceLineNo">4534</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4534"></a>
+<span class="sourceLineNo">4535</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4535"></a>
+<span class="sourceLineNo">4536</span>   * edits.<a name="line.4536"></a>
+<span class="sourceLineNo">4537</span>   *<a name="line.4537"></a>
+<span class="sourceLineNo">4538</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4538"></a>
+<span class="sourceLineNo">4539</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4539"></a>
+<span class="sourceLineNo">4540</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4540"></a>
+<span class="sourceLineNo">4541</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4541"></a>
+<span class="sourceLineNo">4542</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4542"></a>
+<span class="sourceLineNo">4543</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4543"></a>
+<span class="sourceLineNo">4544</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4544"></a>
+<span class="sourceLineNo">4545</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4545"></a>
+<span class="sourceLineNo">4546</span>   * make sense in a this single region context only -- until we online.<a name="line.4546"></a>
+<span class="sourceLineNo">4547</span>   *<a name="line.4547"></a>
+<span class="sourceLineNo">4548</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4548"></a>
+<span class="sourceLineNo">4549</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4549"></a>
+<span class="sourceLineNo">4550</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4550"></a>
+<span class="sourceLineNo">4551</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4551"></a>
+<span class="sourceLineNo">4552</span>   * @throws IOException<a name="line.4552"></a>
+<span class="sourceLineNo">4553</span>   */<a name="line.4553"></a>
+<span class="sourceLineNo">4554</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4554"></a>
+<span class="sourceLineNo">4555</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4555"></a>
+<span class="sourceLineNo">4556</span>      throws IOException {<a name="line.4556"></a>
+<span class="sourceLineNo">4557</span>    long minSeqIdForTheRegion = -1;<a name="line.4557"></a>
+<span class="sourceLineNo">4558</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4558"></a>
+<span class="sourceLineNo">4559</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4559"></a>
+<span class="sourceLineNo">4560</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4560"></a>
+<span class="sourceLineNo">4561</span>      }<a name="line.4561"></a>
+<span class="sourceLineNo">4562</span>    }<a name="line.4562"></a>
+<span class="sourceLineNo">4563</span>    long seqid = minSeqIdForTheRegion;<a name="line.4563"></a>
 <span class="sourceLineNo">4564</span><a name="line.4564"></a>
-<span class="sourceLineNo">4565</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4565"></a>
-<span class="sourceLineNo">4566</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4566"></a>
-<span class="sourceLineNo">4567</span>        files, reporter, regionDir));<a name="line.4567"></a>
-<span class="sourceLineNo">4568</span><a name="line.4568"></a>
-<span class="sourceLineNo">4569</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4569"></a>
-<span class="sourceLineNo">4570</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4570"></a>
-<span class="sourceLineNo">4571</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4571"></a>
-<span class="sourceLineNo">4572</span>    }<a name="line.4572"></a>
-<span class="sourceLineNo">4573</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4573"></a>
-<span class="sourceLineNo">4574</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4574"></a>
-<span class="sourceLineNo">4575</span>      // For debugging data loss issues!<a name="line.4575"></a>
-<span class="sourceLineNo">4576</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4576"></a>
-<span class="sourceLineNo">4577</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4577"></a>
-<span class="sourceLineNo">4578</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4578"></a>
-<span class="sourceLineNo">4579</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4579"></a>
-<span class="sourceLineNo">4580</span>      for (Path file: files) {<a name="line.4580"></a>
-<span class="sourceLineNo">4581</span>        fakeStoreFiles.add(<a name="line.4581"></a>
-<span class="sourceLineNo">4582</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4582"></a>
-<span class="sourceLineNo">4583</span>      }<a name="line.4583"></a>
-<span class="sourceLineNo">4584</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4584"></a>
-<span class="sourceLineNo">4585</span>    } else {<a name="line.4585"></a>
-<span class="sourceLineNo">4586</span>      if (filesUnderRootDir != null) {<a name="line.4586"></a>
-<span class="sourceLineNo">4587</span>        for (Path file : filesUnderRootDir) {<a name="line.4587"></a>
-<span class="sourceLineNo">4588</span>          if (!rootFS.delete(file, false)) {<a name="line.4588"></a>
-<span class="sourceLineNo">4589</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4589"></a>
-<span class="sourceLineNo">4590</span>          } else {<a name="line.4590"></a>
-<span class="sourceLineNo">4591</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4591"></a>
-<span class="sourceLineNo">4592</span>          }<a name="line.4592"></a>
-<span class="sourceLineNo">4593</span>        }<a name="line.4593"></a>
-<span class="sourceLineNo">4594</span>      }<a name="line.4594"></a>
-<span class="sourceLineNo">4595</span>      for (Path file: files) {<a name="line.4595"></a>
-<span class="sourceLineNo">4596</span>        if (!walFS.delete(file, false)) {<a name="line.4596"></a>
-<span class="sourceLineNo">4597</span>          LOG.error("Failed delete of " + file);<a name="line.4597"></a>
-<span class="sourceLineNo">4598</span>        } else {<a name="line.4598"></a>
-<span class="sourceLineNo">4599</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4599"></a>
-<span class="sourceLineNo">4600</span>        }<a name="line.4600"></a>
-<span class="sourceLineNo">4601</span>      }<a name="line.4601"></a>
-<span class="sourceLineNo">4602</span>    }<a name="line.4602"></a>
-<span class="sourceLineNo">4603</span>    return seqid;<a name="line.4603"></a>
-<span class="sourceLineNo">4604</span>  }<a name="line.4604"></a>
-<span class="sourceLineNo">4605</span><a name="line.4605"></a>
-<span class="sourceLineNo">4606</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4606"></a>
-<span class="sourceLineNo">4607</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4607"></a>
-<span class="sourceLineNo">4608</span>      throws IOException {<a name="line.4608"></a>
-<span class="sourceLineNo">4609</span>    long seqid = minSeqIdForTheRegion;<a name="line.4609"></a>
-<span class="sourceLineNo">4610</span>    if (LOG.isDebugEnabled()) {<a name="line.4610"></a>
-<span class="sourceLineNo">4611</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4611"></a>
-<span class="sourceLineNo">4612</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4612"></a>
-<span class="sourceLineNo">4613</span>    }<a name="line.4613"></a>
-<span class="sourceLineNo">4614</span><a name="line.4614"></a>
-<span class="sourceLineNo">4615</span>    if (files == null || files.isEmpty()) {<a name="line.4615"></a>
-<span class="sourceLineNo">4616</span>      return minSeqIdForTheRegion;<a name="line.4616"></a>
-<span class="sourceLineNo">4617</span>    }<a name="line.4617"></a>
-<span class="sourceLineNo">4618</span><a name="line.4618"></a>
-<span class="sourceLineNo">4619</span>    for (Path edits: files) {<a name="line.4619"></a>
-<span class="sourceLineNo">4620</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4620"></a>
-<span class="sourceLineNo">4621</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4621"></a>
-<span class="sourceLineNo">4622</span>        continue;<a name="line.4622"></a>
-<span class="sourceLineNo">4623</span>      }<a name="line.4623"></a>
-<span class="sourceLineNo">4624</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4624"></a>
-<span class="sourceLineNo">4625</span><a name="line.4625"></a>
-<span class="sourceLineNo">4626</span>      long maxSeqId;<a name="line.4626"></a>
-<span class="sourceLineNo">4627</span>      String fileName = edits.getName();<a name="line.4627"></a>
-<span class="sourceLineNo">4628</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4628"></a>
-<span class="sourceLineNo">4629</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4629"></a>
-<span class="sourceLineNo">4630</span>        if (LOG.isDebugEnabled()) {<a name="line.4630"></a>
-<span class="sourceLineNo">4631</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4631"></a>
-<span class="sourceLineNo">4632</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4632"></a>
-<span class="sourceLineNo">4633</span>              + ", skipped the whole file, path=" + edits;<a name="line.4633"></a>
-<span class="sourceLineNo">4634</span>          LOG.debug(msg);<a name="line.4634"></a>
-<span class="sourceLineNo">4635</span>        }<a name="line.4635"></a>
-<span class="sourceLineNo">4636</span>        continue;<a name="line.4636"></a>
-<span class="sourceLineNo">4637</span>      }<a name="line.4637"></a>
-<span class="sourceLineNo">4638</span><a name="line.4638"></a>
-<span class="sourceLineNo">4639</span>      try {<a name="line.4639"></a>
-<span class="sourceLineNo">4640</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4640"></a>
-<span class="sourceLineNo">4641</span>        // if seqId is greater<a name="line.4641"></a>
-<span class="sourceLineNo">4642</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4642"></a>
-<span class="sourceLineNo">4643</span>      } catch (IOException e) {<a name="line.4643"></a>
-<span class="sourceLineNo">4644</span>        boolean skipErrors = conf.getBoolean(<a name="line.4644"></a>
-<span class="sourceLineNo">4645</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4645"></a>
-<span class="sourceLineNo">4646</span>            conf.getBoolean(<a name="line.4646"></a>
-<span class="sourceLineNo">4647</span>                "hbase.skip.errors",<a name="line.4647"></a>
-<span class="sourceLineNo">4648</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4648"></a>
-<span class="sourceLineNo">4649</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4649"></a>
-<span class="sourceLineNo">4650</span>          LOG.warn(<a name="line.4650"></a>
-<span class="sourceLineNo">4651</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4651"></a>
-<span class="sourceLineNo">4652</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4652"></a>
-<span class="sourceLineNo">4653</span>        }<a name="line.4653"></a>
-<span class="sourceLineNo">4654</span>        if (skipErrors) {<a name="line.4654"></a>
-<span class="sourceLineNo">4655</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4655"></a>
-<span class="sourceLineNo">4656</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4656"></a>
-<span class="sourceLineNo">4657</span>              + "=true so continuing. Renamed " + edits +<a name="line.4657"></a>
-<span class="sourceLineNo">4658</span>              " as " + p, e);<a name="line.4658"></a>
-<span class="sourceLineNo">4659</span>        } else {<a name="line.4659"></a>
-<span class="sourceLineNo">4660</span>          throw e;<a name="line.4660"></a>
-<span class="sourceLineNo">4661</span>        }<a name="line.4661"></a>
-<span class="sourceLineNo">4662</span>      }<a name="line.4662"></a>
-<span class="sourceLineNo">4663</span>    }<a name="line.4663"></a>
-<span class="sourceLineNo">4664</span>    return seqid;<a name="line.4664"></a>
-<span class="sourceLineNo">4665</span>  }<a name="line.4665"></a>
-<span class="sourceLineNo">4666</span><a name="line.4666"></a>
-<span class="sourceLineNo">4667</span>  /*<a name="line.4667"></a>
-<span class="sourceLineNo">4668</span>   * @param edits File of recovered edits.<a name="line.4668"></a>
-<span class="sourceLineNo">4669</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4669"></a>
-<span class="sourceLineNo">4670</span>   * must be larger than this to be replayed for each store.<a name="line.4670"></a>
-<span class="sourceLineNo">4671</span>   * @param reporter<a name="line.4671"></a>
-<span class="sourceLineNo">4672</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4672"></a>
-<span class="sourceLineNo">4673</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4673"></a>
-<span class="sourceLineNo">4674</span>   * @throws IOException<a name="line.4674"></a>
-<span class="sourceLineNo">4675</span>   */<a name="line.4675"></a>
-<span class="sourceLineNo">4676</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4676"></a>
-<span class="sourceLineNo">4677</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4677"></a>
-<span class="sourceLineNo">4678</span>    throws IOException {<a name="line.4678"></a>
-<span class="sourceLineNo">4679</span>    String msg = "Replaying edits from " + edits;<a name="line.4679"></a>
-<span class="sourceLineNo">4680</span>    LOG.info(msg);<a name="line.4680"></a>
-<span class="sourceLineNo">4681</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4681"></a>
+<span class="sourceLineNo">4565</span>    FileSystem walFS = getWalFileSystem();<a name="line.4565"></a>
+<span class="sourceLineNo">4566</span>    FileSystem rootFS = getFilesystem();<a name="line.4566"></a>
+<span class="sourceLineNo">4567</span>    Path regionDir = getWALRegionDir();<a name="line.4567"></a>
+<span class="sourceLineNo">4568</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4568"></a>
+<span class="sourceLineNo">4569</span><a name="line.4569"></a>
+<span class="sourceLineNo">4570</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4570"></a>
+<span class="sourceLineNo">4571</span>    // under the root dir even if walDir is set.<a name="line.4571"></a>
+<span class="sourceLineNo">4572</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4572"></a>
+<span class="sourceLineNo">4573</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4573"></a>
+<span class="sourceLineNo">4574</span>      filesUnderRootDir =<a name="line.4574"></a>
+<span class="sourceLineNo">4575</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4575"></a>
+<span class="sourceLineNo">4576</span>      seqid = Math.max(seqid,<a name="line.4576"></a>
+<span class="sourceLineNo">4577</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4577"></a>
+<span class="sourceLineNo">4578</span>              defaultRegionDir));<a name="line.4578"></a>
+<span class="sourceLineNo">4579</span>    }<a name="line.4579"></a>
+<span class="sourceLineNo">4580</span><a name="line.4580"></a>
+<span class="sourceLineNo">4581</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4581"></a>
+<span class="sourceLineNo">4582</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4582"></a>
+<span class="sourceLineNo">4583</span>        files, reporter, regionDir));<a name="line.4583"></a>
+<span class="sourceLineNo">4584</span><a name="line.4584"></a>
+<span class="sourceLineNo">4585</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4585"></a>
+<span class="sourceLineNo">4586</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4586"></a>
+<span class="sourceLineNo">4587</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4587"></a>
+<span class="sourceLineNo">4588</span>    }<a name="line.4588"></a>
+<span class="sourceLineNo">4589</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4589"></a>
+<span class="sourceLineNo">4590</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4590"></a>
+<span class="sourceLineNo">4591</span>      // For debugging data loss issues!<a name="line.4591"></a>
+<span class="sourceLineNo">4592</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4592"></a>
+<span class="sourceLineNo">4593</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4593"></a>
+<span class="sourceLineNo">4594</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4594"></a>
+<span class="sourceLineNo">4595</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4595"></a>
+<span class="sourceLineNo">4596</span>      for (Path file: files) {<a name="line.4596"></a>
+<span class="sourceLineNo">4597</span>        fakeStoreFiles.add(<a name="line.4597"></a>
+<span class="sourceLineNo">4598</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4598"></a>
+<span class="sourceLineNo">4599</span>      }<a name="line.4599"></a>
+<span class="sourceLineNo">4600</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4600"></a>
+<span class="sourceLineNo">4601</span>    } else {<a name="line.4601"></a>
+<span class="sourceLineNo">4602</span>      if (filesUnderRootDir != null) {<a name="line.4602"></a>
+<span class="sourceLineNo">4603</span>        for (Path file : filesUnderRootDir) {<a name="line.4603"></a>
+<span class="sourceLineNo">4604</span>          if (!rootFS.delete(file, false)) {<a name="line.4604"></a>
+<span class="sourceLineNo">4605</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4605"></a>
+<span class="sourceLineNo">4606</span>          } else {<a name="line.4606"></a>
+<span class="sourceLineNo">4607</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4607"></a>
+<span class="sourceLineNo">4608</span>          }<a name="line.4608"></a>
+<span class="sourceLineNo">4609</span>        }<a name="line.4609"></a>
+<span class="sourceLineNo">4610</span>      }<a name="line.4610"></a>
+<span class="sourceLineNo">4611</span>      for (Path file: files) {<a name="line.4611"></a>
+<span class="sourceLineNo">4612</span>        if (!walFS.delete(file, false)) {<a name="line.4612"></a>
+<span class="sourceLineNo">4613</span>          LOG.error("Failed delete of " + file);<a name="line.4613"></a>
+<span class="sourceLineNo">4614</span>        } else {<a name="line.4614"></a>
+<span class="sourceLineNo">4615</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4615"></a>
+<span class="sourceLineNo">4616</span>        }<a name="line.4616"></a>
+<span class="sourceLineNo">4617</span>      }<a name="line.4617"></a>
+<span class="sourceLineNo">4618</span>    }<a name="line.4618"></a>
+<span class="sourceLineNo">4619</span>    return seqid;<a name="line.4619"></a>
+<span class="sourceLineNo">4620</span>  }<a name="line.4620"></a>
+<span class="sourceLineNo">4621</span><a name="line.4621"></a>
+<span class="sourceLineNo">4622</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4622"></a>
+<span class="sourceLineNo">4623</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4623"></a>
+<span class="sourceLineNo">4624</span>      throws IOException {<a name="line.4624"></a>
+<span class="sourceLineNo">4625</span>    long seqid = minSeqIdForTheRegion;<a name="line.4625"></a>
+<span class="sourceLineNo">4626</span>    if (LOG.isDebugEnabled()) {<a name="line.4626"></a>
+<span class="sourceLineNo">4627</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4627"></a>
+<span class="sourceLineNo">4628</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4628"></a>
+<span class="sourceLineNo">4629</span>    }<a name="line.4629"></a>
+<span class="sourceLineNo">4630</span><a name="line.4630"></a>
+<span class="sourceLineNo">4631</span>    if (files == null || files.isEmpty()) {<a name="line.4631"></a>
+<span class="sourceLineNo">4632</span>      return minSeqIdForTheRegion;<a name="line.4632"></a>
+<span class="sourceLineNo">4633</span>    }<a name="line.4633"></a>
+<span class="sourceLineNo">4634</span><a name="line.4634"></a>
+<span class="sourceLineNo">4635</span>    for (Path edits: files) {<a name="line.4635"></a>
+<span class="sourceLineNo">4636</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4636"></a>
+<span class="sourceLineNo">4637</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4637"></a>
+<span class="sourceLineNo">4638</span>        continue;<a name="line.4638"></a>
+<span class="sourceLineNo">4639</span>      }<a name="line.4639"></a>
+<span class="sourceLineNo">4640</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4640"></a>
+<span class="sourceLineNo">4641</span><a name="line.4641"></a>
+<span class="sourceLineNo">4642</span>      long maxSeqId;<a name="line.4642"></a>
+<span class="sourceLineNo">4643</span>      String fileName = edits.getName();<a name="line.4643"></a>
+<span class="sourceLineNo">4644</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4644"></a>
+<span class="sourceLineNo">4645</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4645"></a>
+<span class="sourceLineNo">4646</span>        if (LOG.isDebugEnabled()) {<a name="line.4646"></a>
+<span class="sourceLineNo">4647</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4647"></a>
+<span class="sourceLineNo">4648</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4648"></a>
+<span class="sourceLineNo">4649</span>              + ", skipped the whole file, path=" + edits;<a name="line.4649"></a>
+<span class="sourceLineNo">4650</span>          LOG.debug(msg);<a name="line.4650"></a>
+<span class="sourceLineNo">4651</span>        }<a name="line.4651"></a>
+<span class="sourceLineNo">4652</span>        continue;<a name="line.4652"></a>
+<span class="sourceLineNo">4653</span>      }<a name="line.4653"></a>
+<span class="sourceLineNo">4654</span><a name="line.4654"></a>
+<span class="sourceLineNo">4655</span>      try {<a name="line.4655"></a>
+<span class="sourceLineNo">4656</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4656"></a>
+<span class="sourceLineNo">4657</span>        // if seqId is greater<a name="line.4657"></a>
+<span class="sourceLineNo">4658</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4658"></a>
+<span class="sourceLineNo">4659</span>      } catch (IOException e) {<a name="line.4659"></a>
+<span class="sourceLineNo">4660</span>        boolean skipErrors = conf.getBoolean(<a name="line.4660"></a>
+<span class="sourceLineNo">4661</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4661"></a>
+<span class="sourceLineNo">4662</span>            conf.getBoolean(<a name="line.4662"></a>
+<span class="sourceLineNo">4663</span>                "hbase.skip.errors",<a name="line.4663"></a>
+<span class="sourceLineNo">4664</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4664"></a>
+<span class="sourceLineNo">4665</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4665"></a>
+<span class="sourceLineNo">4666</span>          LOG.warn(<a name="line.4666"></a>
+<span class="sourceLineNo">4667</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4667"></a>
+<span class="sourceLineNo">4668</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4668"></a>
+<span class="sourceLineNo">4669</span>        }<a name="line.4669"></a>
+<span class="sourceLineNo">4670</span>        if (skipErrors) {<a name="line.4670"></a>
+<span class="sourceLineNo">4671</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4671"></a>
+<span class="sourceLineNo">4672</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4672"></a>
+<span class="sourceLineNo">4673</span>              + "=true so continuing. Renamed " + edits +<a name="line.4673"></a>
+<span class="sourceLineNo">4674</span>              " as " + p, e);<a name="line.4674"></a>
+<span class="sourceLineNo">4675</span>        } else {<a name="line.4675"></a>
+<span class="sourceLineNo">4676</span>          throw e;<a name="line.4676"></a>
+<span class="sourceLineNo">4677</span>        }<a name="line.4677"></a>
+<span class="sourceLineNo">4678</span>      }<a name="line.4678"></a>
+<span class="sourceLineNo">4679</span>    }<a name="line.4679"></a>
+<span class="sourceLineNo">4680</span>    return seqid;<a name="line.4680"></a>
+<span class="sourceLineNo">4681</span>  }<a name="line.4681"></a>
 <span class="sourceLineNo">4682</span><a name="line.4682"></a>
-<span class="sourceLineNo">4683</span>    status.setStatus("Opening recovered edits");<a name="line.4683"></a>
-<span class="sourceLineNo">4684</span>    WAL.Reader reader = null;<a name="line.4684"></a>
-<span class="sourceLineNo">4685</span>    try {<a name="line.4685"></a>
-<span class="sourceLineNo">4686</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4686"></a>
-<span class="sourceLineNo">4687</span>      long currentEditSeqId = -1;<a name="line.4687"></a>
-<span class="sourceLineNo">4688</span>      long currentReplaySeqId = -1;<a name="line.4688"></a>
-<span class="sourceLineNo">4689</span>      long firstSeqIdInLog = -1;<a name="line.4689"></a>
-<span class="sourceLineNo">4690</span>      long skippedEdits = 0;<a name="line.4690"></a>
-<span class="sourceLineNo">4691</span>      long editsCount = 0;<a name="line.4691"></a>
-<span class="sourceLineNo">4692</span>      long intervalEdits = 0;<a name="line.4692"></a>
-<span class="sourceLineNo">4693</span>      WAL.Entry entry;<a name="line.4693"></a>
-<span class="sourceLineNo">4694</span>      HStore store = null;<a name="line.4694"></a>
-<span class="sourceLineNo">4695</span>      boolean reported_once = false;<a name="line.4695"></a>
-<span class="sourceLineNo">4696</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4696"></a>
-<span class="sourceLineNo">4697</span><a name="line.4697"></a>
-<span class="sourceLineNo">4698</span>      try {<a name="line.4698"></a>
-<span class="sourceLineNo">4699</span>        // How many edits seen before we check elapsed time<a name="line.4699"></a>
-<span class="sourceLineNo">4700</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4700"></a>
-<span class="sourceLineNo">4701</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4701"></a>
-<span class="sourceLineNo">4702</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4702"></a>
-<span class="sourceLineNo">4703</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4703"></a>
-<span class="sourceLineNo">4704</span><a name="line.4704"></a>
-<span class="sourceLineNo">4705</span>        if (coprocessorHost != null) {<a name="line.4705"></a>
-<span class="sourceLineNo">4706</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4706"></a>
-<span class="sourceLineNo">4707</span>        }<a name="line.4707"></a>
-<span class="sourceLineNo">4708</span><a name="line.4708"></a>
-<span class="sourceLineNo">4709</span>        while ((entry = reader.next()) != null) {<a name="line.4709"></a>
-<span class="sourceLineNo">4710</span>          WALKey key = entry.getKey();<a name="line.4710"></a>
-<span class="sourceLineNo">4711</span>          WALEdit val = entry.getEdit();<a name="line.4711"></a>
-<span class="sourceLineNo">4712</span><a name="line.4712"></a>
-<span class="sourceLineNo">4713</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4713"></a>
-<span class="sourceLineNo">4714</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4714"></a>
-<span class="sourceLineNo">4715</span>          }<a name="line.4715"></a>
-<span class="sourceLineNo">4716</span><a name="line.4716"></a>
-<span class="sourceLineNo">4717</span>          if (reporter != null) {<a name="line.4717"></a>
-<span class="sourceLineNo">4718</span>            intervalEdits += val.size();<a name="line.4718"></a>
-<span class="sourceLineNo">4719</span>            if (intervalEdits &gt;= interval) {<a name="line.4719"></a>
-<span class="sourceLineNo">4720</span>              // Number of edits interval reached<a name="line.4720"></a>
-<span class="sourceLineNo">4721</span>              intervalEdits = 0;<a name="line.4721"></a>
-<span class="sourceLineNo">4722</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4722"></a>
-<span class="sourceLineNo">4723</span>              if (lastReport + period &lt;= cur) {<a name="line.4723"></a>
-<span class="sourceLineNo">4724</span>                status.setStatus("Replaying edits..." +<a name="line.4724"></a>
-<span class="sourceLineNo">4725</span>                    " skipped=" + skippedEdits +<a name="line.4725"></a>
-<span class="sourceLineNo">4726</span>                    " edits=" + editsCount);<a name="line.4726"></a>
-<span class="sourceLineNo">4727</span>                // Timeout reached<a name="line.4727"></a>
-<span class="sourceLineNo">4728</span>                if(!reporter.progress()) {<a name="line.4728"></a>
-<span class="sourceLineNo">4729</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4729"></a>
-<span class="sourceLineNo">4730</span>                  LOG.warn(msg);<a name="line.4730"></a>
-<span class="sourceLineNo">4731</span>                  status.abort(msg);<a name="line.4731"></a>
-<span class="sourceLineNo">4732</span>                  throw new IOException(msg);<a name="line.4732"></a>
-<span class="sourceLineNo">4733</span>                }<a name="line.4733"></a>
-<span class="sourceLineNo">4734</span>                reported_once = true;<a name="line.4734"></a>
-<span class="sourceLineNo">4735</span>                lastReport = cur;<a name="line.4735"></a>
-<span class="sourceLineNo">4736</span>              }<a name="line.4736"></a>
-<span class="sourceLineNo">4737</span>            }<a name="line.4737"></a>
-<span class="sourceLineNo">4738</span>          }<a name="line.4738"></a>
-<span class="sourceLineNo">4739</span><a name="line.4739"></a>
-<span class="sourceLineNo">4740</span>          if (firstSeqIdInLog == -1) {<a name="line.4740"></a>
-<span class="sourceLineNo">4741</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4741"></a>
-<span class="sourceLineNo">4742</span>          }<a name="line.4742"></a>
-<span class="sourceLineNo">4743</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4743"></a>
-<span class="sourceLineNo">4744</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4744"></a>
-<span class="sourceLineNo">4745</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4745"></a>
-<span class="sourceLineNo">4746</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4746"></a>
-<span class="sourceLineNo">4747</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4747"></a>
-<span class="sourceLineNo">4748</span>                + "; edit=" + val);<a name="line.4748"></a>
-<span class="sourceLineNo">4749</span>          } else {<a name="line.4749"></a>
-<span class="sourceLineNo">4750</span>            currentEditSeqId = key.getSequenceId();<a name="line.4750"></a>
-<span class="sourceLineNo">4751</span>          }<a name="line.4751"></a>
-<span class="sourceLineNo">4752</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4752"></a>
-<span class="sourceLineNo">4753</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4753"></a>
-<span class="sourceLineNo">4754</span><a name="line.4754"></a>
-<span class="sourceLineNo">4755</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4755"></a>
-<span class="sourceLineNo">4756</span>          // instead of a KeyValue.<a name="line.4756"></a>
-<span class="sourceLineNo">4757</span>          if (coprocessorHost != null) {<a name="line.4757"></a>
-<span class="sourceLineNo">4758</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4758"></a>
-<span class="sourceLineNo">4759</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4759"></a>
-<span class="sourceLineNo">4760</span>              // if bypass this wal entry, ignore it ...<a name="line.4760"></a>
-<span class="sourceLineNo">4761</span>              continue;<a name="line.4761"></a>
-<span class="sourceLineNo">4762</span>            }<a name="line.4762"></a>
-<span class="sourceLineNo">4763</span>          }<a name="line.4763"></a>
-<span class="sourceLineNo">4764</span>          boolean checkRowWithinBoundary = false;<a name="line.4764"></a>
-<span class="sourceLineNo">4765</span>          // Check this edit is for this region.<a name="line.4765"></a>
-<span class="sourceLineNo">4766</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4766"></a>
-<span class="sourceLineNo">4767</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4767"></a>
-<span class="sourceLineNo">4768</span>            checkRowWithinBoundary = true;<a name="line.4768"></a>
-<span class="sourceLineNo">4769</span>          }<a name="line.4769"></a>
+<span class="sourceLineNo">4683</span>  /*<a name="line.4683"></a>
+<span class="sourceLineNo">4684</span>   * @param edits File of recovered edits.<a name="line.4684"></a>
+<span class="sourceLineNo">4685</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4685"></a>
+<span class="sourceLineNo">4686</span>   * must be larger than this to be replayed for each store.<a name="line.4686"></a>
+<span class="sourceLineNo">4687</span>   * @param reporter<a name="line.4687"></a>
+<span class="sourceLineNo">4688</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4688"></a>
+<span class="sourceLineNo">4689</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4689"></a>
+<span class="sourceLineNo">4690</span>   * @throws IOException<a name="line.4690"></a>
+<span class="sourceLineNo">4691</span>   */<a name="line.4691"></a>
+<span class="sourceLineNo">4692</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4692"></a>
+<span class="sourceLineNo">4693</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4693"></a>
+<span class="sourceLineNo">4694</span>    throws IOException {<a name="line.4694"></a>
+<span class="sourceLineNo">4695</span>    String msg = "Replaying edits from " + edits;<a name="line.4695"></a>
+<span class="sourceLineNo">4696</span>    LOG.info(msg);<a name="line.4696"></a>
+<span class="sourceLineNo">4697</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4697"></a>
+<span class="sourceLineNo">4698</span><a name="line.4698"></a>
+<span class="sourceLineNo">4699</span>    status.setStatus("Opening recovered edits");<a name="line.4699"></a>
+<span class="sourceLineNo">4700</span>    WAL.Reader reader = null;<a name="line.4700"></a>
+<span class="sourceLineNo">4701</span>    try {<a name="line.4701"></a>
+<span class="sourceLineNo">4702</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4702"></a>
+<span class="sourceLineNo">4703</span>      long currentEditSeqId = -1;<a name="line.4703"></a>
+<span class="sourceLineNo">4704</span>      long currentReplaySeqId = -1;<a name="line.4704"></a>
+<span class="sourceLineNo">4705</span>      long firstSeqIdInLog = -1;<a name="line.4705"></a>
+<span class="sourceLineNo">4706</span>      long skippedEdits = 0;<a name="line.4706"></a>
+<span class="sourceLineNo">4707</span>      long editsCount = 0;<a name="line.4707"></a>
+<span class="sourceLineNo">4708</span>      long intervalEdits = 0;<a name="line.4708"></a>
+<span class="sourceLineNo">4709</span>      WAL.Entry entry;<a name="line.4709"></a>
+<span class="sourceLineNo">4710</span>      HStore store = null;<a name="line.4710"></a>
+<span class="sourceLineNo">4711</span>      boolean reported_once = false;<a name="line.4711"></a>
+<span class="sourceLineNo">4712</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4712"></a>
+<span class="sourceLineNo">4713</span><a name="line.4713"></a>
+<span class="sourceLineNo">4714</span>      try {<a name="line.4714"></a>
+<span class="sourceLineNo">4715</span>        // How many edits seen before we check elapsed time<a name="line.4715"></a>
+<span class="sourceLineNo">4716</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4716"></a>
+<span class="sourceLineNo">4717</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4717"></a>
+<span class="sourceLineNo">4718</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4718"></a>
+<span class="sourceLineNo">4719</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4719"></a>
+<span class="sourceLineNo">4720</span><a name="line.4720"></a>
+<span class="sourceLineNo">4721</span>        if (coprocessorHost != null) {<a name="line.4721"></a>
+<span class="sourceLineNo">4722</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4722"></a>
+<span class="sourceLineNo">4723</span>        }<a name="line.4723"></a>
+<span class="sourceLineNo">4724</span><a name="line.4724"></a>
+<span class="sourceLineNo">4725</span>        while ((entry = reader.next()) != null) {<a name="line.4725"></a>
+<span class="sourceLineNo">4726</span>          WALKey key = entry.getKey();<a name="line.4726"></a>
+<span class="sourceLineNo">4727</span>          WALEdit val = entry.getEdit();<a name="line.4727"></a>
+<span class="sourceLineNo">4728</span><a name="line.4728"></a>
+<span class="sourceLineNo">4729</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4729"></a>
+<span class="sourceLineNo">4730</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4730"></a>
+<span class="sourceLineNo">4731</span>          }<a name="line.4731"></a>
+<span class="sourceLineNo">4732</span><a name="line.4732"></a>
+<span class="sourceLineNo">4733</span>          if (reporter != null) {<a name="line.4733"></a>
+<span class="sourceLineNo">4734</span>            intervalEdits += val.size();<a name="line.4734"></a>
+<span class="sourceLineNo">4735</span>            if (intervalEdits &gt;= interval) {<a name="line.4735"></a>
+<span class="sourceLineNo">4736</span>              // Number of edits interval reached<a name="line.4736"></a>
+<span class="sourceLineNo">4737</span>              intervalEdits = 0;<a name="line.4737"></a>
+<span class="sourceLineNo">4738</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4738"></a>
+<span class="sourceLineNo">4739</span>              if (lastReport + period &lt;= cur) {<a name="line.4739"></a>
+<span class="sourceLineNo">4740</span>                status.setStatus("Replaying edits..." +<a name="line.4740"></a>
+<span class="sourceLineNo">4741</span>                    " skipped=" + skippedEdits +<a name="line.4741"></a>
+<span class="sourceLineNo">4742</span>                    " edits=" + editsCount);<a name="line.4742"></a>
+<span class="sourceLineNo">4743</span>                // Timeout reached<a name="line.4743"></a>
+<span class="sourceLineNo">4744</span>                if(!reporter.progress()) {<a name="line.4744"></a>
+<span class="sourceLineNo">4745</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4745"></a>
+<span class="sourceLineNo">4746</span>                  LOG.warn(msg);<a name="line.4746"></a>
+<span class="sourceLineNo">4747</span>                  status.abort(msg);<a name="line.4747"></a>
+<span class="sourceLineNo">4748</span>                  throw new IOException(msg);<a name="line.4748"></a>
+<span class="sourceLineNo">4749</span>                }<a name="line.4749"></a>
+<span class="sourceLineNo">4750</span>                reported_once = true;<a name="line.4750"></a>
+<span class="sourceLineNo">4751</span>                lastReport = cur;<a name="line.4751"></a>
+<span class="sourceLineNo">4752</span>              }<a name="line.4752"></a>
+<span class="sourceLineNo">4753</span>            }<a name="line.4753"></a>
+<span class="sourceLineNo">4754</span>          }<a name="line.4754"></a>
+<span class="sourceLineNo">4755</span><a name="line.4755"></a>
+<span class="sourceLineNo">4756</span>          if (firstSeqIdInLog == -1) {<a name="line.4756"></a>
+<span class="sourceLineNo">4757</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4757"></a>
+<span class="sourceLineNo">4758</span>          }<a name="line.4758"></a>
+<span class="sourceLineNo">4759</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4759"></a>
+<span class="sourceLineNo">4760</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4760"></a>
+<span class="sourceLineNo">4761</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4761"></a>
+<span class="sourceLineNo">4762</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4762"></a>
+<span class="sourceLineNo">4763</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4763"></a>
+<span class="sourceLineNo">4764</span>                + "; edit=" + val);<a name="line.4764"></a>
+<span class="sourceLineNo">4765</span>          } else {<a name="line.4765"></a>
+<span class="sourceLineNo">4766</span>            currentEditSeqId = key.getSequenceId();<a name="line.4766"></a>
+<span class="sourceLineNo">4767</span>          }<a name="line.4767"></a>
+<span class="sourceLineNo">4768</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4768"></a>
+<span class="sourceLineNo">4769</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4769"></a>
 <span class="sourceLineNo">4770</span><a name="line.4770"></a>
-<span class="sourceLineNo">4771</span>          boolean flush = false;<a name="line.4771"></a>
-<span class="sourceLineNo">4772</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4772"></a>
-<span class="sourceLineNo">4773</span>          for (Cell cell: val.getCells()) {<a name="line.4773"></a>
-<span class="sourceLineNo">4774</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4774"></a>
-<span class="sourceLineNo">4775</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4775"></a>
-<span class="sourceLineNo">4776</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4776"></a>
-<span class="sourceLineNo">4777</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4777"></a>
-<span class="sourceLineNo">4778</span>              if (!checkRowWithinBoundary) {<a name="line.4778"></a>
-<span class="sourceLineNo">4779</span>                //this is a special edit, we should handle it<a name="line.4779"></a>
-<span class="sourceLineNo">4780</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4780"></a>
-<span class="sourceLineNo">4781</span>                if (compaction != null) {<a name="line.4781"></a>
-<span class="sourceLineNo">4782</span>                  //replay the compaction<a name="line.4782"></a>
-<span class="sourceLineNo">4783</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4783"></a>
-<span class="sourceLineNo">4784</span>                }<a name="line.4784"></a>
-<span class="sourceLineNo">4785</span>              }<a name="line.4785"></a>
-<span class="sourceLineNo">4786</span>              skippedEdits++;<a name="line.4786"></a>
-<span class="sourceLineNo">4787</span>              continue;<a name="line.4787"></a>
-<span class="sourceLineNo">4788</span>            }<a name="line.4788"></a>
-<span class="sourceLineNo">4789</span>            // Figure which store the edit is meant for.<a name="line.4789"></a>
-<span class="sourceLineNo">4790</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4790"></a>
-<span class="sourceLineNo">4791</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4791"></a>
-<span class="sourceLineNo">4792</span>              store = getStore(cell);<a name="line.4792"></a>
-<span class="sourceLineNo">4793</span>            }<a name="line.4793"></a>
-<span class="sourceLineNo">4794</span>            if (store == null) {<a name="line.4794"></a>
-<span class="sourceLineNo">4795</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4795"></a>
-<span class="sourceLineNo">4796</span>              // crash and redeploy?<a name="line.4796"></a>
-<span class="sourceLineNo">4797</span>              LOG.warn("No family for " + cell);<a name="line.4797"></a>
-<span class="sourceLineNo">4798</span>              skippedEdits++;<a name="line.4798"></a>
-<span class="sourceLineNo">4799</span>              continue;<a name="line.4799"></a>
-<span class="sourceLineNo">4800</span>            }<a name="line.4800"></a>
-<span class="sourceLineNo">4801</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4801"></a>
-<span class="sourceLineNo">4802</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4802"></a>
-<span class="sourceLineNo">4803</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4803"></a>
-<span class="sourceLineNo">4804</span>              skippedEdits++;<a name="line.4804"></a>
-<span class="sourceLineNo">4805</span>              continue;<a name="line.4805"></a>
-<span class="sourceLineNo">4806</span>            }<a name="line.4806"></a>
-<span class="sourceLineNo">4807</span>            // Now, figure if we should skip this edit.<a name="line.4807"></a>
-<span class="sourceLineNo">4808</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4808"></a>
-<span class="sourceLineNo">4809</span>                .getName())) {<a name="line.4809"></a>
-<span class="sourceLineNo">4810</span>              skippedEdits++;<a name="line.4810"></a>
-<span class="sourceLineNo">4811</span>              continue;<a name="line.4811"></a>
-<span class="sourceLineNo">4812</span>            }<a name="line.4812"></a>
-<span class="sourceLineNo">4813</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4813"></a>
-<span class="sourceLineNo">4814</span><a name="line.4814"></a>
-<span class="sourceLineNo">4815</span>            restoreEdit(store, cell, memStoreSizing);<a name="line.4815"></a>
-<span class="sourceLineNo">4816</span>            editsCount++;<a name="line.4816"></a>
-<span class="sourceLineNo">4817</span>          }<a name="line.4817"></a>
-<span class="sourceLineNo">4818</span>          MemStoreSize mss = memStoreSizing.getMemStoreSize();<a name="line.4818"></a>
-<span class="sourceLineNo">4819</span>          incMemStoreSize(mss);<a name="line.4819"></a>
-<span class="sourceLineNo">4820</span>          flush = isFlushSize(this.memStoreSizing.getMemStoreSize());<a name="line.4820"></a>
-<span class="sourceLineNo">4821</span>          if (flush) {<a name="line.4821"></a>
-<span class="sourceLineNo">4822</span>            internalFlushcache(null, currentEditSeqId, stores.values(), status, false,<a name="line.4822"></a>
-<span class="sourceLineNo">4823</span>              FlushLifeCycleTracker.DUMMY);<a name="line.4823"></a>
-<span class="sourceLineNo">4824</span>          }<a name="line.4824"></a>
-<span class="sourceLineNo">4825</span><a name="line.4825"></a>
-<span class="sourceLineNo">4826</span>          if (coprocessorHost != null) {<a name="line.4826"></a>
-<span class="sourceLineNo">4827</span>            coprocessorHost.postWALRestore(this.getRegionInfo(), key, val);<a name="line.4827"></a>
-<span class="sourceLineNo">4828</span>          }<a name="line.4828"></a>
-<span class="sourceLineNo">4829</span>        }<a name="line.4829"></a>
+<span class="sourceLineNo">4771</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4771"></a>
+<span class="sourceLineNo">4772</span>          // instead of a KeyValue.<a name="line.4772"></a>
+<span class="sourceLineNo">4773</span>          if (coprocessorHost != null) {<a name="line.4773"></a>
+<span class="sourceLineNo">4774</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4774"></a>
+<span class="sourceLineNo">4775</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4775"></a>
+<span class="sourceLineNo">4776</span>              // if bypass this wal entry, ignore it ...<a name="line.4776"></a>
+<span class="sourceLineNo">4777</span>              continue;<a name="line.4777"></a>
+<span class="sourceLineNo">4778</span>            }<a name="line.4778"></a>
+<span class="sourceLineNo">4779</span>          }<a name="line.4779"></a>
+<span class="sourceLineNo">4780</span>          boolean checkRowWithinBoundary = false;<a name="line.4780"></a>
+<span class="sourceLineNo">4781</span>          // Check this edit is for this region.<a name="line.4781"></a>
+<span class="sourceLineNo">4782</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4782"></a>
+<span class="sourceLineNo">4783</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4783"></a>
+<span class="sourceLineNo">4784</span>            checkRowWithinBoundary = true;<a name="line.4784"></a>
+<span class="sourceLineNo">4785</span>          }<a name="line.4785"></a>
+<span class="sourceLineNo">4786</span><a name="line.4786"></a>
+<span class="sourceLineNo">4787</span>          boolean flush = false;<a name="line.4787"></a>
+<span class="sourceLineNo">4788</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4788"></a>
+<span class="sourceLineNo">4789</span>          for (Cell cell: val.getCells()) {<a name="line.4789"></a>
+<span class="sourceLineNo">4790</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4790"></a>
+<span class="sourceLineNo">4791</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4791"></a>
+<span class="sourceLineNo">4792</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4792"></a>
+<span class="sourceLineNo">4793</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4793"></a>
+<span class="sourceLineNo">4794</span>              if (!checkRowWithinBoundary) {<a name="line.4794"></a>
+<span class="sourceLineNo">4795</span>                //this is a special edit, we should handle it<a name="line.4795"></a>
+<span class="sourceLineNo">4796</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4796"></a>
+<span class="sourceLineNo">4797</span>                if (compaction != null) {<a name="line.4797"></a>
+<span class="sourceLineNo">4798</span>                  //replay the compaction<a name="line.4798"></a>
+<span class="sourceLineNo">4799</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4799"></a>
+<span class="sourceLineNo">4800</span>                }<a name="line.4800"></a>
+<span class="sourceLineNo">4801</span>              }<a name="line.4801"></a>
+<span class="sourceLineNo">4802</span>              skippedEdits++;<a name="line.4802"></a>
+<span class="sourceLineNo">4803</span>              continue;<a name="line.4803"></a>
+<span class="sourceLineNo">4804</span>            }<a name="line.4804"></a>
+<span class="sourceLineNo">4805</span>            // Figure which store the edit is meant for.<a name="line.4805"></a>
+<span class="sourceLineNo">4806</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4806"></a>
+<span class="sourceLineNo">4807</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4807"></a>
+<span class="sourceLineNo">4808</span>              store = getStore(cell);<a name="line.4808"></a>
+<span class="sourceLineNo">4809</span>            }<a name="line.4809"></a>
+<span class="sourceLineNo">4810</span>            if (store == null) {<a name="line.4810"></a>
+<span class="sourceLineNo">4811</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4811"></a>
+<span class="sourceLineNo">4812</span>              // crash and redeploy?<a name="line.4812"></a>
+<span class="sourceLineNo">4813</span>              LOG.warn("No family for " + cell);<a name="line.4813"></a>
+<span class="sourceLineNo">4814</span>              skippedEdits++;<a name="line.4814"></a>
+<span class="sourceLineNo">4815</span>              continue;<a name="line.4815"></a>
+<span class="sourceLineNo">4816</span>            }<a name="line.4816"></a>
+<span class="sourceLineNo">4817</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4817"></a>
+<span class="sourceLineNo">4818</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4818"></a>
+<span class="sourceLineNo">4819</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4819"></a>
+<span class="sourceLineNo">4820</span>              skippedEdits++;<a name="line.4820"></a>
+<span class="sourceLineNo">4821</span>              continue;<a name="line.4821"></a>
+<span class="sourceLineNo">4822</span>            }<a name="line.4822"></a>
+<span class="sourceLineNo">4823</span>            // Now, figure if we should skip this edit.<a name="line.4823"></a>
+<span class="sourceLineNo">4824</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4824"></a>
+<span class="sourceLineNo">4825</span>                .getName())) {<a name="line.4825"></a>
+<span class="sourceLineNo">4826</span>              skippedEdits++;<a name="line.4826"></a>
+<span class="sourceLineNo">4827</span>              continue;<a name="line.4827"></a>
+<span class="sourceLineNo">4828</span>            }<a name="line.4828"></a>
+<span class="sourceLineNo">4829</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4829"></a>
 <span class="sourceLineNo">4830</span><a name="line.4830"></a>
-<span class="sourceLineNo">4831</span>        if (coprocessorHost != null) {<a name="line.4831"></a>
-<span class="sourceLineNo">4832</span>          coprocessorHost.postReplayWALs(this.getRegionInfo(), edits);<a name="line.4832"></a>
-<span class="sourceLineNo">4833</span>        }<a name="line.4833"></a>
-<span class="sourceLineNo">4834</span>      } catch (EOFException eof) {<a name="line.4834"></a>
-<span class="sourceLineNo">4835</span>        Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4835"></a>
-<span class="sourceLineNo">4836</span>        msg = "EnLongAddered EOF. Most likely due to Master failure during " +<a name="line.4836"></a>
-<span class="sourceLineNo">4837</span>            "wal splitting, so we have this data in another edit.  " +<a name="line.4837"></a>
-<span class="sourceLineNo">4838</span>            "Continuing, but renaming " + edits + " as " + p;<a name="line.4838"></a>
-<span class="sourceLineNo">4839</span>        LOG.warn(msg, eof);<a name="line.4839"></a>
-<span class="sourceLineNo">4840</span>        status.abort(msg);<a name="line.4840"></a>
-<span class="sourceLineNo">4841</span>      } catch (IOException ioe) {<a name="line.4841"></a>
-<span class="sourceLineNo">4842</span>        // If the IOE resulted from bad file format,<a name="line.4842"></a>
-<span class="sourceLineNo">4843</span>        // then this problem is idempotent and retrying won't help<a name="line.4843"></a>
-<span class="sourceLineNo">4844</span>        if (ioe.getCause() instanceof ParseException) {<a name="line.4844"></a>
-<span class="sourceLineNo">4845</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4845"></a>
-<span class="sourceLineNo">4846</span>          msg = "File corruption enLongAddered!  " +<a name="line.4846"></a>
-<span class="sourceLineNo">4847</span>              "Continuing, but renaming " + edits + " as " + p;<a name="line.4847"></a>
-<span class="sourceLineNo">4848</span>          LOG.warn(msg, ioe);<a name="line.4848"></a>
-<span class="sourceLineNo">4849</span>          status.setStatus(msg);<a name="line.4849"></a>
-<span class="sourceLineNo">4850</span>        } else {<a name="line.4850"></a>
-<span class="sourceLineNo">4851</span>          status.abort(StringUtils.stringifyException(ioe));<a name="line.4851"></a>
-<span class="sourceLineNo">4852</span>          // other IO errors may be transient (bad network connection,<a name="line.4852"></a>
-<span class="sourceLineNo">4853</span>          // checksum exception on one datanode, etc).  throw &amp; retry<a name="line.4853"></a>
-<span class="sourceLineNo">4854</span>          throw ioe;<a name="line.4854"></a>
-<span class="sourceLineNo">4855</span>        }<a name="line.4855"></a>
-<span class="sourceLineNo">4856</span>      }<a name="line.4856"></a>
-<span class="sourceLineNo">4857</span>      if (reporter != null &amp;&amp; !reported_once) {<a name="line.4857"></a>
-<span class="sourceLineNo">4858</span>        reporter.progress();<a name="line.4858"></a>
-<span class="sourceLineNo">4859</span>      }<a name="line.4859"></a>
-<span class="sourceLineNo">4860</span>      msg = "Applied " + editsCount + ", skipped " + skippedEdits +<a name="line.4860"></a>
-<span class="sourceLineNo">4861</span>        ", firstSequenceIdInLog=" + firstSeqIdInLog +<a name="line.4861"></a>
-<span class="sourceLineNo">4862</span>        ", maxSequenceIdInLog=" + currentEditSeqId + ", path=" + edits;<a name="line.4862"></a>
-<span class="sourceLineNo">4863</span>      status.markComplete(msg);<a name="line.4863"></a>
-<span class="sourceLineNo">4864</span>      LOG.debug(msg);<a name="line.4864"></a>
-<span class="sourceLineNo">4865</span>      return currentEditSeqId;<a name="line.4865"></a>
-<span class="sourceLineNo">4866</span>    } finally {<a name="line.4866"></a>
-<span class="sourceLineNo">4867</span>      status.cleanup();<a name="line.4867"></a>
-<span class="sourceLineNo">4868</span>      if (reader != null) {<a name="line.4868"></a>
-<span class="sourceLineNo">4869</span>         reader.close();<a name="line.4869"></a>
-<span class="sourceLineNo">4870</span>      }<a name="line.4870"></a>
-<span class="sourceLineNo">4871</span>    }<a name="line.4871"></a>
-<span class="sourceLineNo">4872</span>  }<a name="line.4872"></a>
-<span class="sourceLineNo">4873</span><a name="line.4873"></a>
-<span class="sourceLineNo">4874</span>  /**<a name="line.4874"></a>
-<span class="sourceLineNo">4875</span>   * Call to complete a compaction. Its for the case where we find in the WAL a compaction<a name="line.4875"></a>
-<span class="sourceLineNo">4876</span>   * that was not finished.  We could find one recovering a WAL after a regionserver crash.<a name="line.4876"></a>
-<span class="sourceLineNo">4877</span>   * See HBASE-2331.<a name="line.4877"></a>
-<span class="sourceLineNo">4878</span>   */<a name="line.4878"></a>
-<span class="sourceLineNo">4879</span>  void replayWALCompactionMarker(CompactionDescriptor compaction, boolean pickCompactionFiles,<a name="line.4879"></a>
-<span class="sourceLineNo">4880</span>      boolean removeFiles, long replaySeqId)<a name="line.4880"></a>
-<span class="sourceLineNo">4881</span>      throws IOException {<a name="line.4881"></a>
-<span class="sourceLineNo">4882</span>    try {<a name="line.4882"></a>
-<span class="sourceLineNo">4883</span>      checkTargetRegion(compaction.getEncodedRegionName().toByteArray(),<a name="line.4883"></a>
-<span class="sourceLineNo">4884</span>        "Compaction marker from WAL ", compaction);<a name="line.4884"></a>
-<span class="sourceLineNo">4885</span>    } catch (WrongRegionException wre) {<a name="line.4885"></a>
-<span class="sourceLineNo">4886</span>      if (RegionReplicaUtil.isDefaultReplica(this.getRegionInfo())) {<a name="line.4886"></a>
-<span class="sourceLineNo">4887</span>        // skip the compaction marker since it is not for this region<a name="line.4887"></a>
-<span class="sourceLineNo">4888</span>        return;<a name="line.4888"></a>
-<span class="sourceLineNo">4889</span>      }<a name="line.4889"></a>
-<span class="sourceLineNo">4890</span>      throw wre;<a name="line.4890"></a>
-<span class="sourceLineNo">4891</span>    }<a name="line.4891"></a>
-<span class="sourceLineNo">4892</span><a name="line.4892"></a>
-<span class="sourceLineNo">4893</span>    synchronized (writestate) {<a name="line.4893"></a>
-<span class="sourceLineNo">4894</span>      if (replaySeqId &lt; lastReplayedOpenRegionSeqId) {<a name="line.4894"></a>
-<span class="sourceLineNo">4895</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4895"></a>
-<span class="sourceLineNo">4896</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4896"></a>
-<span class="sourceLineNo">4897</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4897"></a>
-<span class="sourceLineNo">4898</span>            + "lastReplayedOpenRegionSeqId of " + lastReplayedOpenRegionSeqId);<a name="line.4898"></a>
-<span class="sourceLineNo">4899</span>        return;<a name="line.4899"></a>
-<span class="sourceLineNo">4900</span>      }<a name="line.4900"></a>
-<span class="sourceLineNo">4901</span>      if (replaySeqId &lt; lastReplayedCompactionSeqId) {<a name="line.4901"></a>
-<span class="sourceLineNo">4902</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4902"></a>
-<span class="sourceLineNo">4903</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4903"></a>
-<span class="sourceLineNo">4904</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4904"></a>
-<span class="sourceLineNo">4905</span>            + "lastReplayedCompactionSeqId of " + lastReplayedCompactionSeqId);<a name="line.4905"></a>
-<span class="sourceLineNo">4906</span>        return;<a name="line.4906"></a>
-<span class="sourceLineNo">4907</span>      } else {<a name="line.4907"></a>
-<span class="sourceLineNo">4908</span>        lastReplayedCompactionSeqId = repla

<TRUNCATED>

[14/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 da040ad..d6702a7 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
@@ -2957,7 +2957,7 @@
 <span class="sourceLineNo">2949</span>        if(family == null) {<a name="line.2949"></a>
 <span class="sourceLineNo">2950</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2950"></a>
 <span class="sourceLineNo">2951</span>        }<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>        checkFamily(family);<a name="line.2952"></a>
+<span class="sourceLineNo">2952</span>        checkFamily(family, delete.getDurability());<a name="line.2952"></a>
 <span class="sourceLineNo">2953</span>      }<a name="line.2953"></a>
 <span class="sourceLineNo">2954</span>    }<a name="line.2954"></a>
 <span class="sourceLineNo">2955</span>  }<a name="line.2955"></a>
@@ -3569,7 +3569,7 @@
 <span class="sourceLineNo">3561</span><a name="line.3561"></a>
 <span class="sourceLineNo">3562</span>    @Override<a name="line.3562"></a>
 <span class="sourceLineNo">3563</span>    public void checkAndPreparePut(Put p) throws IOException {<a name="line.3563"></a>
-<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet());<a name="line.3564"></a>
+<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet(), p.getDurability());<a name="line.3564"></a>
 <span class="sourceLineNo">3565</span>    }<a name="line.3565"></a>
 <span class="sourceLineNo">3566</span><a name="line.3566"></a>
 <span class="sourceLineNo">3567</span>    @Override<a name="line.3567"></a>
@@ -4462,4304 +4462,4307 @@
 <span class="sourceLineNo">4454</span>    store.add(cell, memstoreAccounting);<a name="line.4454"></a>
 <span class="sourceLineNo">4455</span>  }<a name="line.4455"></a>
 <span class="sourceLineNo">4456</span><a name="line.4456"></a>
-<span class="sourceLineNo">4457</span>  /**<a name="line.4457"></a>
-<span class="sourceLineNo">4458</span>   * Check the collection of families for validity.<a name="line.4458"></a>
-<span class="sourceLineNo">4459</span>   * @param families<a name="line.4459"></a>
-<span class="sourceLineNo">4460</span>   * @throws NoSuchColumnFamilyException<a name="line.4460"></a>
-<span class="sourceLineNo">4461</span>   */<a name="line.4461"></a>
-<span class="sourceLineNo">4462</span>  public void checkFamilies(Collection&lt;byte[]&gt; families) throws NoSuchColumnFamilyException {<a name="line.4462"></a>
-<span class="sourceLineNo">4463</span>    for (byte[] family : families) {<a name="line.4463"></a>
-<span class="sourceLineNo">4464</span>      checkFamily(family);<a name="line.4464"></a>
-<span class="sourceLineNo">4465</span>    }<a name="line.4465"></a>
-<span class="sourceLineNo">4466</span>  }<a name="line.4466"></a>
-<span class="sourceLineNo">4467</span><a name="line.4467"></a>
-<span class="sourceLineNo">4468</span>  /**<a name="line.4468"></a>
-<span class="sourceLineNo">4469</span>   * Check the collection of families for valid timestamps<a name="line.4469"></a>
-<span class="sourceLineNo">4470</span>   * @param familyMap<a name="line.4470"></a>
-<span class="sourceLineNo">4471</span>   * @param now current timestamp<a name="line.4471"></a>
-<span class="sourceLineNo">4472</span>   * @throws FailedSanityCheckException<a name="line.4472"></a>
-<span class="sourceLineNo">4473</span>   */<a name="line.4473"></a>
-<span class="sourceLineNo">4474</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4474"></a>
-<span class="sourceLineNo">4475</span>      throws FailedSanityCheckException {<a name="line.4475"></a>
-<span class="sourceLineNo">4476</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4476"></a>
-<span class="sourceLineNo">4477</span>      return;<a name="line.4477"></a>
-<span class="sourceLineNo">4478</span>    }<a name="line.4478"></a>
-<span class="sourceLineNo">4479</span>    long maxTs = now + timestampSlop;<a name="line.4479"></a>
-<span class="sourceLineNo">4480</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4480"></a>
-<span class="sourceLineNo">4481</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4481"></a>
-<span class="sourceLineNo">4482</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4482"></a>
-<span class="sourceLineNo">4483</span>      assert kvs instanceof RandomAccess;<a name="line.4483"></a>
-<span class="sourceLineNo">4484</span>      int listSize  = kvs.size();<a name="line.4484"></a>
-<span class="sourceLineNo">4485</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4485"></a>
-<span class="sourceLineNo">4486</span>        Cell cell = kvs.get(i);<a name="line.4486"></a>
-<span class="sourceLineNo">4487</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4487"></a>
-<span class="sourceLineNo">4488</span>        long ts = cell.getTimestamp();<a name="line.4488"></a>
-<span class="sourceLineNo">4489</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4489"></a>
-<span class="sourceLineNo">4490</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4490"></a>
-<span class="sourceLineNo">4491</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4491"></a>
-<span class="sourceLineNo">4492</span>        }<a name="line.4492"></a>
-<span class="sourceLineNo">4493</span>      }<a name="line.4493"></a>
+<span class="sourceLineNo">4457</span>  private void checkFamilies(Collection&lt;byte[]&gt; families, Durability durability)<a name="line.4457"></a>
+<span class="sourceLineNo">4458</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4458"></a>
+<span class="sourceLineNo">4459</span>    for (byte[] family : families) {<a name="line.4459"></a>
+<span class="sourceLineNo">4460</span>      checkFamily(family, durability);<a name="line.4460"></a>
+<span class="sourceLineNo">4461</span>    }<a name="line.4461"></a>
+<span class="sourceLineNo">4462</span>  }<a name="line.4462"></a>
+<span class="sourceLineNo">4463</span><a name="line.4463"></a>
+<span class="sourceLineNo">4464</span>  private void checkFamily(final byte[] family, Durability durability)<a name="line.4464"></a>
+<span class="sourceLineNo">4465</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4465"></a>
+<span class="sourceLineNo">4466</span>    checkFamily(family);<a name="line.4466"></a>
+<span class="sourceLineNo">4467</span>    if (durability.equals(Durability.SKIP_WAL)<a name="line.4467"></a>
+<span class="sourceLineNo">4468</span>        &amp;&amp; htableDescriptor.getColumnFamily(family).getScope()<a name="line.4468"></a>
+<span class="sourceLineNo">4469</span>        != HConstants.REPLICATION_SCOPE_LOCAL) {<a name="line.4469"></a>
+<span class="sourceLineNo">4470</span>      throw new InvalidMutationDurabilityException(<a name="line.4470"></a>
+<span class="sourceLineNo">4471</span>          "Mutation's durability is SKIP_WAL but table's column family " + Bytes.toString(family)<a name="line.4471"></a>
+<span class="sourceLineNo">4472</span>              + " need replication");<a name="line.4472"></a>
+<span class="sourceLineNo">4473</span>    }<a name="line.4473"></a>
+<span class="sourceLineNo">4474</span>  }<a name="line.4474"></a>
+<span class="sourceLineNo">4475</span><a name="line.4475"></a>
+<span class="sourceLineNo">4476</span>  void checkFamily(final byte[] family) throws NoSuchColumnFamilyException {<a name="line.4476"></a>
+<span class="sourceLineNo">4477</span>    if (!this.htableDescriptor.hasColumnFamily(family)) {<a name="line.4477"></a>
+<span class="sourceLineNo">4478</span>      throw new NoSuchColumnFamilyException(<a name="line.4478"></a>
+<span class="sourceLineNo">4479</span>          "Column family " + Bytes.toString(family) + " does not exist in region " + this<a name="line.4479"></a>
+<span class="sourceLineNo">4480</span>              + " in table " + this.htableDescriptor);<a name="line.4480"></a>
+<span class="sourceLineNo">4481</span>    }<a name="line.4481"></a>
+<span class="sourceLineNo">4482</span>  }<a name="line.4482"></a>
+<span class="sourceLineNo">4483</span><a name="line.4483"></a>
+<span class="sourceLineNo">4484</span>  /**<a name="line.4484"></a>
+<span class="sourceLineNo">4485</span>   * Check the collection of families for valid timestamps<a name="line.4485"></a>
+<span class="sourceLineNo">4486</span>   * @param familyMap<a name="line.4486"></a>
+<span class="sourceLineNo">4487</span>   * @param now current timestamp<a name="line.4487"></a>
+<span class="sourceLineNo">4488</span>   * @throws FailedSanityCheckException<a name="line.4488"></a>
+<span class="sourceLineNo">4489</span>   */<a name="line.4489"></a>
+<span class="sourceLineNo">4490</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4490"></a>
+<span class="sourceLineNo">4491</span>      throws FailedSanityCheckException {<a name="line.4491"></a>
+<span class="sourceLineNo">4492</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4492"></a>
+<span class="sourceLineNo">4493</span>      return;<a name="line.4493"></a>
 <span class="sourceLineNo">4494</span>    }<a name="line.4494"></a>
-<span class="sourceLineNo">4495</span>  }<a name="line.4495"></a>
-<span class="sourceLineNo">4496</span><a name="line.4496"></a>
-<span class="sourceLineNo">4497</span>  /*<a name="line.4497"></a>
-<span class="sourceLineNo">4498</span>   * @param size<a name="line.4498"></a>
-<span class="sourceLineNo">4499</span>   * @return True if size is over the flush threshold<a name="line.4499"></a>
-<span class="sourceLineNo">4500</span>   */<a name="line.4500"></a>
-<span class="sourceLineNo">4501</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4501"></a>
-<span class="sourceLineNo">4502</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4502"></a>
-<span class="sourceLineNo">4503</span>  }<a name="line.4503"></a>
-<span class="sourceLineNo">4504</span><a name="line.4504"></a>
-<span class="sourceLineNo">4505</span>  /**<a name="line.4505"></a>
-<span class="sourceLineNo">4506</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4506"></a>
-<span class="sourceLineNo">4507</span>   * the recovered edits back up into this region.<a name="line.4507"></a>
-<span class="sourceLineNo">4508</span>   *<a name="line.4508"></a>
-<span class="sourceLineNo">4509</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4509"></a>
-<span class="sourceLineNo">4510</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4510"></a>
-<span class="sourceLineNo">4511</span>   * reflected in the HFiles.)<a name="line.4511"></a>
-<span class="sourceLineNo">4512</span>   *<a name="line.4512"></a>
-<span class="sourceLineNo">4513</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4513"></a>
-<span class="sourceLineNo">4514</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4514"></a>
-<span class="sourceLineNo">4515</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4515"></a>
-<span class="sourceLineNo">4516</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4516"></a>
-<span class="sourceLineNo">4517</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4517"></a>
-<span class="sourceLineNo">4518</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4518"></a>
-<span class="sourceLineNo">4519</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4519"></a>
-<span class="sourceLineNo">4520</span>   * edits.<a name="line.4520"></a>
-<span class="sourceLineNo">4521</span>   *<a name="line.4521"></a>
-<span class="sourceLineNo">4522</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4522"></a>
-<span class="sourceLineNo">4523</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4523"></a>
-<span class="sourceLineNo">4524</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4524"></a>
-<span class="sourceLineNo">4525</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4525"></a>
-<span class="sourceLineNo">4526</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4526"></a>
-<span class="sourceLineNo">4527</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4527"></a>
-<span class="sourceLineNo">4528</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4528"></a>
-<span class="sourceLineNo">4529</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4529"></a>
-<span class="sourceLineNo">4530</span>   * make sense in a this single region context only -- until we online.<a name="line.4530"></a>
-<span class="sourceLineNo">4531</span>   *<a name="line.4531"></a>
-<span class="sourceLineNo">4532</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4532"></a>
-<span class="sourceLineNo">4533</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4533"></a>
-<span class="sourceLineNo">4534</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4534"></a>
-<span class="sourceLineNo">4535</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4535"></a>
-<span class="sourceLineNo">4536</span>   * @throws IOException<a name="line.4536"></a>
-<span class="sourceLineNo">4537</span>   */<a name="line.4537"></a>
-<span class="sourceLineNo">4538</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4538"></a>
-<span class="sourceLineNo">4539</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4539"></a>
-<span class="sourceLineNo">4540</span>      throws IOException {<a name="line.4540"></a>
-<span class="sourceLineNo">4541</span>    long minSeqIdForTheRegion = -1;<a name="line.4541"></a>
-<span class="sourceLineNo">4542</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4542"></a>
-<span class="sourceLineNo">4543</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4543"></a>
-<span class="sourceLineNo">4544</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4544"></a>
-<span class="sourceLineNo">4545</span>      }<a name="line.4545"></a>
-<span class="sourceLineNo">4546</span>    }<a name="line.4546"></a>
-<span class="sourceLineNo">4547</span>    long seqid = minSeqIdForTheRegion;<a name="line.4547"></a>
-<span class="sourceLineNo">4548</span><a name="line.4548"></a>
-<span class="sourceLineNo">4549</span>    FileSystem walFS = getWalFileSystem();<a name="line.4549"></a>
-<span class="sourceLineNo">4550</span>    FileSystem rootFS = getFilesystem();<a name="line.4550"></a>
-<span class="sourceLineNo">4551</span>    Path regionDir = getWALRegionDir();<a name="line.4551"></a>
-<span class="sourceLineNo">4552</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4552"></a>
-<span class="sourceLineNo">4553</span><a name="line.4553"></a>
-<span class="sourceLineNo">4554</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4554"></a>
-<span class="sourceLineNo">4555</span>    // under the root dir even if walDir is set.<a name="line.4555"></a>
-<span class="sourceLineNo">4556</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4556"></a>
-<span class="sourceLineNo">4557</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4557"></a>
-<span class="sourceLineNo">4558</span>      filesUnderRootDir =<a name="line.4558"></a>
-<span class="sourceLineNo">4559</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4559"></a>
-<span class="sourceLineNo">4560</span>      seqid = Math.max(seqid,<a name="line.4560"></a>
-<span class="sourceLineNo">4561</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4561"></a>
-<span class="sourceLineNo">4562</span>              defaultRegionDir));<a name="line.4562"></a>
-<span class="sourceLineNo">4563</span>    }<a name="line.4563"></a>
+<span class="sourceLineNo">4495</span>    long maxTs = now + timestampSlop;<a name="line.4495"></a>
+<span class="sourceLineNo">4496</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4496"></a>
+<span class="sourceLineNo">4497</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4497"></a>
+<span class="sourceLineNo">4498</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4498"></a>
+<span class="sourceLineNo">4499</span>      assert kvs instanceof RandomAccess;<a name="line.4499"></a>
+<span class="sourceLineNo">4500</span>      int listSize  = kvs.size();<a name="line.4500"></a>
+<span class="sourceLineNo">4501</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4501"></a>
+<span class="sourceLineNo">4502</span>        Cell cell = kvs.get(i);<a name="line.4502"></a>
+<span class="sourceLineNo">4503</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4503"></a>
+<span class="sourceLineNo">4504</span>        long ts = cell.getTimestamp();<a name="line.4504"></a>
+<span class="sourceLineNo">4505</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4505"></a>
+<span class="sourceLineNo">4506</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4506"></a>
+<span class="sourceLineNo">4507</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4507"></a>
+<span class="sourceLineNo">4508</span>        }<a name="line.4508"></a>
+<span class="sourceLineNo">4509</span>      }<a name="line.4509"></a>
+<span class="sourceLineNo">4510</span>    }<a name="line.4510"></a>
+<span class="sourceLineNo">4511</span>  }<a name="line.4511"></a>
+<span class="sourceLineNo">4512</span><a name="line.4512"></a>
+<span class="sourceLineNo">4513</span>  /*<a name="line.4513"></a>
+<span class="sourceLineNo">4514</span>   * @param size<a name="line.4514"></a>
+<span class="sourceLineNo">4515</span>   * @return True if size is over the flush threshold<a name="line.4515"></a>
+<span class="sourceLineNo">4516</span>   */<a name="line.4516"></a>
+<span class="sourceLineNo">4517</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4517"></a>
+<span class="sourceLineNo">4518</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4518"></a>
+<span class="sourceLineNo">4519</span>  }<a name="line.4519"></a>
+<span class="sourceLineNo">4520</span><a name="line.4520"></a>
+<span class="sourceLineNo">4521</span>  /**<a name="line.4521"></a>
+<span class="sourceLineNo">4522</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4522"></a>
+<span class="sourceLineNo">4523</span>   * the recovered edits back up into this region.<a name="line.4523"></a>
+<span class="sourceLineNo">4524</span>   *<a name="line.4524"></a>
+<span class="sourceLineNo">4525</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4525"></a>
+<span class="sourceLineNo">4526</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4526"></a>
+<span class="sourceLineNo">4527</span>   * reflected in the HFiles.)<a name="line.4527"></a>
+<span class="sourceLineNo">4528</span>   *<a name="line.4528"></a>
+<span class="sourceLineNo">4529</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4529"></a>
+<span class="sourceLineNo">4530</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4530"></a>
+<span class="sourceLineNo">4531</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4531"></a>
+<span class="sourceLineNo">4532</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4532"></a>
+<span class="sourceLineNo">4533</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4533"></a>
+<span class="sourceLineNo">4534</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4534"></a>
+<span class="sourceLineNo">4535</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4535"></a>
+<span class="sourceLineNo">4536</span>   * edits.<a name="line.4536"></a>
+<span class="sourceLineNo">4537</span>   *<a name="line.4537"></a>
+<span class="sourceLineNo">4538</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4538"></a>
+<span class="sourceLineNo">4539</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4539"></a>
+<span class="sourceLineNo">4540</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4540"></a>
+<span class="sourceLineNo">4541</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4541"></a>
+<span class="sourceLineNo">4542</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4542"></a>
+<span class="sourceLineNo">4543</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4543"></a>
+<span class="sourceLineNo">4544</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4544"></a>
+<span class="sourceLineNo">4545</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4545"></a>
+<span class="sourceLineNo">4546</span>   * make sense in a this single region context only -- until we online.<a name="line.4546"></a>
+<span class="sourceLineNo">4547</span>   *<a name="line.4547"></a>
+<span class="sourceLineNo">4548</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4548"></a>
+<span class="sourceLineNo">4549</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4549"></a>
+<span class="sourceLineNo">4550</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4550"></a>
+<span class="sourceLineNo">4551</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4551"></a>
+<span class="sourceLineNo">4552</span>   * @throws IOException<a name="line.4552"></a>
+<span class="sourceLineNo">4553</span>   */<a name="line.4553"></a>
+<span class="sourceLineNo">4554</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4554"></a>
+<span class="sourceLineNo">4555</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4555"></a>
+<span class="sourceLineNo">4556</span>      throws IOException {<a name="line.4556"></a>
+<span class="sourceLineNo">4557</span>    long minSeqIdForTheRegion = -1;<a name="line.4557"></a>
+<span class="sourceLineNo">4558</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4558"></a>
+<span class="sourceLineNo">4559</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4559"></a>
+<span class="sourceLineNo">4560</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4560"></a>
+<span class="sourceLineNo">4561</span>      }<a name="line.4561"></a>
+<span class="sourceLineNo">4562</span>    }<a name="line.4562"></a>
+<span class="sourceLineNo">4563</span>    long seqid = minSeqIdForTheRegion;<a name="line.4563"></a>
 <span class="sourceLineNo">4564</span><a name="line.4564"></a>
-<span class="sourceLineNo">4565</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4565"></a>
-<span class="sourceLineNo">4566</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4566"></a>
-<span class="sourceLineNo">4567</span>        files, reporter, regionDir));<a name="line.4567"></a>
-<span class="sourceLineNo">4568</span><a name="line.4568"></a>
-<span class="sourceLineNo">4569</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4569"></a>
-<span class="sourceLineNo">4570</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4570"></a>
-<span class="sourceLineNo">4571</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4571"></a>
-<span class="sourceLineNo">4572</span>    }<a name="line.4572"></a>
-<span class="sourceLineNo">4573</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4573"></a>
-<span class="sourceLineNo">4574</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4574"></a>
-<span class="sourceLineNo">4575</span>      // For debugging data loss issues!<a name="line.4575"></a>
-<span class="sourceLineNo">4576</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4576"></a>
-<span class="sourceLineNo">4577</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4577"></a>
-<span class="sourceLineNo">4578</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4578"></a>
-<span class="sourceLineNo">4579</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4579"></a>
-<span class="sourceLineNo">4580</span>      for (Path file: files) {<a name="line.4580"></a>
-<span class="sourceLineNo">4581</span>        fakeStoreFiles.add(<a name="line.4581"></a>
-<span class="sourceLineNo">4582</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4582"></a>
-<span class="sourceLineNo">4583</span>      }<a name="line.4583"></a>
-<span class="sourceLineNo">4584</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4584"></a>
-<span class="sourceLineNo">4585</span>    } else {<a name="line.4585"></a>
-<span class="sourceLineNo">4586</span>      if (filesUnderRootDir != null) {<a name="line.4586"></a>
-<span class="sourceLineNo">4587</span>        for (Path file : filesUnderRootDir) {<a name="line.4587"></a>
-<span class="sourceLineNo">4588</span>          if (!rootFS.delete(file, false)) {<a name="line.4588"></a>
-<span class="sourceLineNo">4589</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4589"></a>
-<span class="sourceLineNo">4590</span>          } else {<a name="line.4590"></a>
-<span class="sourceLineNo">4591</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4591"></a>
-<span class="sourceLineNo">4592</span>          }<a name="line.4592"></a>
-<span class="sourceLineNo">4593</span>        }<a name="line.4593"></a>
-<span class="sourceLineNo">4594</span>      }<a name="line.4594"></a>
-<span class="sourceLineNo">4595</span>      for (Path file: files) {<a name="line.4595"></a>
-<span class="sourceLineNo">4596</span>        if (!walFS.delete(file, false)) {<a name="line.4596"></a>
-<span class="sourceLineNo">4597</span>          LOG.error("Failed delete of " + file);<a name="line.4597"></a>
-<span class="sourceLineNo">4598</span>        } else {<a name="line.4598"></a>
-<span class="sourceLineNo">4599</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4599"></a>
-<span class="sourceLineNo">4600</span>        }<a name="line.4600"></a>
-<span class="sourceLineNo">4601</span>      }<a name="line.4601"></a>
-<span class="sourceLineNo">4602</span>    }<a name="line.4602"></a>
-<span class="sourceLineNo">4603</span>    return seqid;<a name="line.4603"></a>
-<span class="sourceLineNo">4604</span>  }<a name="line.4604"></a>
-<span class="sourceLineNo">4605</span><a name="line.4605"></a>
-<span class="sourceLineNo">4606</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4606"></a>
-<span class="sourceLineNo">4607</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4607"></a>
-<span class="sourceLineNo">4608</span>      throws IOException {<a name="line.4608"></a>
-<span class="sourceLineNo">4609</span>    long seqid = minSeqIdForTheRegion;<a name="line.4609"></a>
-<span class="sourceLineNo">4610</span>    if (LOG.isDebugEnabled()) {<a name="line.4610"></a>
-<span class="sourceLineNo">4611</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4611"></a>
-<span class="sourceLineNo">4612</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4612"></a>
-<span class="sourceLineNo">4613</span>    }<a name="line.4613"></a>
-<span class="sourceLineNo">4614</span><a name="line.4614"></a>
-<span class="sourceLineNo">4615</span>    if (files == null || files.isEmpty()) {<a name="line.4615"></a>
-<span class="sourceLineNo">4616</span>      return minSeqIdForTheRegion;<a name="line.4616"></a>
-<span class="sourceLineNo">4617</span>    }<a name="line.4617"></a>
-<span class="sourceLineNo">4618</span><a name="line.4618"></a>
-<span class="sourceLineNo">4619</span>    for (Path edits: files) {<a name="line.4619"></a>
-<span class="sourceLineNo">4620</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4620"></a>
-<span class="sourceLineNo">4621</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4621"></a>
-<span class="sourceLineNo">4622</span>        continue;<a name="line.4622"></a>
-<span class="sourceLineNo">4623</span>      }<a name="line.4623"></a>
-<span class="sourceLineNo">4624</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4624"></a>
-<span class="sourceLineNo">4625</span><a name="line.4625"></a>
-<span class="sourceLineNo">4626</span>      long maxSeqId;<a name="line.4626"></a>
-<span class="sourceLineNo">4627</span>      String fileName = edits.getName();<a name="line.4627"></a>
-<span class="sourceLineNo">4628</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4628"></a>
-<span class="sourceLineNo">4629</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4629"></a>
-<span class="sourceLineNo">4630</span>        if (LOG.isDebugEnabled()) {<a name="line.4630"></a>
-<span class="sourceLineNo">4631</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4631"></a>
-<span class="sourceLineNo">4632</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4632"></a>
-<span class="sourceLineNo">4633</span>              + ", skipped the whole file, path=" + edits;<a name="line.4633"></a>
-<span class="sourceLineNo">4634</span>          LOG.debug(msg);<a name="line.4634"></a>
-<span class="sourceLineNo">4635</span>        }<a name="line.4635"></a>
-<span class="sourceLineNo">4636</span>        continue;<a name="line.4636"></a>
-<span class="sourceLineNo">4637</span>      }<a name="line.4637"></a>
-<span class="sourceLineNo">4638</span><a name="line.4638"></a>
-<span class="sourceLineNo">4639</span>      try {<a name="line.4639"></a>
-<span class="sourceLineNo">4640</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4640"></a>
-<span class="sourceLineNo">4641</span>        // if seqId is greater<a name="line.4641"></a>
-<span class="sourceLineNo">4642</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4642"></a>
-<span class="sourceLineNo">4643</span>      } catch (IOException e) {<a name="line.4643"></a>
-<span class="sourceLineNo">4644</span>        boolean skipErrors = conf.getBoolean(<a name="line.4644"></a>
-<span class="sourceLineNo">4645</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4645"></a>
-<span class="sourceLineNo">4646</span>            conf.getBoolean(<a name="line.4646"></a>
-<span class="sourceLineNo">4647</span>                "hbase.skip.errors",<a name="line.4647"></a>
-<span class="sourceLineNo">4648</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4648"></a>
-<span class="sourceLineNo">4649</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4649"></a>
-<span class="sourceLineNo">4650</span>          LOG.warn(<a name="line.4650"></a>
-<span class="sourceLineNo">4651</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4651"></a>
-<span class="sourceLineNo">4652</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4652"></a>
-<span class="sourceLineNo">4653</span>        }<a name="line.4653"></a>
-<span class="sourceLineNo">4654</span>        if (skipErrors) {<a name="line.4654"></a>
-<span class="sourceLineNo">4655</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4655"></a>
-<span class="sourceLineNo">4656</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4656"></a>
-<span class="sourceLineNo">4657</span>              + "=true so continuing. Renamed " + edits +<a name="line.4657"></a>
-<span class="sourceLineNo">4658</span>              " as " + p, e);<a name="line.4658"></a>
-<span class="sourceLineNo">4659</span>        } else {<a name="line.4659"></a>
-<span class="sourceLineNo">4660</span>          throw e;<a name="line.4660"></a>
-<span class="sourceLineNo">4661</span>        }<a name="line.4661"></a>
-<span class="sourceLineNo">4662</span>      }<a name="line.4662"></a>
-<span class="sourceLineNo">4663</span>    }<a name="line.4663"></a>
-<span class="sourceLineNo">4664</span>    return seqid;<a name="line.4664"></a>
-<span class="sourceLineNo">4665</span>  }<a name="line.4665"></a>
-<span class="sourceLineNo">4666</span><a name="line.4666"></a>
-<span class="sourceLineNo">4667</span>  /*<a name="line.4667"></a>
-<span class="sourceLineNo">4668</span>   * @param edits File of recovered edits.<a name="line.4668"></a>
-<span class="sourceLineNo">4669</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4669"></a>
-<span class="sourceLineNo">4670</span>   * must be larger than this to be replayed for each store.<a name="line.4670"></a>
-<span class="sourceLineNo">4671</span>   * @param reporter<a name="line.4671"></a>
-<span class="sourceLineNo">4672</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4672"></a>
-<span class="sourceLineNo">4673</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4673"></a>
-<span class="sourceLineNo">4674</span>   * @throws IOException<a name="line.4674"></a>
-<span class="sourceLineNo">4675</span>   */<a name="line.4675"></a>
-<span class="sourceLineNo">4676</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4676"></a>
-<span class="sourceLineNo">4677</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4677"></a>
-<span class="sourceLineNo">4678</span>    throws IOException {<a name="line.4678"></a>
-<span class="sourceLineNo">4679</span>    String msg = "Replaying edits from " + edits;<a name="line.4679"></a>
-<span class="sourceLineNo">4680</span>    LOG.info(msg);<a name="line.4680"></a>
-<span class="sourceLineNo">4681</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4681"></a>
+<span class="sourceLineNo">4565</span>    FileSystem walFS = getWalFileSystem();<a name="line.4565"></a>
+<span class="sourceLineNo">4566</span>    FileSystem rootFS = getFilesystem();<a name="line.4566"></a>
+<span class="sourceLineNo">4567</span>    Path regionDir = getWALRegionDir();<a name="line.4567"></a>
+<span class="sourceLineNo">4568</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4568"></a>
+<span class="sourceLineNo">4569</span><a name="line.4569"></a>
+<span class="sourceLineNo">4570</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4570"></a>
+<span class="sourceLineNo">4571</span>    // under the root dir even if walDir is set.<a name="line.4571"></a>
+<span class="sourceLineNo">4572</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4572"></a>
+<span class="sourceLineNo">4573</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4573"></a>
+<span class="sourceLineNo">4574</span>      filesUnderRootDir =<a name="line.4574"></a>
+<span class="sourceLineNo">4575</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4575"></a>
+<span class="sourceLineNo">4576</span>      seqid = Math.max(seqid,<a name="line.4576"></a>
+<span class="sourceLineNo">4577</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4577"></a>
+<span class="sourceLineNo">4578</span>              defaultRegionDir));<a name="line.4578"></a>
+<span class="sourceLineNo">4579</span>    }<a name="line.4579"></a>
+<span class="sourceLineNo">4580</span><a name="line.4580"></a>
+<span class="sourceLineNo">4581</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4581"></a>
+<span class="sourceLineNo">4582</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4582"></a>
+<span class="sourceLineNo">4583</span>        files, reporter, regionDir));<a name="line.4583"></a>
+<span class="sourceLineNo">4584</span><a name="line.4584"></a>
+<span class="sourceLineNo">4585</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4585"></a>
+<span class="sourceLineNo">4586</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4586"></a>
+<span class="sourceLineNo">4587</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4587"></a>
+<span class="sourceLineNo">4588</span>    }<a name="line.4588"></a>
+<span class="sourceLineNo">4589</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4589"></a>
+<span class="sourceLineNo">4590</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4590"></a>
+<span class="sourceLineNo">4591</span>      // For debugging data loss issues!<a name="line.4591"></a>
+<span class="sourceLineNo">4592</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4592"></a>
+<span class="sourceLineNo">4593</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4593"></a>
+<span class="sourceLineNo">4594</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4594"></a>
+<span class="sourceLineNo">4595</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4595"></a>
+<span class="sourceLineNo">4596</span>      for (Path file: files) {<a name="line.4596"></a>
+<span class="sourceLineNo">4597</span>        fakeStoreFiles.add(<a name="line.4597"></a>
+<span class="sourceLineNo">4598</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4598"></a>
+<span class="sourceLineNo">4599</span>      }<a name="line.4599"></a>
+<span class="sourceLineNo">4600</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4600"></a>
+<span class="sourceLineNo">4601</span>    } else {<a name="line.4601"></a>
+<span class="sourceLineNo">4602</span>      if (filesUnderRootDir != null) {<a name="line.4602"></a>
+<span class="sourceLineNo">4603</span>        for (Path file : filesUnderRootDir) {<a name="line.4603"></a>
+<span class="sourceLineNo">4604</span>          if (!rootFS.delete(file, false)) {<a name="line.4604"></a>
+<span class="sourceLineNo">4605</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4605"></a>
+<span class="sourceLineNo">4606</span>          } else {<a name="line.4606"></a>
+<span class="sourceLineNo">4607</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4607"></a>
+<span class="sourceLineNo">4608</span>          }<a name="line.4608"></a>
+<span class="sourceLineNo">4609</span>        }<a name="line.4609"></a>
+<span class="sourceLineNo">4610</span>      }<a name="line.4610"></a>
+<span class="sourceLineNo">4611</span>      for (Path file: files) {<a name="line.4611"></a>
+<span class="sourceLineNo">4612</span>        if (!walFS.delete(file, false)) {<a name="line.4612"></a>
+<span class="sourceLineNo">4613</span>          LOG.error("Failed delete of " + file);<a name="line.4613"></a>
+<span class="sourceLineNo">4614</span>        } else {<a name="line.4614"></a>
+<span class="sourceLineNo">4615</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4615"></a>
+<span class="sourceLineNo">4616</span>        }<a name="line.4616"></a>
+<span class="sourceLineNo">4617</span>      }<a name="line.4617"></a>
+<span class="sourceLineNo">4618</span>    }<a name="line.4618"></a>
+<span class="sourceLineNo">4619</span>    return seqid;<a name="line.4619"></a>
+<span class="sourceLineNo">4620</span>  }<a name="line.4620"></a>
+<span class="sourceLineNo">4621</span><a name="line.4621"></a>
+<span class="sourceLineNo">4622</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4622"></a>
+<span class="sourceLineNo">4623</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4623"></a>
+<span class="sourceLineNo">4624</span>      throws IOException {<a name="line.4624"></a>
+<span class="sourceLineNo">4625</span>    long seqid = minSeqIdForTheRegion;<a name="line.4625"></a>
+<span class="sourceLineNo">4626</span>    if (LOG.isDebugEnabled()) {<a name="line.4626"></a>
+<span class="sourceLineNo">4627</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4627"></a>
+<span class="sourceLineNo">4628</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4628"></a>
+<span class="sourceLineNo">4629</span>    }<a name="line.4629"></a>
+<span class="sourceLineNo">4630</span><a name="line.4630"></a>
+<span class="sourceLineNo">4631</span>    if (files == null || files.isEmpty()) {<a name="line.4631"></a>
+<span class="sourceLineNo">4632</span>      return minSeqIdForTheRegion;<a name="line.4632"></a>
+<span class="sourceLineNo">4633</span>    }<a name="line.4633"></a>
+<span class="sourceLineNo">4634</span><a name="line.4634"></a>
+<span class="sourceLineNo">4635</span>    for (Path edits: files) {<a name="line.4635"></a>
+<span class="sourceLineNo">4636</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4636"></a>
+<span class="sourceLineNo">4637</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4637"></a>
+<span class="sourceLineNo">4638</span>        continue;<a name="line.4638"></a>
+<span class="sourceLineNo">4639</span>      }<a name="line.4639"></a>
+<span class="sourceLineNo">4640</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4640"></a>
+<span class="sourceLineNo">4641</span><a name="line.4641"></a>
+<span class="sourceLineNo">4642</span>      long maxSeqId;<a name="line.4642"></a>
+<span class="sourceLineNo">4643</span>      String fileName = edits.getName();<a name="line.4643"></a>
+<span class="sourceLineNo">4644</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4644"></a>
+<span class="sourceLineNo">4645</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4645"></a>
+<span class="sourceLineNo">4646</span>        if (LOG.isDebugEnabled()) {<a name="line.4646"></a>
+<span class="sourceLineNo">4647</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4647"></a>
+<span class="sourceLineNo">4648</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4648"></a>
+<span class="sourceLineNo">4649</span>              + ", skipped the whole file, path=" + edits;<a name="line.4649"></a>
+<span class="sourceLineNo">4650</span>          LOG.debug(msg);<a name="line.4650"></a>
+<span class="sourceLineNo">4651</span>        }<a name="line.4651"></a>
+<span class="sourceLineNo">4652</span>        continue;<a name="line.4652"></a>
+<span class="sourceLineNo">4653</span>      }<a name="line.4653"></a>
+<span class="sourceLineNo">4654</span><a name="line.4654"></a>
+<span class="sourceLineNo">4655</span>      try {<a name="line.4655"></a>
+<span class="sourceLineNo">4656</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4656"></a>
+<span class="sourceLineNo">4657</span>        // if seqId is greater<a name="line.4657"></a>
+<span class="sourceLineNo">4658</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4658"></a>
+<span class="sourceLineNo">4659</span>      } catch (IOException e) {<a name="line.4659"></a>
+<span class="sourceLineNo">4660</span>        boolean skipErrors = conf.getBoolean(<a name="line.4660"></a>
+<span class="sourceLineNo">4661</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4661"></a>
+<span class="sourceLineNo">4662</span>            conf.getBoolean(<a name="line.4662"></a>
+<span class="sourceLineNo">4663</span>                "hbase.skip.errors",<a name="line.4663"></a>
+<span class="sourceLineNo">4664</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4664"></a>
+<span class="sourceLineNo">4665</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4665"></a>
+<span class="sourceLineNo">4666</span>          LOG.warn(<a name="line.4666"></a>
+<span class="sourceLineNo">4667</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4667"></a>
+<span class="sourceLineNo">4668</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4668"></a>
+<span class="sourceLineNo">4669</span>        }<a name="line.4669"></a>
+<span class="sourceLineNo">4670</span>        if (skipErrors) {<a name="line.4670"></a>
+<span class="sourceLineNo">4671</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4671"></a>
+<span class="sourceLineNo">4672</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4672"></a>
+<span class="sourceLineNo">4673</span>              + "=true so continuing. Renamed " + edits +<a name="line.4673"></a>
+<span class="sourceLineNo">4674</span>              " as " + p, e);<a name="line.4674"></a>
+<span class="sourceLineNo">4675</span>        } else {<a name="line.4675"></a>
+<span class="sourceLineNo">4676</span>          throw e;<a name="line.4676"></a>
+<span class="sourceLineNo">4677</span>        }<a name="line.4677"></a>
+<span class="sourceLineNo">4678</span>      }<a name="line.4678"></a>
+<span class="sourceLineNo">4679</span>    }<a name="line.4679"></a>
+<span class="sourceLineNo">4680</span>    return seqid;<a name="line.4680"></a>
+<span class="sourceLineNo">4681</span>  }<a name="line.4681"></a>
 <span class="sourceLineNo">4682</span><a name="line.4682"></a>
-<span class="sourceLineNo">4683</span>    status.setStatus("Opening recovered edits");<a name="line.4683"></a>
-<span class="sourceLineNo">4684</span>    WAL.Reader reader = null;<a name="line.4684"></a>
-<span class="sourceLineNo">4685</span>    try {<a name="line.4685"></a>
-<span class="sourceLineNo">4686</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4686"></a>
-<span class="sourceLineNo">4687</span>      long currentEditSeqId = -1;<a name="line.4687"></a>
-<span class="sourceLineNo">4688</span>      long currentReplaySeqId = -1;<a name="line.4688"></a>
-<span class="sourceLineNo">4689</span>      long firstSeqIdInLog = -1;<a name="line.4689"></a>
-<span class="sourceLineNo">4690</span>      long skippedEdits = 0;<a name="line.4690"></a>
-<span class="sourceLineNo">4691</span>      long editsCount = 0;<a name="line.4691"></a>
-<span class="sourceLineNo">4692</span>      long intervalEdits = 0;<a name="line.4692"></a>
-<span class="sourceLineNo">4693</span>      WAL.Entry entry;<a name="line.4693"></a>
-<span class="sourceLineNo">4694</span>      HStore store = null;<a name="line.4694"></a>
-<span class="sourceLineNo">4695</span>      boolean reported_once = false;<a name="line.4695"></a>
-<span class="sourceLineNo">4696</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4696"></a>
-<span class="sourceLineNo">4697</span><a name="line.4697"></a>
-<span class="sourceLineNo">4698</span>      try {<a name="line.4698"></a>
-<span class="sourceLineNo">4699</span>        // How many edits seen before we check elapsed time<a name="line.4699"></a>
-<span class="sourceLineNo">4700</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4700"></a>
-<span class="sourceLineNo">4701</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4701"></a>
-<span class="sourceLineNo">4702</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4702"></a>
-<span class="sourceLineNo">4703</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4703"></a>
-<span class="sourceLineNo">4704</span><a name="line.4704"></a>
-<span class="sourceLineNo">4705</span>        if (coprocessorHost != null) {<a name="line.4705"></a>
-<span class="sourceLineNo">4706</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4706"></a>
-<span class="sourceLineNo">4707</span>        }<a name="line.4707"></a>
-<span class="sourceLineNo">4708</span><a name="line.4708"></a>
-<span class="sourceLineNo">4709</span>        while ((entry = reader.next()) != null) {<a name="line.4709"></a>
-<span class="sourceLineNo">4710</span>          WALKey key = entry.getKey();<a name="line.4710"></a>
-<span class="sourceLineNo">4711</span>          WALEdit val = entry.getEdit();<a name="line.4711"></a>
-<span class="sourceLineNo">4712</span><a name="line.4712"></a>
-<span class="sourceLineNo">4713</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4713"></a>
-<span class="sourceLineNo">4714</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4714"></a>
-<span class="sourceLineNo">4715</span>          }<a name="line.4715"></a>
-<span class="sourceLineNo">4716</span><a name="line.4716"></a>
-<span class="sourceLineNo">4717</span>          if (reporter != null) {<a name="line.4717"></a>
-<span class="sourceLineNo">4718</span>            intervalEdits += val.size();<a name="line.4718"></a>
-<span class="sourceLineNo">4719</span>            if (intervalEdits &gt;= interval) {<a name="line.4719"></a>
-<span class="sourceLineNo">4720</span>              // Number of edits interval reached<a name="line.4720"></a>
-<span class="sourceLineNo">4721</span>              intervalEdits = 0;<a name="line.4721"></a>
-<span class="sourceLineNo">4722</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4722"></a>
-<span class="sourceLineNo">4723</span>              if (lastReport + period &lt;= cur) {<a name="line.4723"></a>
-<span class="sourceLineNo">4724</span>                status.setStatus("Replaying edits..." +<a name="line.4724"></a>
-<span class="sourceLineNo">4725</span>                    " skipped=" + skippedEdits +<a name="line.4725"></a>
-<span class="sourceLineNo">4726</span>                    " edits=" + editsCount);<a name="line.4726"></a>
-<span class="sourceLineNo">4727</span>                // Timeout reached<a name="line.4727"></a>
-<span class="sourceLineNo">4728</span>                if(!reporter.progress()) {<a name="line.4728"></a>
-<span class="sourceLineNo">4729</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4729"></a>
-<span class="sourceLineNo">4730</span>                  LOG.warn(msg);<a name="line.4730"></a>
-<span class="sourceLineNo">4731</span>                  status.abort(msg);<a name="line.4731"></a>
-<span class="sourceLineNo">4732</span>                  throw new IOException(msg);<a name="line.4732"></a>
-<span class="sourceLineNo">4733</span>                }<a name="line.4733"></a>
-<span class="sourceLineNo">4734</span>                reported_once = true;<a name="line.4734"></a>
-<span class="sourceLineNo">4735</span>                lastReport = cur;<a name="line.4735"></a>
-<span class="sourceLineNo">4736</span>              }<a name="line.4736"></a>
-<span class="sourceLineNo">4737</span>            }<a name="line.4737"></a>
-<span class="sourceLineNo">4738</span>          }<a name="line.4738"></a>
-<span class="sourceLineNo">4739</span><a name="line.4739"></a>
-<span class="sourceLineNo">4740</span>          if (firstSeqIdInLog == -1) {<a name="line.4740"></a>
-<span class="sourceLineNo">4741</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4741"></a>
-<span class="sourceLineNo">4742</span>          }<a name="line.4742"></a>
-<span class="sourceLineNo">4743</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4743"></a>
-<span class="sourceLineNo">4744</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4744"></a>
-<span class="sourceLineNo">4745</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4745"></a>
-<span class="sourceLineNo">4746</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4746"></a>
-<span class="sourceLineNo">4747</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4747"></a>
-<span class="sourceLineNo">4748</span>                + "; edit=" + val);<a name="line.4748"></a>
-<span class="sourceLineNo">4749</span>          } else {<a name="line.4749"></a>
-<span class="sourceLineNo">4750</span>            currentEditSeqId = key.getSequenceId();<a name="line.4750"></a>
-<span class="sourceLineNo">4751</span>          }<a name="line.4751"></a>
-<span class="sourceLineNo">4752</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4752"></a>
-<span class="sourceLineNo">4753</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4753"></a>
-<span class="sourceLineNo">4754</span><a name="line.4754"></a>
-<span class="sourceLineNo">4755</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4755"></a>
-<span class="sourceLineNo">4756</span>          // instead of a KeyValue.<a name="line.4756"></a>
-<span class="sourceLineNo">4757</span>          if (coprocessorHost != null) {<a name="line.4757"></a>
-<span class="sourceLineNo">4758</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4758"></a>
-<span class="sourceLineNo">4759</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4759"></a>
-<span class="sourceLineNo">4760</span>              // if bypass this wal entry, ignore it ...<a name="line.4760"></a>
-<span class="sourceLineNo">4761</span>              continue;<a name="line.4761"></a>
-<span class="sourceLineNo">4762</span>            }<a name="line.4762"></a>
-<span class="sourceLineNo">4763</span>          }<a name="line.4763"></a>
-<span class="sourceLineNo">4764</span>          boolean checkRowWithinBoundary = false;<a name="line.4764"></a>
-<span class="sourceLineNo">4765</span>          // Check this edit is for this region.<a name="line.4765"></a>
-<span class="sourceLineNo">4766</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4766"></a>
-<span class="sourceLineNo">4767</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4767"></a>
-<span class="sourceLineNo">4768</span>            checkRowWithinBoundary = true;<a name="line.4768"></a>
-<span class="sourceLineNo">4769</span>          }<a name="line.4769"></a>
+<span class="sourceLineNo">4683</span>  /*<a name="line.4683"></a>
+<span class="sourceLineNo">4684</span>   * @param edits File of recovered edits.<a name="line.4684"></a>
+<span class="sourceLineNo">4685</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4685"></a>
+<span class="sourceLineNo">4686</span>   * must be larger than this to be replayed for each store.<a name="line.4686"></a>
+<span class="sourceLineNo">4687</span>   * @param reporter<a name="line.4687"></a>
+<span class="sourceLineNo">4688</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4688"></a>
+<span class="sourceLineNo">4689</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4689"></a>
+<span class="sourceLineNo">4690</span>   * @throws IOException<a name="line.4690"></a>
+<span class="sourceLineNo">4691</span>   */<a name="line.4691"></a>
+<span class="sourceLineNo">4692</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4692"></a>
+<span class="sourceLineNo">4693</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4693"></a>
+<span class="sourceLineNo">4694</span>    throws IOException {<a name="line.4694"></a>
+<span class="sourceLineNo">4695</span>    String msg = "Replaying edits from " + edits;<a name="line.4695"></a>
+<span class="sourceLineNo">4696</span>    LOG.info(msg);<a name="line.4696"></a>
+<span class="sourceLineNo">4697</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4697"></a>
+<span class="sourceLineNo">4698</span><a name="line.4698"></a>
+<span class="sourceLineNo">4699</span>    status.setStatus("Opening recovered edits");<a name="line.4699"></a>
+<span class="sourceLineNo">4700</span>    WAL.Reader reader = null;<a name="line.4700"></a>
+<span class="sourceLineNo">4701</span>    try {<a name="line.4701"></a>
+<span class="sourceLineNo">4702</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4702"></a>
+<span class="sourceLineNo">4703</span>      long currentEditSeqId = -1;<a name="line.4703"></a>
+<span class="sourceLineNo">4704</span>      long currentReplaySeqId = -1;<a name="line.4704"></a>
+<span class="sourceLineNo">4705</span>      long firstSeqIdInLog = -1;<a name="line.4705"></a>
+<span class="sourceLineNo">4706</span>      long skippedEdits = 0;<a name="line.4706"></a>
+<span class="sourceLineNo">4707</span>      long editsCount = 0;<a name="line.4707"></a>
+<span class="sourceLineNo">4708</span>      long intervalEdits = 0;<a name="line.4708"></a>
+<span class="sourceLineNo">4709</span>      WAL.Entry entry;<a name="line.4709"></a>
+<span class="sourceLineNo">4710</span>      HStore store = null;<a name="line.4710"></a>
+<span class="sourceLineNo">4711</span>      boolean reported_once = false;<a name="line.4711"></a>
+<span class="sourceLineNo">4712</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4712"></a>
+<span class="sourceLineNo">4713</span><a name="line.4713"></a>
+<span class="sourceLineNo">4714</span>      try {<a name="line.4714"></a>
+<span class="sourceLineNo">4715</span>        // How many edits seen before we check elapsed time<a name="line.4715"></a>
+<span class="sourceLineNo">4716</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4716"></a>
+<span class="sourceLineNo">4717</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4717"></a>
+<span class="sourceLineNo">4718</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4718"></a>
+<span class="sourceLineNo">4719</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4719"></a>
+<span class="sourceLineNo">4720</span><a name="line.4720"></a>
+<span class="sourceLineNo">4721</span>        if (coprocessorHost != null) {<a name="line.4721"></a>
+<span class="sourceLineNo">4722</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4722"></a>
+<span class="sourceLineNo">4723</span>        }<a name="line.4723"></a>
+<span class="sourceLineNo">4724</span><a name="line.4724"></a>
+<span class="sourceLineNo">4725</span>        while ((entry = reader.next()) != null) {<a name="line.4725"></a>
+<span class="sourceLineNo">4726</span>          WALKey key = entry.getKey();<a name="line.4726"></a>
+<span class="sourceLineNo">4727</span>          WALEdit val = entry.getEdit();<a name="line.4727"></a>
+<span class="sourceLineNo">4728</span><a name="line.4728"></a>
+<span class="sourceLineNo">4729</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4729"></a>
+<span class="sourceLineNo">4730</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4730"></a>
+<span class="sourceLineNo">4731</span>          }<a name="line.4731"></a>
+<span class="sourceLineNo">4732</span><a name="line.4732"></a>
+<span class="sourceLineNo">4733</span>          if (reporter != null) {<a name="line.4733"></a>
+<span class="sourceLineNo">4734</span>            intervalEdits += val.size();<a name="line.4734"></a>
+<span class="sourceLineNo">4735</span>            if (intervalEdits &gt;= interval) {<a name="line.4735"></a>
+<span class="sourceLineNo">4736</span>              // Number of edits interval reached<a name="line.4736"></a>
+<span class="sourceLineNo">4737</span>              intervalEdits = 0;<a name="line.4737"></a>
+<span class="sourceLineNo">4738</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4738"></a>
+<span class="sourceLineNo">4739</span>              if (lastReport + period &lt;= cur) {<a name="line.4739"></a>
+<span class="sourceLineNo">4740</span>                status.setStatus("Replaying edits..." +<a name="line.4740"></a>
+<span class="sourceLineNo">4741</span>                    " skipped=" + skippedEdits +<a name="line.4741"></a>
+<span class="sourceLineNo">4742</span>                    " edits=" + editsCount);<a name="line.4742"></a>
+<span class="sourceLineNo">4743</span>                // Timeout reached<a name="line.4743"></a>
+<span class="sourceLineNo">4744</span>                if(!reporter.progress()) {<a name="line.4744"></a>
+<span class="sourceLineNo">4745</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4745"></a>
+<span class="sourceLineNo">4746</span>                  LOG.warn(msg);<a name="line.4746"></a>
+<span class="sourceLineNo">4747</span>                  status.abort(msg);<a name="line.4747"></a>
+<span class="sourceLineNo">4748</span>                  throw new IOException(msg);<a name="line.4748"></a>
+<span class="sourceLineNo">4749</span>                }<a name="line.4749"></a>
+<span class="sourceLineNo">4750</span>                reported_once = true;<a name="line.4750"></a>
+<span class="sourceLineNo">4751</span>                lastReport = cur;<a name="line.4751"></a>
+<span class="sourceLineNo">4752</span>              }<a name="line.4752"></a>
+<span class="sourceLineNo">4753</span>            }<a name="line.4753"></a>
+<span class="sourceLineNo">4754</span>          }<a name="line.4754"></a>
+<span class="sourceLineNo">4755</span><a name="line.4755"></a>
+<span class="sourceLineNo">4756</span>          if (firstSeqIdInLog == -1) {<a name="line.4756"></a>
+<span class="sourceLineNo">4757</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4757"></a>
+<span class="sourceLineNo">4758</span>          }<a name="line.4758"></a>
+<span class="sourceLineNo">4759</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4759"></a>
+<span class="sourceLineNo">4760</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4760"></a>
+<span class="sourceLineNo">4761</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4761"></a>
+<span class="sourceLineNo">4762</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4762"></a>
+<span class="sourceLineNo">4763</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4763"></a>
+<span class="sourceLineNo">4764</span>                + "; edit=" + val);<a name="line.4764"></a>
+<span class="sourceLineNo">4765</span>          } else {<a name="line.4765"></a>
+<span class="sourceLineNo">4766</span>            currentEditSeqId = key.getSequenceId();<a name="line.4766"></a>
+<span class="sourceLineNo">4767</span>          }<a name="line.4767"></a>
+<span class="sourceLineNo">4768</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4768"></a>
+<span class="sourceLineNo">4769</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4769"></a>
 <span class="sourceLineNo">4770</span><a name="line.4770"></a>
-<span class="sourceLineNo">4771</span>          boolean flush = false;<a name="line.4771"></a>
-<span class="sourceLineNo">4772</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4772"></a>
-<span class="sourceLineNo">4773</span>          for (Cell cell: val.getCells()) {<a name="line.4773"></a>
-<span class="sourceLineNo">4774</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4774"></a>
-<span class="sourceLineNo">4775</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4775"></a>
-<span class="sourceLineNo">4776</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4776"></a>
-<span class="sourceLineNo">4777</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4777"></a>
-<span class="sourceLineNo">4778</span>              if (!checkRowWithinBoundary) {<a name="line.4778"></a>
-<span class="sourceLineNo">4779</span>                //this is a special edit, we should handle it<a name="line.4779"></a>
-<span class="sourceLineNo">4780</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4780"></a>
-<span class="sourceLineNo">4781</span>                if (compaction != null) {<a name="line.4781"></a>
-<span class="sourceLineNo">4782</span>                  //replay the compaction<a name="line.4782"></a>
-<span class="sourceLineNo">4783</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4783"></a>
-<span class="sourceLineNo">4784</span>                }<a name="line.4784"></a>
-<span class="sourceLineNo">4785</span>              }<a name="line.4785"></a>
-<span class="sourceLineNo">4786</span>              skippedEdits++;<a name="line.4786"></a>
-<span class="sourceLineNo">4787</span>              continue;<a name="line.4787"></a>
-<span class="sourceLineNo">4788</span>            }<a name="line.4788"></a>
-<span class="sourceLineNo">4789</span>            // Figure which store the edit is meant for.<a name="line.4789"></a>
-<span class="sourceLineNo">4790</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4790"></a>
-<span class="sourceLineNo">4791</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4791"></a>
-<span class="sourceLineNo">4792</span>              store = getStore(cell);<a name="line.4792"></a>
-<span class="sourceLineNo">4793</span>            }<a name="line.4793"></a>
-<span class="sourceLineNo">4794</span>            if (store == null) {<a name="line.4794"></a>
-<span class="sourceLineNo">4795</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4795"></a>
-<span class="sourceLineNo">4796</span>              // crash and redeploy?<a name="line.4796"></a>
-<span class="sourceLineNo">4797</span>              LOG.warn("No family for " + cell);<a name="line.4797"></a>
-<span class="sourceLineNo">4798</span>              skippedEdits++;<a name="line.4798"></a>
-<span class="sourceLineNo">4799</span>              continue;<a name="line.4799"></a>
-<span class="sourceLineNo">4800</span>            }<a name="line.4800"></a>
-<span class="sourceLineNo">4801</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4801"></a>
-<span class="sourceLineNo">4802</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4802"></a>
-<span class="sourceLineNo">4803</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4803"></a>
-<span class="sourceLineNo">4804</span>              skippedEdits++;<a name="line.4804"></a>
-<span class="sourceLineNo">4805</span>              continue;<a name="line.4805"></a>
-<span class="sourceLineNo">4806</span>            }<a name="line.4806"></a>
-<span class="sourceLineNo">4807</span>            // Now, figure if we should skip this edit.<a name="line.4807"></a>
-<span class="sourceLineNo">4808</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4808"></a>
-<span class="sourceLineNo">4809</span>                .getName())) {<a name="line.4809"></a>
-<span class="sourceLineNo">4810</span>              skippedEdits++;<a name="line.4810"></a>
-<span class="sourceLineNo">4811</span>              continue;<a name="line.4811"></a>
-<span class="sourceLineNo">4812</span>            }<a name="line.4812"></a>
-<span class="sourceLineNo">4813</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4813"></a>
-<span class="sourceLineNo">4814</span><a name="line.4814"></a>
-<span class="sourceLineNo">4815</span>            restoreEdit(store, cell, memStoreSizing);<a name="line.4815"></a>
-<span class="sourceLineNo">4816</span>            editsCount++;<a name="line.4816"></a>
-<span class="sourceLineNo">4817</span>          }<a name="line.4817"></a>
-<span class="sourceLineNo">4818</span>          MemStoreSize mss = memStoreSizing.getMemStoreSize();<a name="line.4818"></a>
-<span class="sourceLineNo">4819</span>          incMemStoreSize(mss);<a name="line.4819"></a>
-<span class="sourceLineNo">4820</span>          flush = isFlushSize(this.memStoreSizing.getMemStoreSize());<a name="line.4820"></a>
-<span class="sourceLineNo">4821</span>          if (flush) {<a name="line.4821"></a>
-<span class="sourceLineNo">4822</span>            internalFlushcache(null, currentEditSeqId, stores.values(), status, false,<a name="line.4822"></a>
-<span class="sourceLineNo">4823</span>              FlushLifeCycleTracker.DUMMY);<a name="line.4823"></a>
-<span class="sourceLineNo">4824</span>          }<a name="line.4824"></a>
-<span class="sourceLineNo">4825</span><a name="line.4825"></a>
-<span class="sourceLineNo">4826</span>          if (coprocessorHost != null) {<a name="line.4826"></a>
-<span class="sourceLineNo">4827</span>            coprocessorHost.postWALRestore(this.getRegionInfo(), key, val);<a name="line.4827"></a>
-<span class="sourceLineNo">4828</span>          }<a name="line.4828"></a>
-<span class="sourceLineNo">4829</span>        }<a name="line.4829"></a>
+<span class="sourceLineNo">4771</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4771"></a>
+<span class="sourceLineNo">4772</span>          // instead of a KeyValue.<a name="line.4772"></a>
+<span class="sourceLineNo">4773</span>          if (coprocessorHost != null) {<a name="line.4773"></a>
+<span class="sourceLineNo">4774</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4774"></a>
+<span class="sourceLineNo">4775</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4775"></a>
+<span class="sourceLineNo">4776</span>              // if bypass this wal entry, ignore it ...<a name="line.4776"></a>
+<span class="sourceLineNo">4777</span>              continue;<a name="line.4777"></a>
+<span class="sourceLineNo">4778</span>            }<a name="line.4778"></a>
+<span class="sourceLineNo">4779</span>          }<a name="line.4779"></a>
+<span class="sourceLineNo">4780</span>          boolean checkRowWithinBoundary = false;<a name="line.4780"></a>
+<span class="sourceLineNo">4781</span>          // Check this edit is for this region.<a name="line.4781"></a>
+<span class="sourceLineNo">4782</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4782"></a>
+<span class="sourceLineNo">4783</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4783"></a>
+<span class="sourceLineNo">4784</span>            checkRowWithinBoundary = true;<a name="line.4784"></a>
+<span class="sourceLineNo">4785</span>          }<a name="line.4785"></a>
+<span class="sourceLineNo">4786</span><a name="line.4786"></a>
+<span class="sourceLineNo">4787</span>          boolean flush = false;<a name="line.4787"></a>
+<span class="sourceLineNo">4788</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4788"></a>
+<span class="sourceLineNo">4789</span>          for (Cell cell: val.getCells()) {<a name="line.4789"></a>
+<span class="sourceLineNo">4790</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4790"></a>
+<span class="sourceLineNo">4791</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4791"></a>
+<span class="sourceLineNo">4792</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4792"></a>
+<span class="sourceLineNo">4793</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4793"></a>
+<span class="sourceLineNo">4794</span>              if (!checkRowWithinBoundary) {<a name="line.4794"></a>
+<span class="sourceLineNo">4795</span>                //this is a special edit, we should handle it<a name="line.4795"></a>
+<span class="sourceLineNo">4796</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4796"></a>
+<span class="sourceLineNo">4797</span>                if (compaction != null) {<a name="line.4797"></a>
+<span class="sourceLineNo">4798</span>                  //replay the compaction<a name="line.4798"></a>
+<span class="sourceLineNo">4799</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4799"></a>
+<span class="sourceLineNo">4800</span>                }<a name="line.4800"></a>
+<span class="sourceLineNo">4801</span>              }<a name="line.4801"></a>
+<span class="sourceLineNo">4802</span>              skippedEdits++;<a name="line.4802"></a>
+<span class="sourceLineNo">4803</span>              continue;<a name="line.4803"></a>
+<span class="sourceLineNo">4804</span>            }<a name="line.4804"></a>
+<span class="sourceLineNo">4805</span>            // Figure which store the edit is meant for.<a name="line.4805"></a>
+<span class="sourceLineNo">4806</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4806"></a>
+<span class="sourceLineNo">4807</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4807"></a>
+<span class="sourceLineNo">4808</span>              store = getStore(cell);<a name="line.4808"></a>
+<span class="sourceLineNo">4809</span>            }<a name="line.4809"></a>
+<span class="sourceLineNo">4810</span>            if (store == null) {<a name="line.4810"></a>
+<span class="sourceLineNo">4811</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4811"></a>
+<span class="sourceLineNo">4812</span>              // crash and redeploy?<a name="line.4812"></a>
+<span class="sourceLineNo">4813</span>              LOG.warn("No family for " + cell);<a name="line.4813"></a>
+<span class="sourceLineNo">4814</span>              skippedEdits++;<a name="line.4814"></a>
+<span class="sourceLineNo">4815</span>              continue;<a name="line.4815"></a>
+<span class="sourceLineNo">4816</span>            }<a name="line.4816"></a>
+<span class="sourceLineNo">4817</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4817"></a>
+<span class="sourceLineNo">4818</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4818"></a>
+<span class="sourceLineNo">4819</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4819"></a>
+<span class="sourceLineNo">4820</span>              skippedEdits++;<a name="line.4820"></a>
+<span class="sourceLineNo">4821</span>              continue;<a name="line.4821"></a>
+<span class="sourceLineNo">4822</span>            }<a name="line.4822"></a>
+<span class="sourceLineNo">4823</span>            // Now, figure if we should skip this edit.<a name="line.4823"></a>
+<span class="sourceLineNo">4824</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4824"></a>
+<span class="sourceLineNo">4825</span>                .getName())) {<a name="line.4825"></a>
+<span class="sourceLineNo">4826</span>              skippedEdits++;<a name="line.4826"></a>
+<span class="sourceLineNo">4827</span>              continue;<a name="line.4827"></a>
+<span class="sourceLineNo">4828</span>            }<a name="line.4828"></a>
+<span class="sourceLineNo">4829</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4829"></a>
 <span class="sourceLineNo">4830</span><a name="line.4830"></a>
-<span class="sourceLineNo">4831</span>        if (coprocessorHost != null) {<a name="line.4831"></a>
-<span class="sourceLineNo">4832</span>          coprocessorHost.postReplayWALs(this.getRegionInfo(), edits);<a name="line.4832"></a>
-<span class="sourceLineNo">4833</span>        }<a name="line.4833"></a>
-<span class="sourceLineNo">4834</span>      } catch (EOFException eof) {<a name="line.4834"></a>
-<span class="sourceLineNo">4835</span>        Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4835"></a>
-<span class="sourceLineNo">4836</span>        msg = "EnLongAddered EOF. Most likely due to Master failure during " +<a name="line.4836"></a>
-<span class="sourceLineNo">4837</span>            "wal splitting, so we have this data in another edit.  " +<a name="line.4837"></a>
-<span class="sourceLineNo">4838</span>            "Continuing, but renaming " + edits + " as " + p;<a name="line.4838"></a>
-<span class="sourceLineNo">4839</span>        LOG.warn(msg, eof);<a name="line.4839"></a>
-<span class="sourceLineNo">4840</span>        status.abort(msg);<a name="line.4840"></a>
-<span class="sourceLineNo">4841</span>      } catch (IOException ioe) {<a name="line.4841"></a>
-<span class="sourceLineNo">4842</span>        // If the IOE resulted from bad file format,<a name="line.4842"></a>
-<span class="sourceLineNo">4843</span>        // then this problem is idempotent and retrying won't help<a name="line.4843"></a>
-<span class="sourceLineNo">4844</span>        if (ioe.getCause() instanceof ParseException) {<a name="line.4844"></a>
-<span class="sourceLineNo">4845</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4845"></a>
-<span class="sourceLineNo">4846</span>          msg = "File corruption enLongAddered!  " +<a name="line.4846"></a>
-<span class="sourceLineNo">4847</span>              "Continuing, but renaming " + edits + " as " + p;<a name="line.4847"></a>
-<span class="sourceLineNo">4848</span>          LOG.warn(msg, ioe);<a name="line.4848"></a>
-<span class="sourceLineNo">4849</span>          status.setStatus(msg);<a name="line.4849"></a>
-<span class="sourceLineNo">4850</span>        } else {<a name="line.4850"></a>
-<span class="sourceLineNo">4851</span>          status.abort(StringUtils.stringifyException(ioe));<a name="line.4851"></a>
-<span class="sourceLineNo">4852</span>          // other IO errors may be transient (bad network connection,<a name="line.4852"></a>
-<span class="sourceLineNo">4853</span>          // checksum exception on one datanode, etc).  throw &amp; retry<a name="line.4853"></a>
-<span class="sourceLineNo">4854</span>          throw ioe;<a name="line.4854"></a>
-<span class="sourceLineNo">4855</span>        }<a name="line.4855"></a>
-<span class="sourceLineNo">4856</span>      }<a name="line.4856"></a>
-<span class="sourceLineNo">4857</span>      if (reporter != null &amp;&amp; !reported_once) {<a name="line.4857"></a>
-<span class="sourceLineNo">4858</span>        reporter.progress();<a name="line.4858"></a>
-<span class="sourceLineNo">4859</span>      }<a name="line.4859"></a>
-<span class="sourceLineNo">4860</span>      msg = "Applied " + editsCount + ", skipped " + skippedEdits +<a name="line.4860"></a>
-<span class="sourceLineNo">4861</span>        ", firstSequenceIdInLog=" + firstSeqIdInLog +<a name="line.4861"></a>
-<span class="sourceLineNo">4862</span>        ", maxSequenceIdInLog=" + currentEditSeqId + ", path=" + edits;<a name="line.4862"></a>
-<span class="sourceLineNo">4863</span>      status.markComplete(msg);<a name="line.4863"></a>
-<span class="sourceLineNo">4864</span>      LOG.debug(msg);<a name="line.4864"></a>
-<span class="sourceLineNo">4865</span>      return currentEditSeqId;<a name="line.4865"></a>
-<span class="sourceLineNo">4866</span>    } finally {<a name="line.4866"></a>
-<span class="sourceLineNo">4867</span>      status.cleanup();<a name="line.4867"></a>
-<span class="sourceLineNo">4868</span>      if (reader != null) {<a name="line.4868"></a>
-<span class="sourceLineNo">4869</span>         reader.close();<a name="line.4869"></a>
-<span class="sourceLineNo">4870</span>      }<a name="line.4870"></a>
-<span class="sourceLineNo">4871</span>    }<a name="line.4871"></a>
-<span class="sourceLineNo">4872</span>  }<a name="line.4872"></a>
-<span class="sourceLineNo">4873</span><a name="line.4873"></a>
-<span class="sourceLineNo">4874</span>  /**<a name="line.4874"></a>
-<span class="sourceLineNo">4875</span>   * Call to complete a compaction. Its for the case where we find in the WAL a compaction<a name="line.4875"></a>
-<span class="sourceLineNo">4876</span>   * that was not finished.  We could find one recovering a WAL after a regionserver crash.<a name="line.4876"></a>
-<span class="sourceLineNo">4877</span>   * See HBASE-2331.<a name="line.4877"></a>
-<span class="sourceLineNo">4878</span>   */<a name="line.4878"></a>
-<span class="sourceLineNo">4879</span>  void replayWALCompactionMarker(CompactionDescriptor compaction, boolean pickCompactionFiles,<a name="line.4879"></a>
-<span class="sourceLineNo">4880</span>      boolean removeFiles, long replaySeqId)<a name="line.4880"></a>
-<span class="sourceLineNo">4881</span>      throws IOException {<a name="line.4881"></a>
-<span class="sourceLineNo">4882</span>    try {<a name="line.4882"></a>
-<span class="sourceLineNo">4883</span>      checkTargetRegion(compaction.getEncodedRegionName().toByteArray(),<a name="line.4883"></a>
-<span class="sourceLineNo">4884</span>        "Compaction marker from WAL ", compaction);<a name="line.4884"></a>
-<span class="sourceLineNo">4885</span>    } catch (WrongRegionException wre) {<a name="line.4885"></a>
-<span class="sourceLineNo">4886</span>      if (RegionReplicaUtil.isDefaultReplica(this.getRegionInfo())) {<a name="line.4886"></a>
-<span class="sourceLineNo">4887</span>        // skip the compaction marker since it is not for this region<a name="line.4887"></a>
-<span class="sourceLineNo">4888</span>        return;<a name="line.4888"></a>
-<span class="sourceLineNo">4889</span>      }<a name="line.4889"></a>
-<span class="sourceLineNo">4890</span>      throw wre;<a name="line.4890"></a>
-<span class="sourceLineNo">4891</span>    }<a name="line.4891"></a>
-<span class="sourceLineNo">4892</span><a name="line.4892"></a>
-<span class="sourceLineNo">4893</span>    synchronized (writestate) {<a name="line.4893"></a>
-<span class="sourceLineNo">4894</span>      if (replaySeqId &lt; lastReplayedOpenRegionSeqId) {<a name="line.4894"></a>
-<span class="sourceLineNo">4895</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4895"></a>
-<span class="sourceLineNo">4896</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4896"></a>
-<span class="sourceLineNo">4897</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4897"></a>
-<span class="sourceLineNo">4898</span>            + "lastReplayedOpenRegionSeqId of " + lastReplayedOpenRegionSeqId);<a name="line.4898"></a>
-<span class="sourceLineNo">4899</span>        return;<a name="line.4899"></a>
-<span class="sourceLineNo">4900</span>      }<a name="line.4900"></a>
-<span class="sourceLineNo">4901</span>      if (replaySeqId &lt; lastReplayedCompactionSeqId) {<a name="line.4901"></a>
-<span class="sourceLineNo">4902</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4902"></a>
-<span class="sourceLineNo">4903</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4903"></a>
-<span class="sourceLineNo">4904</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4904"></a>
-<span class="sourceLineNo">4905</span>            + "lastReplayedCompactionSeqId of " + lastReplayedCompactionSeqId);<a name="line.4905"></a>
-<span class="sourceLineNo">4906</span>        return;<a name="line.4906"></a>
-<span class="sourceLineNo">4907</span>      } else {<a name="line.4907"></a>
-<span class="sourceLineNo">4908</span>        lastReplayedCompactionSeqId = replaySeqId;<a name="line.4908

<TRUNCATED>

[04/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/testdevapidocs/org/apache/hadoop/hbase/client/TestTableOperationException.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestTableOperationException.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestTableOperationException.html
new file mode 100644
index 0000000..2fbea95
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestTableOperationException.html
@@ -0,0 +1,625 @@
+<!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>TestTableOperationException (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="TestTableOperationException (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9,"i1":9,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10};
+var tabs = {65535:["t0","All Methods"],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/TestTableOperationException.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestTableFavoredNodes.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestTableOperationException.html" target="_top">Frames</a></li>
+<li><a href="TestTableOperationException.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.client</div>
+<h2 title="Class TestTableOperationException" class="title">Class TestTableOperationException</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.client.TestTableOperationException</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/client/TestTableOperationException.html#line.45">TestTableOperationException</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">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
+<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException.ThrowIOExceptionCoprocessor</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.html#CF">CF</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"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.html#CQ">CQ</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static org.apache.hadoop.hbase.TableName</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.html#TABLE_DONOT_RETRY">TABLE_DONOT_RETRY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static org.apache.hadoop.hbase.TableName</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.html#TABLE_RETRY">TABLE_RETRY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static org.apache.hadoop.hbase.client.Table</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.html#tableDoNotRetry">tableDoNotRetry</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static org.apache.hadoop.hbase.client.Table</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.html#tableRetry">tableRetry</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/client/TestTableOperationException.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/client/TestTableOperationException.html#TestTableOperationException--">TestTableOperationException</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/client/TestTableOperationException.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/client/TestTableOperationException.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/client/TestTableOperationException.html#testAppendWithDoNotRetryIOException--">testAppendWithDoNotRetryIOException</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/client/TestTableOperationException.html#testAppendWithIOException--">testAppendWithIOException</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/client/TestTableOperationException.html#testDeleteWithDoNotRetryIOException--">testDeleteWithDoNotRetryIOException</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.html#testDeleteWithIOException--">testDeleteWithIOException</a></span>()</code>&nbsp;</td>
+</tr>
+<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/client/TestTableOperationException.html#testGetWithDoNotRetryIOException--">testGetWithDoNotRetryIOException</a></span>()</code>&nbsp;</td>
+</tr>
+<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/client/TestTableOperationException.html#testGetWithIOException--">testGetWithIOException</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.html#testIncrementWithDoNotRetryIOException--">testIncrementWithDoNotRetryIOException</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.html#testIncrementWithIOException--">testIncrementWithIOException</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.html#testPutWithDoNotRetryIOException--">testPutWithDoNotRetryIOException</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.html#testPutWithIOException--">testPutWithIOException</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/client/TestTableOperationException.html#line.48">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/client/TestTableOperationException.html#line.51">UTIL</a></pre>
+</li>
+</ul>
+<a name="TABLE_DONOT_RETRY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>TABLE_DONOT_RETRY</h4>
+<pre>private static&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.html#line.53">TABLE_DONOT_RETRY</a></pre>
+</li>
+</ul>
+<a name="TABLE_RETRY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>TABLE_RETRY</h4>
+<pre>private static&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.html#line.55">TABLE_RETRY</a></pre>
+</li>
+</ul>
+<a name="tableDoNotRetry">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>tableDoNotRetry</h4>
+<pre>private static&nbsp;org.apache.hadoop.hbase.client.Table <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.html#line.57">tableDoNotRetry</a></pre>
+</li>
+</ul>
+<a name="tableRetry">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>tableRetry</h4>
+<pre>private static&nbsp;org.apache.hadoop.hbase.client.Table <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.html#line.59">tableRetry</a></pre>
+</li>
+</ul>
+<a name="CF">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CF</h4>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.html#line.61">CF</a></pre>
+</li>
+</ul>
+<a name="CQ">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>CQ</h4>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.html#line.63">CQ</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="TestTableOperationException--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestTableOperationException</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.html#line.45">TestTableOperationException</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/client/TestTableOperationException.html#line.66">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/client/TestTableOperationException.html#line.80">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="testGetWithDoNotRetryIOException--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testGetWithDoNotRetryIOException</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.html#line.89">testGetWithDoNotRetryIOException</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="testPutWithDoNotRetryIOException--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testPutWithDoNotRetryIOException</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.html#line.94">testPutWithDoNotRetryIOException</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="testDeleteWithDoNotRetryIOException--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testDeleteWithDoNotRetryIOException</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.html#line.99">testDeleteWithDoNotRetryIOException</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="testAppendWithDoNotRetryIOException--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testAppendWithDoNotRetryIOException</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.html#line.104">testAppendWithDoNotRetryIOException</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="testIncrementWithDoNotRetryIOException--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testIncrementWithDoNotRetryIOException</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.html#line.110">testIncrementWithDoNotRetryIOException</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="testGetWithIOException--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testGetWithIOException</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.html#line.115">testGetWithIOException</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="testPutWithIOException--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testPutWithIOException</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.html#line.120">testPutWithIOException</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="testDeleteWithIOException--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testDeleteWithIOException</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.html#line.125">testDeleteWithIOException</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="testAppendWithIOException--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testAppendWithIOException</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.html#line.130">testAppendWithIOException</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="testIncrementWithIOException--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testIncrementWithIOException</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestTableOperationException.html#line.135">testIncrementWithIOException</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/TestTableOperationException.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestTableFavoredNodes.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestTableOperationException.html" target="_top">Frames</a></li>
+<li><a href="TestTableOperationException.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;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/fa850293/testdevapidocs/org/apache/hadoop/hbase/client/TestTableShell.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestTableShell.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestTableShell.html
index 926afcf..86cd79f 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestTableShell.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestTableShell.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/client/TestTableFavoredNodes.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestTableSnapshotScanner.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -286,7 +286,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/AbstractTestShell
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/client/TestTableFavoredNodes.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestTableSnapshotScanner.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestInvalidMutationDurabilityException.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestInvalidMutationDurabilityException.html b/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestInvalidMutationDurabilityException.html
new file mode 100644
index 0000000..c5f8e1a
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestInvalidMutationDurabilityException.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.client.TestInvalidMutationDurabilityException (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.client.TestInvalidMutationDurabilityException (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/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">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/client/class-use/TestInvalidMutationDurabilityException.html" target="_top">Frames</a></li>
+<li><a href="TestInvalidMutationDurabilityException.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.client.TestInvalidMutationDurabilityException" class="title">Uses of Class<br>org.apache.hadoop.hbase.client.TestInvalidMutationDurabilityException</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.client.TestInvalidMutationDurabilityException</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/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">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/client/class-use/TestInvalidMutationDurabilityException.html" target="_top">Frames</a></li>
+<li><a href="TestInvalidMutationDurabilityException.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/fa850293/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html b/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html
new file mode 100644
index 0000000..f4c3edd
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.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.client.TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor (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.client.TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor (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/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">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/client/class-use/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" target="_top">Frames</a></li>
+<li><a href="TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.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.client.TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor" class="title">Uses of Class<br>org.apache.hadoop.hbase.client.TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.client.TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor</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/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">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/client/class-use/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" target="_top">Frames</a></li>
+<li><a href="TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.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/fa850293/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestTableOperationException.ThrowIOExceptionCoprocessor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestTableOperationException.ThrowIOExceptionCoprocessor.html b/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestTableOperationException.ThrowIOExceptionCoprocessor.html
new file mode 100644
index 0000000..246d63b
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestTableOperationException.ThrowIOExceptionCoprocessor.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.client.TestTableOperationException.ThrowIOExceptionCoprocessor (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.client.TestTableOperationException.ThrowIOExceptionCoprocessor (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/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">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/client/class-use/TestTableOperationException.ThrowIOExceptionCoprocessor.html" target="_top">Frames</a></li>
+<li><a href="TestTableOperationException.ThrowIOExceptionCoprocessor.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.client.TestTableOperationException.ThrowIOExceptionCoprocessor" class="title">Uses of Class<br>org.apache.hadoop.hbase.client.TestTableOperationException.ThrowIOExceptionCoprocessor</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.client.TestTableOperationException.ThrowIOExceptionCoprocessor</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/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">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/client/class-use/TestTableOperationException.ThrowIOExceptionCoprocessor.html" target="_top">Frames</a></li>
+<li><a href="TestTableOperationException.ThrowIOExceptionCoprocessor.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/fa850293/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestTableOperationException.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestTableOperationException.html b/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestTableOperationException.html
new file mode 100644
index 0000000..277a183
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestTableOperationException.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.client.TestTableOperationException (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.client.TestTableOperationException (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/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">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/client/class-use/TestTableOperationException.html" target="_top">Frames</a></li>
+<li><a href="TestTableOperationException.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.client.TestTableOperationException" class="title">Uses of Class<br>org.apache.hadoop.hbase.client.TestTableOperationException</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.client.TestTableOperationException</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/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">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/client/class-use/TestTableOperationException.html" target="_top">Frames</a></li>
+<li><a href="TestTableOperationException.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/fa850293/testdevapidocs/org/apache/hadoop/hbase/client/package-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/client/package-frame.html
index f5af383..bed2a31 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/package-frame.html
@@ -211,6 +211,7 @@
 <li><a href="TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestIncrementsFromClientSide</a></li>
 <li><a href="TestInterfaceAlign.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestInterfaceAlign</a></li>
 <li><a href="TestIntraRowPagination.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestIntraRowPagination</a></li>
+<li><a href="TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestInvalidMutationDurabilityException</a></li>
 <li><a href="TestLeaseRenewal.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestLeaseRenewal</a></li>
 <li><a href="TestLimitedScanWithFilter.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestLimitedScanWithFilter</a></li>
 <li><a href="TestMalformedCellFromClient.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestMalformedCellFromClient</a></li>
@@ -313,6 +314,9 @@
 <li><a href="TestTableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestTableDescriptorBuilder</a></li>
 <li><a href="TestTableDescriptorUtils.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestTableDescriptorUtils</a></li>
 <li><a href="TestTableFavoredNodes.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestTableFavoredNodes</a></li>
+<li><a href="TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestTableOperationException</a></li>
+<li><a href="TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor</a></li>
+<li><a href="TestTableOperationException.ThrowIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestTableOperationException.ThrowIOExceptionCoprocessor</a></li>
 <li><a href="TestTableShell.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestTableShell</a></li>
 <li><a href="TestTableSnapshotScanner.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestTableSnapshotScanner</a></li>
 <li><a href="TestTimestampsFilter.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestTimestampsFilter</a></li>


[16/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 da040ad..d6702a7 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
@@ -2957,7 +2957,7 @@
 <span class="sourceLineNo">2949</span>        if(family == null) {<a name="line.2949"></a>
 <span class="sourceLineNo">2950</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2950"></a>
 <span class="sourceLineNo">2951</span>        }<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>        checkFamily(family);<a name="line.2952"></a>
+<span class="sourceLineNo">2952</span>        checkFamily(family, delete.getDurability());<a name="line.2952"></a>
 <span class="sourceLineNo">2953</span>      }<a name="line.2953"></a>
 <span class="sourceLineNo">2954</span>    }<a name="line.2954"></a>
 <span class="sourceLineNo">2955</span>  }<a name="line.2955"></a>
@@ -3569,7 +3569,7 @@
 <span class="sourceLineNo">3561</span><a name="line.3561"></a>
 <span class="sourceLineNo">3562</span>    @Override<a name="line.3562"></a>
 <span class="sourceLineNo">3563</span>    public void checkAndPreparePut(Put p) throws IOException {<a name="line.3563"></a>
-<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet());<a name="line.3564"></a>
+<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet(), p.getDurability());<a name="line.3564"></a>
 <span class="sourceLineNo">3565</span>    }<a name="line.3565"></a>
 <span class="sourceLineNo">3566</span><a name="line.3566"></a>
 <span class="sourceLineNo">3567</span>    @Override<a name="line.3567"></a>
@@ -4462,4304 +4462,4307 @@
 <span class="sourceLineNo">4454</span>    store.add(cell, memstoreAccounting);<a name="line.4454"></a>
 <span class="sourceLineNo">4455</span>  }<a name="line.4455"></a>
 <span class="sourceLineNo">4456</span><a name="line.4456"></a>
-<span class="sourceLineNo">4457</span>  /**<a name="line.4457"></a>
-<span class="sourceLineNo">4458</span>   * Check the collection of families for validity.<a name="line.4458"></a>
-<span class="sourceLineNo">4459</span>   * @param families<a name="line.4459"></a>
-<span class="sourceLineNo">4460</span>   * @throws NoSuchColumnFamilyException<a name="line.4460"></a>
-<span class="sourceLineNo">4461</span>   */<a name="line.4461"></a>
-<span class="sourceLineNo">4462</span>  public void checkFamilies(Collection&lt;byte[]&gt; families) throws NoSuchColumnFamilyException {<a name="line.4462"></a>
-<span class="sourceLineNo">4463</span>    for (byte[] family : families) {<a name="line.4463"></a>
-<span class="sourceLineNo">4464</span>      checkFamily(family);<a name="line.4464"></a>
-<span class="sourceLineNo">4465</span>    }<a name="line.4465"></a>
-<span class="sourceLineNo">4466</span>  }<a name="line.4466"></a>
-<span class="sourceLineNo">4467</span><a name="line.4467"></a>
-<span class="sourceLineNo">4468</span>  /**<a name="line.4468"></a>
-<span class="sourceLineNo">4469</span>   * Check the collection of families for valid timestamps<a name="line.4469"></a>
-<span class="sourceLineNo">4470</span>   * @param familyMap<a name="line.4470"></a>
-<span class="sourceLineNo">4471</span>   * @param now current timestamp<a name="line.4471"></a>
-<span class="sourceLineNo">4472</span>   * @throws FailedSanityCheckException<a name="line.4472"></a>
-<span class="sourceLineNo">4473</span>   */<a name="line.4473"></a>
-<span class="sourceLineNo">4474</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4474"></a>
-<span class="sourceLineNo">4475</span>      throws FailedSanityCheckException {<a name="line.4475"></a>
-<span class="sourceLineNo">4476</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4476"></a>
-<span class="sourceLineNo">4477</span>      return;<a name="line.4477"></a>
-<span class="sourceLineNo">4478</span>    }<a name="line.4478"></a>
-<span class="sourceLineNo">4479</span>    long maxTs = now + timestampSlop;<a name="line.4479"></a>
-<span class="sourceLineNo">4480</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4480"></a>
-<span class="sourceLineNo">4481</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4481"></a>
-<span class="sourceLineNo">4482</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4482"></a>
-<span class="sourceLineNo">4483</span>      assert kvs instanceof RandomAccess;<a name="line.4483"></a>
-<span class="sourceLineNo">4484</span>      int listSize  = kvs.size();<a name="line.4484"></a>
-<span class="sourceLineNo">4485</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4485"></a>
-<span class="sourceLineNo">4486</span>        Cell cell = kvs.get(i);<a name="line.4486"></a>
-<span class="sourceLineNo">4487</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4487"></a>
-<span class="sourceLineNo">4488</span>        long ts = cell.getTimestamp();<a name="line.4488"></a>
-<span class="sourceLineNo">4489</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4489"></a>
-<span class="sourceLineNo">4490</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4490"></a>
-<span class="sourceLineNo">4491</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4491"></a>
-<span class="sourceLineNo">4492</span>        }<a name="line.4492"></a>
-<span class="sourceLineNo">4493</span>      }<a name="line.4493"></a>
+<span class="sourceLineNo">4457</span>  private void checkFamilies(Collection&lt;byte[]&gt; families, Durability durability)<a name="line.4457"></a>
+<span class="sourceLineNo">4458</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4458"></a>
+<span class="sourceLineNo">4459</span>    for (byte[] family : families) {<a name="line.4459"></a>
+<span class="sourceLineNo">4460</span>      checkFamily(family, durability);<a name="line.4460"></a>
+<span class="sourceLineNo">4461</span>    }<a name="line.4461"></a>
+<span class="sourceLineNo">4462</span>  }<a name="line.4462"></a>
+<span class="sourceLineNo">4463</span><a name="line.4463"></a>
+<span class="sourceLineNo">4464</span>  private void checkFamily(final byte[] family, Durability durability)<a name="line.4464"></a>
+<span class="sourceLineNo">4465</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4465"></a>
+<span class="sourceLineNo">4466</span>    checkFamily(family);<a name="line.4466"></a>
+<span class="sourceLineNo">4467</span>    if (durability.equals(Durability.SKIP_WAL)<a name="line.4467"></a>
+<span class="sourceLineNo">4468</span>        &amp;&amp; htableDescriptor.getColumnFamily(family).getScope()<a name="line.4468"></a>
+<span class="sourceLineNo">4469</span>        != HConstants.REPLICATION_SCOPE_LOCAL) {<a name="line.4469"></a>
+<span class="sourceLineNo">4470</span>      throw new InvalidMutationDurabilityException(<a name="line.4470"></a>
+<span class="sourceLineNo">4471</span>          "Mutation's durability is SKIP_WAL but table's column family " + Bytes.toString(family)<a name="line.4471"></a>
+<span class="sourceLineNo">4472</span>              + " need replication");<a name="line.4472"></a>
+<span class="sourceLineNo">4473</span>    }<a name="line.4473"></a>
+<span class="sourceLineNo">4474</span>  }<a name="line.4474"></a>
+<span class="sourceLineNo">4475</span><a name="line.4475"></a>
+<span class="sourceLineNo">4476</span>  void checkFamily(final byte[] family) throws NoSuchColumnFamilyException {<a name="line.4476"></a>
+<span class="sourceLineNo">4477</span>    if (!this.htableDescriptor.hasColumnFamily(family)) {<a name="line.4477"></a>
+<span class="sourceLineNo">4478</span>      throw new NoSuchColumnFamilyException(<a name="line.4478"></a>
+<span class="sourceLineNo">4479</span>          "Column family " + Bytes.toString(family) + " does not exist in region " + this<a name="line.4479"></a>
+<span class="sourceLineNo">4480</span>              + " in table " + this.htableDescriptor);<a name="line.4480"></a>
+<span class="sourceLineNo">4481</span>    }<a name="line.4481"></a>
+<span class="sourceLineNo">4482</span>  }<a name="line.4482"></a>
+<span class="sourceLineNo">4483</span><a name="line.4483"></a>
+<span class="sourceLineNo">4484</span>  /**<a name="line.4484"></a>
+<span class="sourceLineNo">4485</span>   * Check the collection of families for valid timestamps<a name="line.4485"></a>
+<span class="sourceLineNo">4486</span>   * @param familyMap<a name="line.4486"></a>
+<span class="sourceLineNo">4487</span>   * @param now current timestamp<a name="line.4487"></a>
+<span class="sourceLineNo">4488</span>   * @throws FailedSanityCheckException<a name="line.4488"></a>
+<span class="sourceLineNo">4489</span>   */<a name="line.4489"></a>
+<span class="sourceLineNo">4490</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4490"></a>
+<span class="sourceLineNo">4491</span>      throws FailedSanityCheckException {<a name="line.4491"></a>
+<span class="sourceLineNo">4492</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4492"></a>
+<span class="sourceLineNo">4493</span>      return;<a name="line.4493"></a>
 <span class="sourceLineNo">4494</span>    }<a name="line.4494"></a>
-<span class="sourceLineNo">4495</span>  }<a name="line.4495"></a>
-<span class="sourceLineNo">4496</span><a name="line.4496"></a>
-<span class="sourceLineNo">4497</span>  /*<a name="line.4497"></a>
-<span class="sourceLineNo">4498</span>   * @param size<a name="line.4498"></a>
-<span class="sourceLineNo">4499</span>   * @return True if size is over the flush threshold<a name="line.4499"></a>
-<span class="sourceLineNo">4500</span>   */<a name="line.4500"></a>
-<span class="sourceLineNo">4501</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4501"></a>
-<span class="sourceLineNo">4502</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4502"></a>
-<span class="sourceLineNo">4503</span>  }<a name="line.4503"></a>
-<span class="sourceLineNo">4504</span><a name="line.4504"></a>
-<span class="sourceLineNo">4505</span>  /**<a name="line.4505"></a>
-<span class="sourceLineNo">4506</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4506"></a>
-<span class="sourceLineNo">4507</span>   * the recovered edits back up into this region.<a name="line.4507"></a>
-<span class="sourceLineNo">4508</span>   *<a name="line.4508"></a>
-<span class="sourceLineNo">4509</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4509"></a>
-<span class="sourceLineNo">4510</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4510"></a>
-<span class="sourceLineNo">4511</span>   * reflected in the HFiles.)<a name="line.4511"></a>
-<span class="sourceLineNo">4512</span>   *<a name="line.4512"></a>
-<span class="sourceLineNo">4513</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4513"></a>
-<span class="sourceLineNo">4514</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4514"></a>
-<span class="sourceLineNo">4515</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4515"></a>
-<span class="sourceLineNo">4516</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4516"></a>
-<span class="sourceLineNo">4517</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4517"></a>
-<span class="sourceLineNo">4518</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4518"></a>
-<span class="sourceLineNo">4519</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4519"></a>
-<span class="sourceLineNo">4520</span>   * edits.<a name="line.4520"></a>
-<span class="sourceLineNo">4521</span>   *<a name="line.4521"></a>
-<span class="sourceLineNo">4522</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4522"></a>
-<span class="sourceLineNo">4523</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4523"></a>
-<span class="sourceLineNo">4524</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4524"></a>
-<span class="sourceLineNo">4525</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4525"></a>
-<span class="sourceLineNo">4526</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4526"></a>
-<span class="sourceLineNo">4527</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4527"></a>
-<span class="sourceLineNo">4528</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4528"></a>
-<span class="sourceLineNo">4529</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4529"></a>
-<span class="sourceLineNo">4530</span>   * make sense in a this single region context only -- until we online.<a name="line.4530"></a>
-<span class="sourceLineNo">4531</span>   *<a name="line.4531"></a>
-<span class="sourceLineNo">4532</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4532"></a>
-<span class="sourceLineNo">4533</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4533"></a>
-<span class="sourceLineNo">4534</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4534"></a>
-<span class="sourceLineNo">4535</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4535"></a>
-<span class="sourceLineNo">4536</span>   * @throws IOException<a name="line.4536"></a>
-<span class="sourceLineNo">4537</span>   */<a name="line.4537"></a>
-<span class="sourceLineNo">4538</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4538"></a>
-<span class="sourceLineNo">4539</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4539"></a>
-<span class="sourceLineNo">4540</span>      throws IOException {<a name="line.4540"></a>
-<span class="sourceLineNo">4541</span>    long minSeqIdForTheRegion = -1;<a name="line.4541"></a>
-<span class="sourceLineNo">4542</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4542"></a>
-<span class="sourceLineNo">4543</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4543"></a>
-<span class="sourceLineNo">4544</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4544"></a>
-<span class="sourceLineNo">4545</span>      }<a name="line.4545"></a>
-<span class="sourceLineNo">4546</span>    }<a name="line.4546"></a>
-<span class="sourceLineNo">4547</span>    long seqid = minSeqIdForTheRegion;<a name="line.4547"></a>
-<span class="sourceLineNo">4548</span><a name="line.4548"></a>
-<span class="sourceLineNo">4549</span>    FileSystem walFS = getWalFileSystem();<a name="line.4549"></a>
-<span class="sourceLineNo">4550</span>    FileSystem rootFS = getFilesystem();<a name="line.4550"></a>
-<span class="sourceLineNo">4551</span>    Path regionDir = getWALRegionDir();<a name="line.4551"></a>
-<span class="sourceLineNo">4552</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4552"></a>
-<span class="sourceLineNo">4553</span><a name="line.4553"></a>
-<span class="sourceLineNo">4554</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4554"></a>
-<span class="sourceLineNo">4555</span>    // under the root dir even if walDir is set.<a name="line.4555"></a>
-<span class="sourceLineNo">4556</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4556"></a>
-<span class="sourceLineNo">4557</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4557"></a>
-<span class="sourceLineNo">4558</span>      filesUnderRootDir =<a name="line.4558"></a>
-<span class="sourceLineNo">4559</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4559"></a>
-<span class="sourceLineNo">4560</span>      seqid = Math.max(seqid,<a name="line.4560"></a>
-<span class="sourceLineNo">4561</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4561"></a>
-<span class="sourceLineNo">4562</span>              defaultRegionDir));<a name="line.4562"></a>
-<span class="sourceLineNo">4563</span>    }<a name="line.4563"></a>
+<span class="sourceLineNo">4495</span>    long maxTs = now + timestampSlop;<a name="line.4495"></a>
+<span class="sourceLineNo">4496</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4496"></a>
+<span class="sourceLineNo">4497</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4497"></a>
+<span class="sourceLineNo">4498</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4498"></a>
+<span class="sourceLineNo">4499</span>      assert kvs instanceof RandomAccess;<a name="line.4499"></a>
+<span class="sourceLineNo">4500</span>      int listSize  = kvs.size();<a name="line.4500"></a>
+<span class="sourceLineNo">4501</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4501"></a>
+<span class="sourceLineNo">4502</span>        Cell cell = kvs.get(i);<a name="line.4502"></a>
+<span class="sourceLineNo">4503</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4503"></a>
+<span class="sourceLineNo">4504</span>        long ts = cell.getTimestamp();<a name="line.4504"></a>
+<span class="sourceLineNo">4505</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4505"></a>
+<span class="sourceLineNo">4506</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4506"></a>
+<span class="sourceLineNo">4507</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4507"></a>
+<span class="sourceLineNo">4508</span>        }<a name="line.4508"></a>
+<span class="sourceLineNo">4509</span>      }<a name="line.4509"></a>
+<span class="sourceLineNo">4510</span>    }<a name="line.4510"></a>
+<span class="sourceLineNo">4511</span>  }<a name="line.4511"></a>
+<span class="sourceLineNo">4512</span><a name="line.4512"></a>
+<span class="sourceLineNo">4513</span>  /*<a name="line.4513"></a>
+<span class="sourceLineNo">4514</span>   * @param size<a name="line.4514"></a>
+<span class="sourceLineNo">4515</span>   * @return True if size is over the flush threshold<a name="line.4515"></a>
+<span class="sourceLineNo">4516</span>   */<a name="line.4516"></a>
+<span class="sourceLineNo">4517</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4517"></a>
+<span class="sourceLineNo">4518</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4518"></a>
+<span class="sourceLineNo">4519</span>  }<a name="line.4519"></a>
+<span class="sourceLineNo">4520</span><a name="line.4520"></a>
+<span class="sourceLineNo">4521</span>  /**<a name="line.4521"></a>
+<span class="sourceLineNo">4522</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4522"></a>
+<span class="sourceLineNo">4523</span>   * the recovered edits back up into this region.<a name="line.4523"></a>
+<span class="sourceLineNo">4524</span>   *<a name="line.4524"></a>
+<span class="sourceLineNo">4525</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4525"></a>
+<span class="sourceLineNo">4526</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4526"></a>
+<span class="sourceLineNo">4527</span>   * reflected in the HFiles.)<a name="line.4527"></a>
+<span class="sourceLineNo">4528</span>   *<a name="line.4528"></a>
+<span class="sourceLineNo">4529</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4529"></a>
+<span class="sourceLineNo">4530</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4530"></a>
+<span class="sourceLineNo">4531</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4531"></a>
+<span class="sourceLineNo">4532</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4532"></a>
+<span class="sourceLineNo">4533</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4533"></a>
+<span class="sourceLineNo">4534</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4534"></a>
+<span class="sourceLineNo">4535</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4535"></a>
+<span class="sourceLineNo">4536</span>   * edits.<a name="line.4536"></a>
+<span class="sourceLineNo">4537</span>   *<a name="line.4537"></a>
+<span class="sourceLineNo">4538</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4538"></a>
+<span class="sourceLineNo">4539</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4539"></a>
+<span class="sourceLineNo">4540</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4540"></a>
+<span class="sourceLineNo">4541</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4541"></a>
+<span class="sourceLineNo">4542</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4542"></a>
+<span class="sourceLineNo">4543</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4543"></a>
+<span class="sourceLineNo">4544</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4544"></a>
+<span class="sourceLineNo">4545</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4545"></a>
+<span class="sourceLineNo">4546</span>   * make sense in a this single region context only -- until we online.<a name="line.4546"></a>
+<span class="sourceLineNo">4547</span>   *<a name="line.4547"></a>
+<span class="sourceLineNo">4548</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4548"></a>
+<span class="sourceLineNo">4549</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4549"></a>
+<span class="sourceLineNo">4550</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4550"></a>
+<span class="sourceLineNo">4551</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4551"></a>
+<span class="sourceLineNo">4552</span>   * @throws IOException<a name="line.4552"></a>
+<span class="sourceLineNo">4553</span>   */<a name="line.4553"></a>
+<span class="sourceLineNo">4554</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4554"></a>
+<span class="sourceLineNo">4555</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4555"></a>
+<span class="sourceLineNo">4556</span>      throws IOException {<a name="line.4556"></a>
+<span class="sourceLineNo">4557</span>    long minSeqIdForTheRegion = -1;<a name="line.4557"></a>
+<span class="sourceLineNo">4558</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4558"></a>
+<span class="sourceLineNo">4559</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4559"></a>
+<span class="sourceLineNo">4560</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4560"></a>
+<span class="sourceLineNo">4561</span>      }<a name="line.4561"></a>
+<span class="sourceLineNo">4562</span>    }<a name="line.4562"></a>
+<span class="sourceLineNo">4563</span>    long seqid = minSeqIdForTheRegion;<a name="line.4563"></a>
 <span class="sourceLineNo">4564</span><a name="line.4564"></a>
-<span class="sourceLineNo">4565</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4565"></a>
-<span class="sourceLineNo">4566</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4566"></a>
-<span class="sourceLineNo">4567</span>        files, reporter, regionDir));<a name="line.4567"></a>
-<span class="sourceLineNo">4568</span><a name="line.4568"></a>
-<span class="sourceLineNo">4569</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4569"></a>
-<span class="sourceLineNo">4570</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4570"></a>
-<span class="sourceLineNo">4571</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4571"></a>
-<span class="sourceLineNo">4572</span>    }<a name="line.4572"></a>
-<span class="sourceLineNo">4573</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4573"></a>
-<span class="sourceLineNo">4574</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4574"></a>
-<span class="sourceLineNo">4575</span>      // For debugging data loss issues!<a name="line.4575"></a>
-<span class="sourceLineNo">4576</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4576"></a>
-<span class="sourceLineNo">4577</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4577"></a>
-<span class="sourceLineNo">4578</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4578"></a>
-<span class="sourceLineNo">4579</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4579"></a>
-<span class="sourceLineNo">4580</span>      for (Path file: files) {<a name="line.4580"></a>
-<span class="sourceLineNo">4581</span>        fakeStoreFiles.add(<a name="line.4581"></a>
-<span class="sourceLineNo">4582</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4582"></a>
-<span class="sourceLineNo">4583</span>      }<a name="line.4583"></a>
-<span class="sourceLineNo">4584</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4584"></a>
-<span class="sourceLineNo">4585</span>    } else {<a name="line.4585"></a>
-<span class="sourceLineNo">4586</span>      if (filesUnderRootDir != null) {<a name="line.4586"></a>
-<span class="sourceLineNo">4587</span>        for (Path file : filesUnderRootDir) {<a name="line.4587"></a>
-<span class="sourceLineNo">4588</span>          if (!rootFS.delete(file, false)) {<a name="line.4588"></a>
-<span class="sourceLineNo">4589</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4589"></a>
-<span class="sourceLineNo">4590</span>          } else {<a name="line.4590"></a>
-<span class="sourceLineNo">4591</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4591"></a>
-<span class="sourceLineNo">4592</span>          }<a name="line.4592"></a>
-<span class="sourceLineNo">4593</span>        }<a name="line.4593"></a>
-<span class="sourceLineNo">4594</span>      }<a name="line.4594"></a>
-<span class="sourceLineNo">4595</span>      for (Path file: files) {<a name="line.4595"></a>
-<span class="sourceLineNo">4596</span>        if (!walFS.delete(file, false)) {<a name="line.4596"></a>
-<span class="sourceLineNo">4597</span>          LOG.error("Failed delete of " + file);<a name="line.4597"></a>
-<span class="sourceLineNo">4598</span>        } else {<a name="line.4598"></a>
-<span class="sourceLineNo">4599</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4599"></a>
-<span class="sourceLineNo">4600</span>        }<a name="line.4600"></a>
-<span class="sourceLineNo">4601</span>      }<a name="line.4601"></a>
-<span class="sourceLineNo">4602</span>    }<a name="line.4602"></a>
-<span class="sourceLineNo">4603</span>    return seqid;<a name="line.4603"></a>
-<span class="sourceLineNo">4604</span>  }<a name="line.4604"></a>
-<span class="sourceLineNo">4605</span><a name="line.4605"></a>
-<span class="sourceLineNo">4606</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4606"></a>
-<span class="sourceLineNo">4607</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4607"></a>
-<span class="sourceLineNo">4608</span>      throws IOException {<a name="line.4608"></a>
-<span class="sourceLineNo">4609</span>    long seqid = minSeqIdForTheRegion;<a name="line.4609"></a>
-<span class="sourceLineNo">4610</span>    if (LOG.isDebugEnabled()) {<a name="line.4610"></a>
-<span class="sourceLineNo">4611</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4611"></a>
-<span class="sourceLineNo">4612</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4612"></a>
-<span class="sourceLineNo">4613</span>    }<a name="line.4613"></a>
-<span class="sourceLineNo">4614</span><a name="line.4614"></a>
-<span class="sourceLineNo">4615</span>    if (files == null || files.isEmpty()) {<a name="line.4615"></a>
-<span class="sourceLineNo">4616</span>      return minSeqIdForTheRegion;<a name="line.4616"></a>
-<span class="sourceLineNo">4617</span>    }<a name="line.4617"></a>
-<span class="sourceLineNo">4618</span><a name="line.4618"></a>
-<span class="sourceLineNo">4619</span>    for (Path edits: files) {<a name="line.4619"></a>
-<span class="sourceLineNo">4620</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4620"></a>
-<span class="sourceLineNo">4621</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4621"></a>
-<span class="sourceLineNo">4622</span>        continue;<a name="line.4622"></a>
-<span class="sourceLineNo">4623</span>      }<a name="line.4623"></a>
-<span class="sourceLineNo">4624</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4624"></a>
-<span class="sourceLineNo">4625</span><a name="line.4625"></a>
-<span class="sourceLineNo">4626</span>      long maxSeqId;<a name="line.4626"></a>
-<span class="sourceLineNo">4627</span>      String fileName = edits.getName();<a name="line.4627"></a>
-<span class="sourceLineNo">4628</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4628"></a>
-<span class="sourceLineNo">4629</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4629"></a>
-<span class="sourceLineNo">4630</span>        if (LOG.isDebugEnabled()) {<a name="line.4630"></a>
-<span class="sourceLineNo">4631</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4631"></a>
-<span class="sourceLineNo">4632</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4632"></a>
-<span class="sourceLineNo">4633</span>              + ", skipped the whole file, path=" + edits;<a name="line.4633"></a>
-<span class="sourceLineNo">4634</span>          LOG.debug(msg);<a name="line.4634"></a>
-<span class="sourceLineNo">4635</span>        }<a name="line.4635"></a>
-<span class="sourceLineNo">4636</span>        continue;<a name="line.4636"></a>
-<span class="sourceLineNo">4637</span>      }<a name="line.4637"></a>
-<span class="sourceLineNo">4638</span><a name="line.4638"></a>
-<span class="sourceLineNo">4639</span>      try {<a name="line.4639"></a>
-<span class="sourceLineNo">4640</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4640"></a>
-<span class="sourceLineNo">4641</span>        // if seqId is greater<a name="line.4641"></a>
-<span class="sourceLineNo">4642</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4642"></a>
-<span class="sourceLineNo">4643</span>      } catch (IOException e) {<a name="line.4643"></a>
-<span class="sourceLineNo">4644</span>        boolean skipErrors = conf.getBoolean(<a name="line.4644"></a>
-<span class="sourceLineNo">4645</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4645"></a>
-<span class="sourceLineNo">4646</span>            conf.getBoolean(<a name="line.4646"></a>
-<span class="sourceLineNo">4647</span>                "hbase.skip.errors",<a name="line.4647"></a>
-<span class="sourceLineNo">4648</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4648"></a>
-<span class="sourceLineNo">4649</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4649"></a>
-<span class="sourceLineNo">4650</span>          LOG.warn(<a name="line.4650"></a>
-<span class="sourceLineNo">4651</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4651"></a>
-<span class="sourceLineNo">4652</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4652"></a>
-<span class="sourceLineNo">4653</span>        }<a name="line.4653"></a>
-<span class="sourceLineNo">4654</span>        if (skipErrors) {<a name="line.4654"></a>
-<span class="sourceLineNo">4655</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4655"></a>
-<span class="sourceLineNo">4656</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4656"></a>
-<span class="sourceLineNo">4657</span>              + "=true so continuing. Renamed " + edits +<a name="line.4657"></a>
-<span class="sourceLineNo">4658</span>              " as " + p, e);<a name="line.4658"></a>
-<span class="sourceLineNo">4659</span>        } else {<a name="line.4659"></a>
-<span class="sourceLineNo">4660</span>          throw e;<a name="line.4660"></a>
-<span class="sourceLineNo">4661</span>        }<a name="line.4661"></a>
-<span class="sourceLineNo">4662</span>      }<a name="line.4662"></a>
-<span class="sourceLineNo">4663</span>    }<a name="line.4663"></a>
-<span class="sourceLineNo">4664</span>    return seqid;<a name="line.4664"></a>
-<span class="sourceLineNo">4665</span>  }<a name="line.4665"></a>
-<span class="sourceLineNo">4666</span><a name="line.4666"></a>
-<span class="sourceLineNo">4667</span>  /*<a name="line.4667"></a>
-<span class="sourceLineNo">4668</span>   * @param edits File of recovered edits.<a name="line.4668"></a>
-<span class="sourceLineNo">4669</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4669"></a>
-<span class="sourceLineNo">4670</span>   * must be larger than this to be replayed for each store.<a name="line.4670"></a>
-<span class="sourceLineNo">4671</span>   * @param reporter<a name="line.4671"></a>
-<span class="sourceLineNo">4672</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4672"></a>
-<span class="sourceLineNo">4673</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4673"></a>
-<span class="sourceLineNo">4674</span>   * @throws IOException<a name="line.4674"></a>
-<span class="sourceLineNo">4675</span>   */<a name="line.4675"></a>
-<span class="sourceLineNo">4676</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4676"></a>
-<span class="sourceLineNo">4677</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4677"></a>
-<span class="sourceLineNo">4678</span>    throws IOException {<a name="line.4678"></a>
-<span class="sourceLineNo">4679</span>    String msg = "Replaying edits from " + edits;<a name="line.4679"></a>
-<span class="sourceLineNo">4680</span>    LOG.info(msg);<a name="line.4680"></a>
-<span class="sourceLineNo">4681</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4681"></a>
+<span class="sourceLineNo">4565</span>    FileSystem walFS = getWalFileSystem();<a name="line.4565"></a>
+<span class="sourceLineNo">4566</span>    FileSystem rootFS = getFilesystem();<a name="line.4566"></a>
+<span class="sourceLineNo">4567</span>    Path regionDir = getWALRegionDir();<a name="line.4567"></a>
+<span class="sourceLineNo">4568</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4568"></a>
+<span class="sourceLineNo">4569</span><a name="line.4569"></a>
+<span class="sourceLineNo">4570</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4570"></a>
+<span class="sourceLineNo">4571</span>    // under the root dir even if walDir is set.<a name="line.4571"></a>
+<span class="sourceLineNo">4572</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4572"></a>
+<span class="sourceLineNo">4573</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4573"></a>
+<span class="sourceLineNo">4574</span>      filesUnderRootDir =<a name="line.4574"></a>
+<span class="sourceLineNo">4575</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4575"></a>
+<span class="sourceLineNo">4576</span>      seqid = Math.max(seqid,<a name="line.4576"></a>
+<span class="sourceLineNo">4577</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4577"></a>
+<span class="sourceLineNo">4578</span>              defaultRegionDir));<a name="line.4578"></a>
+<span class="sourceLineNo">4579</span>    }<a name="line.4579"></a>
+<span class="sourceLineNo">4580</span><a name="line.4580"></a>
+<span class="sourceLineNo">4581</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4581"></a>
+<span class="sourceLineNo">4582</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4582"></a>
+<span class="sourceLineNo">4583</span>        files, reporter, regionDir));<a name="line.4583"></a>
+<span class="sourceLineNo">4584</span><a name="line.4584"></a>
+<span class="sourceLineNo">4585</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4585"></a>
+<span class="sourceLineNo">4586</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4586"></a>
+<span class="sourceLineNo">4587</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4587"></a>
+<span class="sourceLineNo">4588</span>    }<a name="line.4588"></a>
+<span class="sourceLineNo">4589</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4589"></a>
+<span class="sourceLineNo">4590</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4590"></a>
+<span class="sourceLineNo">4591</span>      // For debugging data loss issues!<a name="line.4591"></a>
+<span class="sourceLineNo">4592</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4592"></a>
+<span class="sourceLineNo">4593</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4593"></a>
+<span class="sourceLineNo">4594</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4594"></a>
+<span class="sourceLineNo">4595</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4595"></a>
+<span class="sourceLineNo">4596</span>      for (Path file: files) {<a name="line.4596"></a>
+<span class="sourceLineNo">4597</span>        fakeStoreFiles.add(<a name="line.4597"></a>
+<span class="sourceLineNo">4598</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4598"></a>
+<span class="sourceLineNo">4599</span>      }<a name="line.4599"></a>
+<span class="sourceLineNo">4600</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4600"></a>
+<span class="sourceLineNo">4601</span>    } else {<a name="line.4601"></a>
+<span class="sourceLineNo">4602</span>      if (filesUnderRootDir != null) {<a name="line.4602"></a>
+<span class="sourceLineNo">4603</span>        for (Path file : filesUnderRootDir) {<a name="line.4603"></a>
+<span class="sourceLineNo">4604</span>          if (!rootFS.delete(file, false)) {<a name="line.4604"></a>
+<span class="sourceLineNo">4605</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4605"></a>
+<span class="sourceLineNo">4606</span>          } else {<a name="line.4606"></a>
+<span class="sourceLineNo">4607</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4607"></a>
+<span class="sourceLineNo">4608</span>          }<a name="line.4608"></a>
+<span class="sourceLineNo">4609</span>        }<a name="line.4609"></a>
+<span class="sourceLineNo">4610</span>      }<a name="line.4610"></a>
+<span class="sourceLineNo">4611</span>      for (Path file: files) {<a name="line.4611"></a>
+<span class="sourceLineNo">4612</span>        if (!walFS.delete(file, false)) {<a name="line.4612"></a>
+<span class="sourceLineNo">4613</span>          LOG.error("Failed delete of " + file);<a name="line.4613"></a>
+<span class="sourceLineNo">4614</span>        } else {<a name="line.4614"></a>
+<span class="sourceLineNo">4615</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4615"></a>
+<span class="sourceLineNo">4616</span>        }<a name="line.4616"></a>
+<span class="sourceLineNo">4617</span>      }<a name="line.4617"></a>
+<span class="sourceLineNo">4618</span>    }<a name="line.4618"></a>
+<span class="sourceLineNo">4619</span>    return seqid;<a name="line.4619"></a>
+<span class="sourceLineNo">4620</span>  }<a name="line.4620"></a>
+<span class="sourceLineNo">4621</span><a name="line.4621"></a>
+<span class="sourceLineNo">4622</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4622"></a>
+<span class="sourceLineNo">4623</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4623"></a>
+<span class="sourceLineNo">4624</span>      throws IOException {<a name="line.4624"></a>
+<span class="sourceLineNo">4625</span>    long seqid = minSeqIdForTheRegion;<a name="line.4625"></a>
+<span class="sourceLineNo">4626</span>    if (LOG.isDebugEnabled()) {<a name="line.4626"></a>
+<span class="sourceLineNo">4627</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4627"></a>
+<span class="sourceLineNo">4628</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4628"></a>
+<span class="sourceLineNo">4629</span>    }<a name="line.4629"></a>
+<span class="sourceLineNo">4630</span><a name="line.4630"></a>
+<span class="sourceLineNo">4631</span>    if (files == null || files.isEmpty()) {<a name="line.4631"></a>
+<span class="sourceLineNo">4632</span>      return minSeqIdForTheRegion;<a name="line.4632"></a>
+<span class="sourceLineNo">4633</span>    }<a name="line.4633"></a>
+<span class="sourceLineNo">4634</span><a name="line.4634"></a>
+<span class="sourceLineNo">4635</span>    for (Path edits: files) {<a name="line.4635"></a>
+<span class="sourceLineNo">4636</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4636"></a>
+<span class="sourceLineNo">4637</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4637"></a>
+<span class="sourceLineNo">4638</span>        continue;<a name="line.4638"></a>
+<span class="sourceLineNo">4639</span>      }<a name="line.4639"></a>
+<span class="sourceLineNo">4640</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4640"></a>
+<span class="sourceLineNo">4641</span><a name="line.4641"></a>
+<span class="sourceLineNo">4642</span>      long maxSeqId;<a name="line.4642"></a>
+<span class="sourceLineNo">4643</span>      String fileName = edits.getName();<a name="line.4643"></a>
+<span class="sourceLineNo">4644</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4644"></a>
+<span class="sourceLineNo">4645</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4645"></a>
+<span class="sourceLineNo">4646</span>        if (LOG.isDebugEnabled()) {<a name="line.4646"></a>
+<span class="sourceLineNo">4647</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4647"></a>
+<span class="sourceLineNo">4648</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4648"></a>
+<span class="sourceLineNo">4649</span>              + ", skipped the whole file, path=" + edits;<a name="line.4649"></a>
+<span class="sourceLineNo">4650</span>          LOG.debug(msg);<a name="line.4650"></a>
+<span class="sourceLineNo">4651</span>        }<a name="line.4651"></a>
+<span class="sourceLineNo">4652</span>        continue;<a name="line.4652"></a>
+<span class="sourceLineNo">4653</span>      }<a name="line.4653"></a>
+<span class="sourceLineNo">4654</span><a name="line.4654"></a>
+<span class="sourceLineNo">4655</span>      try {<a name="line.4655"></a>
+<span class="sourceLineNo">4656</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4656"></a>
+<span class="sourceLineNo">4657</span>        // if seqId is greater<a name="line.4657"></a>
+<span class="sourceLineNo">4658</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4658"></a>
+<span class="sourceLineNo">4659</span>      } catch (IOException e) {<a name="line.4659"></a>
+<span class="sourceLineNo">4660</span>        boolean skipErrors = conf.getBoolean(<a name="line.4660"></a>
+<span class="sourceLineNo">4661</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4661"></a>
+<span class="sourceLineNo">4662</span>            conf.getBoolean(<a name="line.4662"></a>
+<span class="sourceLineNo">4663</span>                "hbase.skip.errors",<a name="line.4663"></a>
+<span class="sourceLineNo">4664</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4664"></a>
+<span class="sourceLineNo">4665</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4665"></a>
+<span class="sourceLineNo">4666</span>          LOG.warn(<a name="line.4666"></a>
+<span class="sourceLineNo">4667</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4667"></a>
+<span class="sourceLineNo">4668</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4668"></a>
+<span class="sourceLineNo">4669</span>        }<a name="line.4669"></a>
+<span class="sourceLineNo">4670</span>        if (skipErrors) {<a name="line.4670"></a>
+<span class="sourceLineNo">4671</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4671"></a>
+<span class="sourceLineNo">4672</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4672"></a>
+<span class="sourceLineNo">4673</span>              + "=true so continuing. Renamed " + edits +<a name="line.4673"></a>
+<span class="sourceLineNo">4674</span>              " as " + p, e);<a name="line.4674"></a>
+<span class="sourceLineNo">4675</span>        } else {<a name="line.4675"></a>
+<span class="sourceLineNo">4676</span>          throw e;<a name="line.4676"></a>
+<span class="sourceLineNo">4677</span>        }<a name="line.4677"></a>
+<span class="sourceLineNo">4678</span>      }<a name="line.4678"></a>
+<span class="sourceLineNo">4679</span>    }<a name="line.4679"></a>
+<span class="sourceLineNo">4680</span>    return seqid;<a name="line.4680"></a>
+<span class="sourceLineNo">4681</span>  }<a name="line.4681"></a>
 <span class="sourceLineNo">4682</span><a name="line.4682"></a>
-<span class="sourceLineNo">4683</span>    status.setStatus("Opening recovered edits");<a name="line.4683"></a>
-<span class="sourceLineNo">4684</span>    WAL.Reader reader = null;<a name="line.4684"></a>
-<span class="sourceLineNo">4685</span>    try {<a name="line.4685"></a>
-<span class="sourceLineNo">4686</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4686"></a>
-<span class="sourceLineNo">4687</span>      long currentEditSeqId = -1;<a name="line.4687"></a>
-<span class="sourceLineNo">4688</span>      long currentReplaySeqId = -1;<a name="line.4688"></a>
-<span class="sourceLineNo">4689</span>      long firstSeqIdInLog = -1;<a name="line.4689"></a>
-<span class="sourceLineNo">4690</span>      long skippedEdits = 0;<a name="line.4690"></a>
-<span class="sourceLineNo">4691</span>      long editsCount = 0;<a name="line.4691"></a>
-<span class="sourceLineNo">4692</span>      long intervalEdits = 0;<a name="line.4692"></a>
-<span class="sourceLineNo">4693</span>      WAL.Entry entry;<a name="line.4693"></a>
-<span class="sourceLineNo">4694</span>      HStore store = null;<a name="line.4694"></a>
-<span class="sourceLineNo">4695</span>      boolean reported_once = false;<a name="line.4695"></a>
-<span class="sourceLineNo">4696</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4696"></a>
-<span class="sourceLineNo">4697</span><a name="line.4697"></a>
-<span class="sourceLineNo">4698</span>      try {<a name="line.4698"></a>
-<span class="sourceLineNo">4699</span>        // How many edits seen before we check elapsed time<a name="line.4699"></a>
-<span class="sourceLineNo">4700</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4700"></a>
-<span class="sourceLineNo">4701</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4701"></a>
-<span class="sourceLineNo">4702</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4702"></a>
-<span class="sourceLineNo">4703</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4703"></a>
-<span class="sourceLineNo">4704</span><a name="line.4704"></a>
-<span class="sourceLineNo">4705</span>        if (coprocessorHost != null) {<a name="line.4705"></a>
-<span class="sourceLineNo">4706</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4706"></a>
-<span class="sourceLineNo">4707</span>        }<a name="line.4707"></a>
-<span class="sourceLineNo">4708</span><a name="line.4708"></a>
-<span class="sourceLineNo">4709</span>        while ((entry = reader.next()) != null) {<a name="line.4709"></a>
-<span class="sourceLineNo">4710</span>          WALKey key = entry.getKey();<a name="line.4710"></a>
-<span class="sourceLineNo">4711</span>          WALEdit val = entry.getEdit();<a name="line.4711"></a>
-<span class="sourceLineNo">4712</span><a name="line.4712"></a>
-<span class="sourceLineNo">4713</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4713"></a>
-<span class="sourceLineNo">4714</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4714"></a>
-<span class="sourceLineNo">4715</span>          }<a name="line.4715"></a>
-<span class="sourceLineNo">4716</span><a name="line.4716"></a>
-<span class="sourceLineNo">4717</span>          if (reporter != null) {<a name="line.4717"></a>
-<span class="sourceLineNo">4718</span>            intervalEdits += val.size();<a name="line.4718"></a>
-<span class="sourceLineNo">4719</span>            if (intervalEdits &gt;= interval) {<a name="line.4719"></a>
-<span class="sourceLineNo">4720</span>              // Number of edits interval reached<a name="line.4720"></a>
-<span class="sourceLineNo">4721</span>              intervalEdits = 0;<a name="line.4721"></a>
-<span class="sourceLineNo">4722</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4722"></a>
-<span class="sourceLineNo">4723</span>              if (lastReport + period &lt;= cur) {<a name="line.4723"></a>
-<span class="sourceLineNo">4724</span>                status.setStatus("Replaying edits..." +<a name="line.4724"></a>
-<span class="sourceLineNo">4725</span>                    " skipped=" + skippedEdits +<a name="line.4725"></a>
-<span class="sourceLineNo">4726</span>                    " edits=" + editsCount);<a name="line.4726"></a>
-<span class="sourceLineNo">4727</span>                // Timeout reached<a name="line.4727"></a>
-<span class="sourceLineNo">4728</span>                if(!reporter.progress()) {<a name="line.4728"></a>
-<span class="sourceLineNo">4729</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4729"></a>
-<span class="sourceLineNo">4730</span>                  LOG.warn(msg);<a name="line.4730"></a>
-<span class="sourceLineNo">4731</span>                  status.abort(msg);<a name="line.4731"></a>
-<span class="sourceLineNo">4732</span>                  throw new IOException(msg);<a name="line.4732"></a>
-<span class="sourceLineNo">4733</span>                }<a name="line.4733"></a>
-<span class="sourceLineNo">4734</span>                reported_once = true;<a name="line.4734"></a>
-<span class="sourceLineNo">4735</span>                lastReport = cur;<a name="line.4735"></a>
-<span class="sourceLineNo">4736</span>              }<a name="line.4736"></a>
-<span class="sourceLineNo">4737</span>            }<a name="line.4737"></a>
-<span class="sourceLineNo">4738</span>          }<a name="line.4738"></a>
-<span class="sourceLineNo">4739</span><a name="line.4739"></a>
-<span class="sourceLineNo">4740</span>          if (firstSeqIdInLog == -1) {<a name="line.4740"></a>
-<span class="sourceLineNo">4741</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4741"></a>
-<span class="sourceLineNo">4742</span>          }<a name="line.4742"></a>
-<span class="sourceLineNo">4743</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4743"></a>
-<span class="sourceLineNo">4744</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4744"></a>
-<span class="sourceLineNo">4745</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4745"></a>
-<span class="sourceLineNo">4746</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4746"></a>
-<span class="sourceLineNo">4747</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4747"></a>
-<span class="sourceLineNo">4748</span>                + "; edit=" + val);<a name="line.4748"></a>
-<span class="sourceLineNo">4749</span>          } else {<a name="line.4749"></a>
-<span class="sourceLineNo">4750</span>            currentEditSeqId = key.getSequenceId();<a name="line.4750"></a>
-<span class="sourceLineNo">4751</span>          }<a name="line.4751"></a>
-<span class="sourceLineNo">4752</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4752"></a>
-<span class="sourceLineNo">4753</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4753"></a>
-<span class="sourceLineNo">4754</span><a name="line.4754"></a>
-<span class="sourceLineNo">4755</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4755"></a>
-<span class="sourceLineNo">4756</span>          // instead of a KeyValue.<a name="line.4756"></a>
-<span class="sourceLineNo">4757</span>          if (coprocessorHost != null) {<a name="line.4757"></a>
-<span class="sourceLineNo">4758</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4758"></a>
-<span class="sourceLineNo">4759</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4759"></a>
-<span class="sourceLineNo">4760</span>              // if bypass this wal entry, ignore it ...<a name="line.4760"></a>
-<span class="sourceLineNo">4761</span>              continue;<a name="line.4761"></a>
-<span class="sourceLineNo">4762</span>            }<a name="line.4762"></a>
-<span class="sourceLineNo">4763</span>          }<a name="line.4763"></a>
-<span class="sourceLineNo">4764</span>          boolean checkRowWithinBoundary = false;<a name="line.4764"></a>
-<span class="sourceLineNo">4765</span>          // Check this edit is for this region.<a name="line.4765"></a>
-<span class="sourceLineNo">4766</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4766"></a>
-<span class="sourceLineNo">4767</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4767"></a>
-<span class="sourceLineNo">4768</span>            checkRowWithinBoundary = true;<a name="line.4768"></a>
-<span class="sourceLineNo">4769</span>          }<a name="line.4769"></a>
+<span class="sourceLineNo">4683</span>  /*<a name="line.4683"></a>
+<span class="sourceLineNo">4684</span>   * @param edits File of recovered edits.<a name="line.4684"></a>
+<span class="sourceLineNo">4685</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4685"></a>
+<span class="sourceLineNo">4686</span>   * must be larger than this to be replayed for each store.<a name="line.4686"></a>
+<span class="sourceLineNo">4687</span>   * @param reporter<a name="line.4687"></a>
+<span class="sourceLineNo">4688</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4688"></a>
+<span class="sourceLineNo">4689</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4689"></a>
+<span class="sourceLineNo">4690</span>   * @throws IOException<a name="line.4690"></a>
+<span class="sourceLineNo">4691</span>   */<a name="line.4691"></a>
+<span class="sourceLineNo">4692</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4692"></a>
+<span class="sourceLineNo">4693</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4693"></a>
+<span class="sourceLineNo">4694</span>    throws IOException {<a name="line.4694"></a>
+<span class="sourceLineNo">4695</span>    String msg = "Replaying edits from " + edits;<a name="line.4695"></a>
+<span class="sourceLineNo">4696</span>    LOG.info(msg);<a name="line.4696"></a>
+<span class="sourceLineNo">4697</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4697"></a>
+<span class="sourceLineNo">4698</span><a name="line.4698"></a>
+<span class="sourceLineNo">4699</span>    status.setStatus("Opening recovered edits");<a name="line.4699"></a>
+<span class="sourceLineNo">4700</span>    WAL.Reader reader = null;<a name="line.4700"></a>
+<span class="sourceLineNo">4701</span>    try {<a name="line.4701"></a>
+<span class="sourceLineNo">4702</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4702"></a>
+<span class="sourceLineNo">4703</span>      long currentEditSeqId = -1;<a name="line.4703"></a>
+<span class="sourceLineNo">4704</span>      long currentReplaySeqId = -1;<a name="line.4704"></a>
+<span class="sourceLineNo">4705</span>      long firstSeqIdInLog = -1;<a name="line.4705"></a>
+<span class="sourceLineNo">4706</span>      long skippedEdits = 0;<a name="line.4706"></a>
+<span class="sourceLineNo">4707</span>      long editsCount = 0;<a name="line.4707"></a>
+<span class="sourceLineNo">4708</span>      long intervalEdits = 0;<a name="line.4708"></a>
+<span class="sourceLineNo">4709</span>      WAL.Entry entry;<a name="line.4709"></a>
+<span class="sourceLineNo">4710</span>      HStore store = null;<a name="line.4710"></a>
+<span class="sourceLineNo">4711</span>      boolean reported_once = false;<a name="line.4711"></a>
+<span class="sourceLineNo">4712</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4712"></a>
+<span class="sourceLineNo">4713</span><a name="line.4713"></a>
+<span class="sourceLineNo">4714</span>      try {<a name="line.4714"></a>
+<span class="sourceLineNo">4715</span>        // How many edits seen before we check elapsed time<a name="line.4715"></a>
+<span class="sourceLineNo">4716</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4716"></a>
+<span class="sourceLineNo">4717</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4717"></a>
+<span class="sourceLineNo">4718</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4718"></a>
+<span class="sourceLineNo">4719</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4719"></a>
+<span class="sourceLineNo">4720</span><a name="line.4720"></a>
+<span class="sourceLineNo">4721</span>        if (coprocessorHost != null) {<a name="line.4721"></a>
+<span class="sourceLineNo">4722</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4722"></a>
+<span class="sourceLineNo">4723</span>        }<a name="line.4723"></a>
+<span class="sourceLineNo">4724</span><a name="line.4724"></a>
+<span class="sourceLineNo">4725</span>        while ((entry = reader.next()) != null) {<a name="line.4725"></a>
+<span class="sourceLineNo">4726</span>          WALKey key = entry.getKey();<a name="line.4726"></a>
+<span class="sourceLineNo">4727</span>          WALEdit val = entry.getEdit();<a name="line.4727"></a>
+<span class="sourceLineNo">4728</span><a name="line.4728"></a>
+<span class="sourceLineNo">4729</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4729"></a>
+<span class="sourceLineNo">4730</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4730"></a>
+<span class="sourceLineNo">4731</span>          }<a name="line.4731"></a>
+<span class="sourceLineNo">4732</span><a name="line.4732"></a>
+<span class="sourceLineNo">4733</span>          if (reporter != null) {<a name="line.4733"></a>
+<span class="sourceLineNo">4734</span>            intervalEdits += val.size();<a name="line.4734"></a>
+<span class="sourceLineNo">4735</span>            if (intervalEdits &gt;= interval) {<a name="line.4735"></a>
+<span class="sourceLineNo">4736</span>              // Number of edits interval reached<a name="line.4736"></a>
+<span class="sourceLineNo">4737</span>              intervalEdits = 0;<a name="line.4737"></a>
+<span class="sourceLineNo">4738</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4738"></a>
+<span class="sourceLineNo">4739</span>              if (lastReport + period &lt;= cur) {<a name="line.4739"></a>
+<span class="sourceLineNo">4740</span>                status.setStatus("Replaying edits..." +<a name="line.4740"></a>
+<span class="sourceLineNo">4741</span>                    " skipped=" + skippedEdits +<a name="line.4741"></a>
+<span class="sourceLineNo">4742</span>                    " edits=" + editsCount);<a name="line.4742"></a>
+<span class="sourceLineNo">4743</span>                // Timeout reached<a name="line.4743"></a>
+<span class="sourceLineNo">4744</span>                if(!reporter.progress()) {<a name="line.4744"></a>
+<span class="sourceLineNo">4745</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4745"></a>
+<span class="sourceLineNo">4746</span>                  LOG.warn(msg);<a name="line.4746"></a>
+<span class="sourceLineNo">4747</span>                  status.abort(msg);<a name="line.4747"></a>
+<span class="sourceLineNo">4748</span>                  throw new IOException(msg);<a name="line.4748"></a>
+<span class="sourceLineNo">4749</span>                }<a name="line.4749"></a>
+<span class="sourceLineNo">4750</span>                reported_once = true;<a name="line.4750"></a>
+<span class="sourceLineNo">4751</span>                lastReport = cur;<a name="line.4751"></a>
+<span class="sourceLineNo">4752</span>              }<a name="line.4752"></a>
+<span class="sourceLineNo">4753</span>            }<a name="line.4753"></a>
+<span class="sourceLineNo">4754</span>          }<a name="line.4754"></a>
+<span class="sourceLineNo">4755</span><a name="line.4755"></a>
+<span class="sourceLineNo">4756</span>          if (firstSeqIdInLog == -1) {<a name="line.4756"></a>
+<span class="sourceLineNo">4757</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4757"></a>
+<span class="sourceLineNo">4758</span>          }<a name="line.4758"></a>
+<span class="sourceLineNo">4759</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4759"></a>
+<span class="sourceLineNo">4760</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4760"></a>
+<span class="sourceLineNo">4761</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4761"></a>
+<span class="sourceLineNo">4762</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4762"></a>
+<span class="sourceLineNo">4763</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4763"></a>
+<span class="sourceLineNo">4764</span>                + "; edit=" + val);<a name="line.4764"></a>
+<span class="sourceLineNo">4765</span>          } else {<a name="line.4765"></a>
+<span class="sourceLineNo">4766</span>            currentEditSeqId = key.getSequenceId();<a name="line.4766"></a>
+<span class="sourceLineNo">4767</span>          }<a name="line.4767"></a>
+<span class="sourceLineNo">4768</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4768"></a>
+<span class="sourceLineNo">4769</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4769"></a>
 <span class="sourceLineNo">4770</span><a name="line.4770"></a>
-<span class="sourceLineNo">4771</span>          boolean flush = false;<a name="line.4771"></a>
-<span class="sourceLineNo">4772</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4772"></a>
-<span class="sourceLineNo">4773</span>          for (Cell cell: val.getCells()) {<a name="line.4773"></a>
-<span class="sourceLineNo">4774</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4774"></a>
-<span class="sourceLineNo">4775</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4775"></a>
-<span class="sourceLineNo">4776</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4776"></a>
-<span class="sourceLineNo">4777</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4777"></a>
-<span class="sourceLineNo">4778</span>              if (!checkRowWithinBoundary) {<a name="line.4778"></a>
-<span class="sourceLineNo">4779</span>                //this is a special edit, we should handle it<a name="line.4779"></a>
-<span class="sourceLineNo">4780</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4780"></a>
-<span class="sourceLineNo">4781</span>                if (compaction != null) {<a name="line.4781"></a>
-<span class="sourceLineNo">4782</span>                  //replay the compaction<a name="line.4782"></a>
-<span class="sourceLineNo">4783</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4783"></a>
-<span class="sourceLineNo">4784</span>                }<a name="line.4784"></a>
-<span class="sourceLineNo">4785</span>              }<a name="line.4785"></a>
-<span class="sourceLineNo">4786</span>              skippedEdits++;<a name="line.4786"></a>
-<span class="sourceLineNo">4787</span>              continue;<a name="line.4787"></a>
-<span class="sourceLineNo">4788</span>            }<a name="line.4788"></a>
-<span class="sourceLineNo">4789</span>            // Figure which store the edit is meant for.<a name="line.4789"></a>
-<span class="sourceLineNo">4790</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4790"></a>
-<span class="sourceLineNo">4791</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4791"></a>
-<span class="sourceLineNo">4792</span>              store = getStore(cell);<a name="line.4792"></a>
-<span class="sourceLineNo">4793</span>            }<a name="line.4793"></a>
-<span class="sourceLineNo">4794</span>            if (store == null) {<a name="line.4794"></a>
-<span class="sourceLineNo">4795</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4795"></a>
-<span class="sourceLineNo">4796</span>              // crash and redeploy?<a name="line.4796"></a>
-<span class="sourceLineNo">4797</span>              LOG.warn("No family for " + cell);<a name="line.4797"></a>
-<span class="sourceLineNo">4798</span>              skippedEdits++;<a name="line.4798"></a>
-<span class="sourceLineNo">4799</span>              continue;<a name="line.4799"></a>
-<span class="sourceLineNo">4800</span>            }<a name="line.4800"></a>
-<span class="sourceLineNo">4801</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4801"></a>
-<span class="sourceLineNo">4802</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4802"></a>
-<span class="sourceLineNo">4803</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4803"></a>
-<span class="sourceLineNo">4804</span>              skippedEdits++;<a name="line.4804"></a>
-<span class="sourceLineNo">4805</span>              continue;<a name="line.4805"></a>
-<span class="sourceLineNo">4806</span>            }<a name="line.4806"></a>
-<span class="sourceLineNo">4807</span>            // Now, figure if we should skip this edit.<a name="line.4807"></a>
-<span class="sourceLineNo">4808</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4808"></a>
-<span class="sourceLineNo">4809</span>                .getName())) {<a name="line.4809"></a>
-<span class="sourceLineNo">4810</span>              skippedEdits++;<a name="line.4810"></a>
-<span class="sourceLineNo">4811</span>              continue;<a name="line.4811"></a>
-<span class="sourceLineNo">4812</span>            }<a name="line.4812"></a>
-<span class="sourceLineNo">4813</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4813"></a>
-<span class="sourceLineNo">4814</span><a name="line.4814"></a>
-<span class="sourceLineNo">4815</span>            restoreEdit(store, cell, memStoreSizing);<a name="line.4815"></a>
-<span class="sourceLineNo">4816</span>            editsCount++;<a name="line.4816"></a>
-<span class="sourceLineNo">4817</span>          }<a name="line.4817"></a>
-<span class="sourceLineNo">4818</span>          MemStoreSize mss = memStoreSizing.getMemStoreSize();<a name="line.4818"></a>
-<span class="sourceLineNo">4819</span>          incMemStoreSize(mss);<a name="line.4819"></a>
-<span class="sourceLineNo">4820</span>          flush = isFlushSize(this.memStoreSizing.getMemStoreSize());<a name="line.4820"></a>
-<span class="sourceLineNo">4821</span>          if (flush) {<a name="line.4821"></a>
-<span class="sourceLineNo">4822</span>            internalFlushcache(null, currentEditSeqId, stores.values(), status, false,<a name="line.4822"></a>
-<span class="sourceLineNo">4823</span>              FlushLifeCycleTracker.DUMMY);<a name="line.4823"></a>
-<span class="sourceLineNo">4824</span>          }<a name="line.4824"></a>
-<span class="sourceLineNo">4825</span><a name="line.4825"></a>
-<span class="sourceLineNo">4826</span>          if (coprocessorHost != null) {<a name="line.4826"></a>
-<span class="sourceLineNo">4827</span>            coprocessorHost.postWALRestore(this.getRegionInfo(), key, val);<a name="line.4827"></a>
-<span class="sourceLineNo">4828</span>          }<a name="line.4828"></a>
-<span class="sourceLineNo">4829</span>        }<a name="line.4829"></a>
+<span class="sourceLineNo">4771</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4771"></a>
+<span class="sourceLineNo">4772</span>          // instead of a KeyValue.<a name="line.4772"></a>
+<span class="sourceLineNo">4773</span>          if (coprocessorHost != null) {<a name="line.4773"></a>
+<span class="sourceLineNo">4774</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4774"></a>
+<span class="sourceLineNo">4775</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4775"></a>
+<span class="sourceLineNo">4776</span>              // if bypass this wal entry, ignore it ...<a name="line.4776"></a>
+<span class="sourceLineNo">4777</span>              continue;<a name="line.4777"></a>
+<span class="sourceLineNo">4778</span>            }<a name="line.4778"></a>
+<span class="sourceLineNo">4779</span>          }<a name="line.4779"></a>
+<span class="sourceLineNo">4780</span>          boolean checkRowWithinBoundary = false;<a name="line.4780"></a>
+<span class="sourceLineNo">4781</span>          // Check this edit is for this region.<a name="line.4781"></a>
+<span class="sourceLineNo">4782</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4782"></a>
+<span class="sourceLineNo">4783</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4783"></a>
+<span class="sourceLineNo">4784</span>            checkRowWithinBoundary = true;<a name="line.4784"></a>
+<span class="sourceLineNo">4785</span>          }<a name="line.4785"></a>
+<span class="sourceLineNo">4786</span><a name="line.4786"></a>
+<span class="sourceLineNo">4787</span>          boolean flush = false;<a name="line.4787"></a>
+<span class="sourceLineNo">4788</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4788"></a>
+<span class="sourceLineNo">4789</span>          for (Cell cell: val.getCells()) {<a name="line.4789"></a>
+<span class="sourceLineNo">4790</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4790"></a>
+<span class="sourceLineNo">4791</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4791"></a>
+<span class="sourceLineNo">4792</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4792"></a>
+<span class="sourceLineNo">4793</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4793"></a>
+<span class="sourceLineNo">4794</span>              if (!checkRowWithinBoundary) {<a name="line.4794"></a>
+<span class="sourceLineNo">4795</span>                //this is a special edit, we should handle it<a name="line.4795"></a>
+<span class="sourceLineNo">4796</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4796"></a>
+<span class="sourceLineNo">4797</span>                if (compaction != null) {<a name="line.4797"></a>
+<span class="sourceLineNo">4798</span>                  //replay the compaction<a name="line.4798"></a>
+<span class="sourceLineNo">4799</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4799"></a>
+<span class="sourceLineNo">4800</span>                }<a name="line.4800"></a>
+<span class="sourceLineNo">4801</span>              }<a name="line.4801"></a>
+<span class="sourceLineNo">4802</span>              skippedEdits++;<a name="line.4802"></a>
+<span class="sourceLineNo">4803</span>              continue;<a name="line.4803"></a>
+<span class="sourceLineNo">4804</span>            }<a name="line.4804"></a>
+<span class="sourceLineNo">4805</span>            // Figure which store the edit is meant for.<a name="line.4805"></a>
+<span class="sourceLineNo">4806</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4806"></a>
+<span class="sourceLineNo">4807</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4807"></a>
+<span class="sourceLineNo">4808</span>              store = getStore(cell);<a name="line.4808"></a>
+<span class="sourceLineNo">4809</span>            }<a name="line.4809"></a>
+<span class="sourceLineNo">4810</span>            if (store == null) {<a name="line.4810"></a>
+<span class="sourceLineNo">4811</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4811"></a>
+<span class="sourceLineNo">4812</span>              // crash and redeploy?<a name="line.4812"></a>
+<span class="sourceLineNo">4813</span>              LOG.warn("No family for " + cell);<a name="line.4813"></a>
+<span class="sourceLineNo">4814</span>              skippedEdits++;<a name="line.4814"></a>
+<span class="sourceLineNo">4815</span>              continue;<a name="line.4815"></a>
+<span class="sourceLineNo">4816</span>            }<a name="line.4816"></a>
+<span class="sourceLineNo">4817</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4817"></a>
+<span class="sourceLineNo">4818</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4818"></a>
+<span class="sourceLineNo">4819</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4819"></a>
+<span class="sourceLineNo">4820</span>              skippedEdits++;<a name="line.4820"></a>
+<span class="sourceLineNo">4821</span>              continue;<a name="line.4821"></a>
+<span class="sourceLineNo">4822</span>            }<a name="line.4822"></a>
+<span class="sourceLineNo">4823</span>            // Now, figure if we should skip this edit.<a name="line.4823"></a>
+<span class="sourceLineNo">4824</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4824"></a>
+<span class="sourceLineNo">4825</span>                .getName())) {<a name="line.4825"></a>
+<span class="sourceLineNo">4826</span>              skippedEdits++;<a name="line.4826"></a>
+<span class="sourceLineNo">4827</span>              continue;<a name="line.4827"></a>
+<span class="sourceLineNo">4828</span>            }<a name="line.4828"></a>
+<span class="sourceLineNo">4829</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4829"></a>
 <span class="sourceLineNo">4830</span><a name="line.4830"></a>
-<span class="sourceLineNo">4831</span>        if (coprocessorHost != null) {<a name="line.4831"></a>
-<span class="sourceLineNo">4832</span>          coprocessorHost.postReplayWALs(this.getRegionInfo(), edits);<a name="line.4832"></a>
-<span class="sourceLineNo">4833</span>        }<a name="line.4833"></a>
-<span class="sourceLineNo">4834</span>      } catch (EOFException eof) {<a name="line.4834"></a>
-<span class="sourceLineNo">4835</span>        Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4835"></a>
-<span class="sourceLineNo">4836</span>        msg = "EnLongAddered EOF. Most likely due to Master failure during " +<a name="line.4836"></a>
-<span class="sourceLineNo">4837</span>            "wal splitting, so we have this data in another edit.  " +<a name="line.4837"></a>
-<span class="sourceLineNo">4838</span>            "Continuing, but renaming " + edits + " as " + p;<a name="line.4838"></a>
-<span class="sourceLineNo">4839</span>        LOG.warn(msg, eof);<a name="line.4839"></a>
-<span class="sourceLineNo">4840</span>        status.abort(msg);<a name="line.4840"></a>
-<span class="sourceLineNo">4841</span>      } catch (IOException ioe) {<a name="line.4841"></a>
-<span class="sourceLineNo">4842</span>        // If the IOE resulted from bad file format,<a name="line.4842"></a>
-<span class="sourceLineNo">4843</span>        // then this problem is idempotent and retrying won't help<a name="line.4843"></a>
-<span class="sourceLineNo">4844</span>        if (ioe.getCause() instanceof ParseException) {<a name="line.4844"></a>
-<span class="sourceLineNo">4845</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4845"></a>
-<span class="sourceLineNo">4846</span>          msg = "File corruption enLongAddered!  " +<a name="line.4846"></a>
-<span class="sourceLineNo">4847</span>              "Continuing, but renaming " + edits + " as " + p;<a name="line.4847"></a>
-<span class="sourceLineNo">4848</span>          LOG.warn(msg, ioe);<a name="line.4848"></a>
-<span class="sourceLineNo">4849</span>          status.setStatus(msg);<a name="line.4849"></a>
-<span class="sourceLineNo">4850</span>        } else {<a name="line.4850"></a>
-<span class="sourceLineNo">4851</span>          status.abort(StringUtils.stringifyException(ioe));<a name="line.4851"></a>
-<span class="sourceLineNo">4852</span>          // other IO errors may be transient (bad network connection,<a name="line.4852"></a>
-<span class="sourceLineNo">4853</span>          // checksum exception on one datanode, etc).  throw &amp; retry<a name="line.4853"></a>
-<span class="sourceLineNo">4854</span>          throw ioe;<a name="line.4854"></a>
-<span class="sourceLineNo">4855</span>        }<a name="line.4855"></a>
-<span class="sourceLineNo">4856</span>      }<a name="line.4856"></a>
-<span class="sourceLineNo">4857</span>      if (reporter != null &amp;&amp; !reported_once) {<a name="line.4857"></a>
-<span class="sourceLineNo">4858</span>        reporter.progress();<a name="line.4858"></a>
-<span class="sourceLineNo">4859</span>      }<a name="line.4859"></a>
-<span class="sourceLineNo">4860</span>      msg = "Applied " + editsCount + ", skipped " + skippedEdits +<a name="line.4860"></a>
-<span class="sourceLineNo">4861</span>        ", firstSequenceIdInLog=" + firstSeqIdInLog +<a name="line.4861"></a>
-<span class="sourceLineNo">4862</span>        ", maxSequenceIdInLog=" + currentEditSeqId + ", path=" + edits;<a name="line.4862"></a>
-<span class="sourceLineNo">4863</span>      status.markComplete(msg);<a name="line.4863"></a>
-<span class="sourceLineNo">4864</span>      LOG.debug(msg);<a name="line.4864"></a>
-<span class="sourceLineNo">4865</span>      return currentEditSeqId;<a name="line.4865"></a>
-<span class="sourceLineNo">4866</span>    } finally {<a name="line.4866"></a>
-<span class="sourceLineNo">4867</span>      status.cleanup();<a name="line.4867"></a>
-<span class="sourceLineNo">4868</span>      if (reader != null) {<a name="line.4868"></a>
-<span class="sourceLineNo">4869</span>         reader.close();<a name="line.4869"></a>
-<span class="sourceLineNo">4870</span>      }<a name="line.4870"></a>
-<span class="sourceLineNo">4871</span>    }<a name="line.4871"></a>
-<span class="sourceLineNo">4872</span>  }<a name="line.4872"></a>
-<span class="sourceLineNo">4873</span><a name="line.4873"></a>
-<span class="sourceLineNo">4874</span>  /**<a name="line.4874"></a>
-<span class="sourceLineNo">4875</span>   * Call to complete a compaction. Its for the case where we find in the WAL a compaction<a name="line.4875"></a>
-<span class="sourceLineNo">4876</span>   * that was not finished.  We could find one recovering a WAL after a regionserver crash.<a name="line.4876"></a>
-<span class="sourceLineNo">4877</span>   * See HBASE-2331.<a name="line.4877"></a>
-<span class="sourceLineNo">4878</span>   */<a name="line.4878"></a>
-<span class="sourceLineNo">4879</span>  void replayWALCompactionMarker(CompactionDescriptor compaction, boolean pickCompactionFiles,<a name="line.4879"></a>
-<span class="sourceLineNo">4880</span>      boolean removeFiles, long replaySeqId)<a name="line.4880"></a>
-<span class="sourceLineNo">4881</span>      throws IOException {<a name="line.4881"></a>
-<span class="sourceLineNo">4882</span>    try {<a name="line.4882"></a>
-<span class="sourceLineNo">4883</span>      checkTargetRegion(compaction.getEncodedRegionName().toByteArray(),<a name="line.4883"></a>
-<span class="sourceLineNo">4884</span>        "Compaction marker from WAL ", compaction);<a name="line.4884"></a>
-<span class="sourceLineNo">4885</span>    } catch (WrongRegionException wre) {<a name="line.4885"></a>
-<span class="sourceLineNo">4886</span>      if (RegionReplicaUtil.isDefaultReplica(this.getRegionInfo())) {<a name="line.4886"></a>
-<span class="sourceLineNo">4887</span>        // skip the compaction marker since it is not for this region<a name="line.4887"></a>
-<span class="sourceLineNo">4888</span>        return;<a name="line.4888"></a>
-<span class="sourceLineNo">4889</span>      }<a name="line.4889"></a>
-<span class="sourceLineNo">4890</span>      throw wre;<a name="line.4890"></a>
-<span class="sourceLineNo">4891</span>    }<a name="line.4891"></a>
-<span class="sourceLineNo">4892</span><a name="line.4892"></a>
-<span class="sourceLineNo">4893</span>    synchronized (writestate) {<a name="line.4893"></a>
-<span class="sourceLineNo">4894</span>      if (replaySeqId &lt; lastReplayedOpenRegionSeqId) {<a name="line.4894"></a>
-<span class="sourceLineNo">4895</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4895"></a>
-<span class="sourceLineNo">4896</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4896"></a>
-<span class="sourceLineNo">4897</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4897"></a>
-<span class="sourceLineNo">4898</span>            + "lastReplayedOpenRegionSeqId of " + lastReplayedOpenRegionSeqId);<a name="line.4898"></a>
-<span class="sourceLineNo">4899</span>        return;<a name="line.4899"></a>
-<span class="sourceLineNo">4900</span>      }<a name="line.4900"></a>
-<span class="sourceLineNo">4901</span>      if (replaySeqId &lt; lastReplayedCompactionSeqId) {<a name="line.4901"></a>
-<span class="sourceLineNo">4902</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4902"></a>
-<span class="sourceLineNo">4903</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4903"></a>
-<span class="sourceLineNo">4904</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4904"></a>
-<span class="sourceLineNo">4905</span>            + "lastReplayedCompactionSeqId of " + lastReplayedCompactionSeqId);<a name="line.4905"></a>
-<span class="sourceLineNo">4906</span>        return;<a name="line.4906"></a>
-<span class="sourceLineNo">4907</span>      } else {<a name="line.4907"></a>
-<span class="sourceLineNo">4908</span>        lastReplayedCompacti

<TRUNCATED>

[38/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.


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

Branch: refs/heads/asf-site
Commit: fa850293ece7bc0457eb527db5265b4dc18cd40d
Parents: 3920668
Author: jenkins <bu...@apache.org>
Authored: Fri Oct 26 14:53:19 2018 +0000
Committer: jenkins <bu...@apache.org>
Committed: Fri Oct 26 14:53:19 2018 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |     4 +-
 apache_hbase_reference_guide.pdf                | 38062 ++++++++---------
 apidocs/allclasses-frame.html                   |     1 +
 apidocs/allclasses-noframe.html                 |     1 +
 apidocs/index-all.html                          |    10 +
 .../hadoop/hbase/DoNotRetryIOException.html     |     2 +-
 .../hbase/class-use/DoNotRetryIOException.html  |     8 +-
 .../hbase/class-use/HBaseIOException.html       |     8 +-
 .../hadoop/hbase/regionserver/BloomType.html    |     4 +-
 .../InvalidMutationDurabilityException.html     |   299 +
 .../hbase/regionserver/LeaseException.html      |     4 +-
 .../InvalidMutationDurabilityException.html     |   125 +
 .../hbase/regionserver/package-frame.html       |     1 +
 .../hbase/regionserver/package-summary.html     |    18 +-
 .../hadoop/hbase/regionserver/package-tree.html |     1 +
 apidocs/overview-tree.html                      |     1 +
 apidocs/serialized-form.html                    |     5 +
 .../InvalidMutationDurabilityException.html     |   116 +
 book.html                                       |   530 +-
 bulk-loads.html                                 |     4 +-
 checkstyle-aggregate.html                       | 17048 ++++----
 checkstyle.rss                                  |    50 +-
 coc.html                                        |     4 +-
 dependencies.html                               |     4 +-
 dependency-convergence.html                     |     4 +-
 dependency-info.html                            |     4 +-
 dependency-management.html                      |     4 +-
 devapidocs/allclasses-frame.html                |     1 +
 devapidocs/allclasses-noframe.html              |     1 +
 devapidocs/constant-values.html                 |     4 +-
 devapidocs/index-all.html                       |    24 +-
 .../hadoop/hbase/DoNotRetryIOException.html     |     2 +-
 .../hadoop/hbase/backup/package-tree.html       |     4 +-
 .../hbase/class-use/DoNotRetryIOException.html  |     8 +-
 .../hbase/class-use/HBaseIOException.html       |     8 +-
 .../HTable.CheckAndMutateBuilderImpl.html       |    32 +-
 .../org/apache/hadoop/hbase/client/HTable.html  |    96 +-
 .../hbase/client/class-use/Durability.html      |    10 +
 .../hadoop/hbase/client/package-tree.html       |    18 +-
 .../hadoop/hbase/filter/package-tree.html       |    10 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     6 +-
 .../apache/hadoop/hbase/ipc/package-tree.html   |     4 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |     4 +-
 .../hbase/master/balancer/package-tree.html     |     2 +-
 .../hadoop/hbase/master/package-tree.html       |     6 +-
 .../procedure/class-use/MasterProcedureEnv.html |     4 +
 .../hbase/master/procedure/package-tree.html    |     2 +-
 .../replication/RefreshPeerProcedure.html       |    41 +-
 .../hadoop/hbase/monitoring/package-tree.html   |     2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    18 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     4 +-
 .../procedure2/store/ProcedureStoreTracker.html |    92 +-
 .../procedure2/store/class-use/BitSetNode.html  |     8 -
 .../hadoop/hbase/quotas/package-tree.html       |     8 +-
 .../regionserver/HRegion.BulkLoadListener.html  |     8 +-
 .../regionserver/HRegion.RegionScannerImpl.html |    90 +-
 .../regionserver/HRegion.RowLockContext.html    |    28 +-
 .../hbase/regionserver/HRegion.RowLockImpl.html |    16 +-
 .../hadoop/hbase/regionserver/HRegion.html      |   857 +-
 .../hbase/regionserver/InternalScanner.html     |     4 +-
 .../InvalidMutationDurabilityException.html     |   299 +
 .../KeyPrefixRegionSplitPolicy.html             |     4 +-
 .../InvalidMutationDurabilityException.html     |   171 +
 .../class-use/NoSuchColumnFamilyException.html  |    12 +-
 .../hbase/regionserver/package-frame.html       |     1 +
 .../hbase/regionserver/package-summary.html     |    20 +-
 .../hadoop/hbase/regionserver/package-tree.html |    19 +-
 .../hadoop/hbase/regionserver/package-use.html  |   259 +-
 .../hbase/regionserver/wal/package-tree.html    |     2 +-
 .../hbase/security/access/package-tree.html     |     2 +-
 .../hadoop/hbase/security/package-tree.html     |     2 +-
 .../hadoop/hbase/thrift/package-tree.html       |     4 +-
 .../apache/hadoop/hbase/util/package-tree.html  |     6 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     2 +-
 devapidocs/overview-tree.html                   |     1 +
 devapidocs/serialized-form.html                 |     5 +
 .../org/apache/hadoop/hbase/Version.html        |     4 +-
 .../HTable.CheckAndMutateBuilderImpl.html       |  1575 +-
 .../org/apache/hadoop/hbase/client/HTable.html  |  1575 +-
 .../replication/RefreshPeerProcedure.html       |    35 +-
 .../ProcedureStoreTracker.DeleteState.html      |   214 +-
 .../procedure2/store/ProcedureStoreTracker.html |   214 +-
 .../HRegion.BatchOperation.Visitor.html         |  8463 ++--
 .../regionserver/HRegion.BatchOperation.html    |  8463 ++--
 .../regionserver/HRegion.BulkLoadListener.html  |  8463 ++--
 .../HRegion.FlushResult.Result.html             |  8463 ++--
 .../hbase/regionserver/HRegion.FlushResult.html |  8463 ++--
 .../regionserver/HRegion.FlushResultImpl.html   |  8463 ++--
 .../HRegion.MutationBatchOperation.html         |  8463 ++--
 .../HRegion.ObservedExceptionsInBatch.html      |  8463 ++--
 .../HRegion.PrepareFlushResult.html             |  8463 ++--
 .../regionserver/HRegion.RegionScannerImpl.html |  8463 ++--
 .../HRegion.ReplayBatchOperation.html           |  8463 ++--
 .../regionserver/HRegion.RowLockContext.html    |  8463 ++--
 .../hbase/regionserver/HRegion.RowLockImpl.html |  8463 ++--
 .../hbase/regionserver/HRegion.WriteState.html  |  8463 ++--
 .../hadoop/hbase/regionserver/HRegion.html      |  8463 ++--
 .../InvalidMutationDurabilityException.html     |   116 +
 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            |     4 +
 testdevapidocs/allclasses-noframe.html          |     4 +
 testdevapidocs/index-all.html                   |   128 +
 ...cing.BlockCompactionsInCompletionRegion.html |     2 +-
 ...tIOFencing.BlockCompactionsInPrepRegion.html |     2 +-
 .../TestIOFencing.CompactionBlockerRegion.html  |     2 +-
 .../hbase/class-use/HBaseClassTestRule.html     |    32 +-
 .../hbase/class-use/HBaseTestingUtility.html    |     8 +
 ...stFromClientSideScanExcpetion.MyHRegion.html |     2 +-
 .../hbase/client/TestIntraRowPagination.html    |     4 +-
 .../TestInvalidMutationDurabilityException.html |   654 +
 .../hadoop/hbase/client/TestLeaseRenewal.html   |     4 +-
 .../hbase/client/TestTableFavoredNodes.html     |     4 +-
 ...n.ThrowDoNotRetryIOExceptionCoprocessor.html |   463 +
 ...onException.ThrowIOExceptionCoprocessor.html |   463 +
 .../client/TestTableOperationException.html     |   625 +
 .../hadoop/hbase/client/TestTableShell.html     |     4 +-
 .../TestInvalidMutationDurabilityException.html |   125 +
 ...n.ThrowDoNotRetryIOExceptionCoprocessor.html |   125 +
 ...onException.ThrowIOExceptionCoprocessor.html |   125 +
 .../class-use/TestTableOperationException.html  |   125 +
 .../hadoop/hbase/client/package-frame.html      |     4 +
 .../hadoop/hbase/client/package-summary.html    |   218 +-
 .../hadoop/hbase/client/package-tree.html       |     4 +
 ...ook.CompactionCompletionNotifyingRegion.html |     2 +-
 ...FilesEndpoint.HRegionForRefreshHFilesEP.html |     2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    10 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     4 +-
 .../TestAtomicOperation.MockHRegion.html        |     2 +-
 .../TestHRegion.HRegionForTesting.html          |     2 +-
 .../TestHRegion.HRegionWithSeqId.html           |     2 +-
 ...penSeqNumUnexpectedIncrease.MockHRegion.html |     2 +-
 ...tRegionServerAbort.ErrorThrowingHRegion.html |     2 +-
 ...annerHeartbeatMessages.HeartbeatHRegion.html |     2 +-
 .../hadoop/hbase/regionserver/package-tree.html |     4 +-
 .../apache/hadoop/hbase/test/package-tree.html  |     2 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     4 +-
 testdevapidocs/overview-tree.html               |     4 +
 testdevapidocs/serialized-form.html             |     5 +
 .../TestInvalidMutationDurabilityException.html |   228 +
 ...n.ThrowDoNotRetryIOExceptionCoprocessor.html |   294 +
 ...onException.ThrowIOExceptionCoprocessor.html |   294 +
 .../client/TestTableOperationException.html     |   294 +
 163 files changed, 98094 insertions(+), 95515 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index 2dbab31..6a981a6 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -611,7 +611,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-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 


[10/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 da040ad..d6702a7 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
@@ -2957,7 +2957,7 @@
 <span class="sourceLineNo">2949</span>        if(family == null) {<a name="line.2949"></a>
 <span class="sourceLineNo">2950</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2950"></a>
 <span class="sourceLineNo">2951</span>        }<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>        checkFamily(family);<a name="line.2952"></a>
+<span class="sourceLineNo">2952</span>        checkFamily(family, delete.getDurability());<a name="line.2952"></a>
 <span class="sourceLineNo">2953</span>      }<a name="line.2953"></a>
 <span class="sourceLineNo">2954</span>    }<a name="line.2954"></a>
 <span class="sourceLineNo">2955</span>  }<a name="line.2955"></a>
@@ -3569,7 +3569,7 @@
 <span class="sourceLineNo">3561</span><a name="line.3561"></a>
 <span class="sourceLineNo">3562</span>    @Override<a name="line.3562"></a>
 <span class="sourceLineNo">3563</span>    public void checkAndPreparePut(Put p) throws IOException {<a name="line.3563"></a>
-<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet());<a name="line.3564"></a>
+<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet(), p.getDurability());<a name="line.3564"></a>
 <span class="sourceLineNo">3565</span>    }<a name="line.3565"></a>
 <span class="sourceLineNo">3566</span><a name="line.3566"></a>
 <span class="sourceLineNo">3567</span>    @Override<a name="line.3567"></a>
@@ -4462,4304 +4462,4307 @@
 <span class="sourceLineNo">4454</span>    store.add(cell, memstoreAccounting);<a name="line.4454"></a>
 <span class="sourceLineNo">4455</span>  }<a name="line.4455"></a>
 <span class="sourceLineNo">4456</span><a name="line.4456"></a>
-<span class="sourceLineNo">4457</span>  /**<a name="line.4457"></a>
-<span class="sourceLineNo">4458</span>   * Check the collection of families for validity.<a name="line.4458"></a>
-<span class="sourceLineNo">4459</span>   * @param families<a name="line.4459"></a>
-<span class="sourceLineNo">4460</span>   * @throws NoSuchColumnFamilyException<a name="line.4460"></a>
-<span class="sourceLineNo">4461</span>   */<a name="line.4461"></a>
-<span class="sourceLineNo">4462</span>  public void checkFamilies(Collection&lt;byte[]&gt; families) throws NoSuchColumnFamilyException {<a name="line.4462"></a>
-<span class="sourceLineNo">4463</span>    for (byte[] family : families) {<a name="line.4463"></a>
-<span class="sourceLineNo">4464</span>      checkFamily(family);<a name="line.4464"></a>
-<span class="sourceLineNo">4465</span>    }<a name="line.4465"></a>
-<span class="sourceLineNo">4466</span>  }<a name="line.4466"></a>
-<span class="sourceLineNo">4467</span><a name="line.4467"></a>
-<span class="sourceLineNo">4468</span>  /**<a name="line.4468"></a>
-<span class="sourceLineNo">4469</span>   * Check the collection of families for valid timestamps<a name="line.4469"></a>
-<span class="sourceLineNo">4470</span>   * @param familyMap<a name="line.4470"></a>
-<span class="sourceLineNo">4471</span>   * @param now current timestamp<a name="line.4471"></a>
-<span class="sourceLineNo">4472</span>   * @throws FailedSanityCheckException<a name="line.4472"></a>
-<span class="sourceLineNo">4473</span>   */<a name="line.4473"></a>
-<span class="sourceLineNo">4474</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4474"></a>
-<span class="sourceLineNo">4475</span>      throws FailedSanityCheckException {<a name="line.4475"></a>
-<span class="sourceLineNo">4476</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4476"></a>
-<span class="sourceLineNo">4477</span>      return;<a name="line.4477"></a>
-<span class="sourceLineNo">4478</span>    }<a name="line.4478"></a>
-<span class="sourceLineNo">4479</span>    long maxTs = now + timestampSlop;<a name="line.4479"></a>
-<span class="sourceLineNo">4480</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4480"></a>
-<span class="sourceLineNo">4481</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4481"></a>
-<span class="sourceLineNo">4482</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4482"></a>
-<span class="sourceLineNo">4483</span>      assert kvs instanceof RandomAccess;<a name="line.4483"></a>
-<span class="sourceLineNo">4484</span>      int listSize  = kvs.size();<a name="line.4484"></a>
-<span class="sourceLineNo">4485</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4485"></a>
-<span class="sourceLineNo">4486</span>        Cell cell = kvs.get(i);<a name="line.4486"></a>
-<span class="sourceLineNo">4487</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4487"></a>
-<span class="sourceLineNo">4488</span>        long ts = cell.getTimestamp();<a name="line.4488"></a>
-<span class="sourceLineNo">4489</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4489"></a>
-<span class="sourceLineNo">4490</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4490"></a>
-<span class="sourceLineNo">4491</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4491"></a>
-<span class="sourceLineNo">4492</span>        }<a name="line.4492"></a>
-<span class="sourceLineNo">4493</span>      }<a name="line.4493"></a>
+<span class="sourceLineNo">4457</span>  private void checkFamilies(Collection&lt;byte[]&gt; families, Durability durability)<a name="line.4457"></a>
+<span class="sourceLineNo">4458</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4458"></a>
+<span class="sourceLineNo">4459</span>    for (byte[] family : families) {<a name="line.4459"></a>
+<span class="sourceLineNo">4460</span>      checkFamily(family, durability);<a name="line.4460"></a>
+<span class="sourceLineNo">4461</span>    }<a name="line.4461"></a>
+<span class="sourceLineNo">4462</span>  }<a name="line.4462"></a>
+<span class="sourceLineNo">4463</span><a name="line.4463"></a>
+<span class="sourceLineNo">4464</span>  private void checkFamily(final byte[] family, Durability durability)<a name="line.4464"></a>
+<span class="sourceLineNo">4465</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4465"></a>
+<span class="sourceLineNo">4466</span>    checkFamily(family);<a name="line.4466"></a>
+<span class="sourceLineNo">4467</span>    if (durability.equals(Durability.SKIP_WAL)<a name="line.4467"></a>
+<span class="sourceLineNo">4468</span>        &amp;&amp; htableDescriptor.getColumnFamily(family).getScope()<a name="line.4468"></a>
+<span class="sourceLineNo">4469</span>        != HConstants.REPLICATION_SCOPE_LOCAL) {<a name="line.4469"></a>
+<span class="sourceLineNo">4470</span>      throw new InvalidMutationDurabilityException(<a name="line.4470"></a>
+<span class="sourceLineNo">4471</span>          "Mutation's durability is SKIP_WAL but table's column family " + Bytes.toString(family)<a name="line.4471"></a>
+<span class="sourceLineNo">4472</span>              + " need replication");<a name="line.4472"></a>
+<span class="sourceLineNo">4473</span>    }<a name="line.4473"></a>
+<span class="sourceLineNo">4474</span>  }<a name="line.4474"></a>
+<span class="sourceLineNo">4475</span><a name="line.4475"></a>
+<span class="sourceLineNo">4476</span>  void checkFamily(final byte[] family) throws NoSuchColumnFamilyException {<a name="line.4476"></a>
+<span class="sourceLineNo">4477</span>    if (!this.htableDescriptor.hasColumnFamily(family)) {<a name="line.4477"></a>
+<span class="sourceLineNo">4478</span>      throw new NoSuchColumnFamilyException(<a name="line.4478"></a>
+<span class="sourceLineNo">4479</span>          "Column family " + Bytes.toString(family) + " does not exist in region " + this<a name="line.4479"></a>
+<span class="sourceLineNo">4480</span>              + " in table " + this.htableDescriptor);<a name="line.4480"></a>
+<span class="sourceLineNo">4481</span>    }<a name="line.4481"></a>
+<span class="sourceLineNo">4482</span>  }<a name="line.4482"></a>
+<span class="sourceLineNo">4483</span><a name="line.4483"></a>
+<span class="sourceLineNo">4484</span>  /**<a name="line.4484"></a>
+<span class="sourceLineNo">4485</span>   * Check the collection of families for valid timestamps<a name="line.4485"></a>
+<span class="sourceLineNo">4486</span>   * @param familyMap<a name="line.4486"></a>
+<span class="sourceLineNo">4487</span>   * @param now current timestamp<a name="line.4487"></a>
+<span class="sourceLineNo">4488</span>   * @throws FailedSanityCheckException<a name="line.4488"></a>
+<span class="sourceLineNo">4489</span>   */<a name="line.4489"></a>
+<span class="sourceLineNo">4490</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4490"></a>
+<span class="sourceLineNo">4491</span>      throws FailedSanityCheckException {<a name="line.4491"></a>
+<span class="sourceLineNo">4492</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4492"></a>
+<span class="sourceLineNo">4493</span>      return;<a name="line.4493"></a>
 <span class="sourceLineNo">4494</span>    }<a name="line.4494"></a>
-<span class="sourceLineNo">4495</span>  }<a name="line.4495"></a>
-<span class="sourceLineNo">4496</span><a name="line.4496"></a>
-<span class="sourceLineNo">4497</span>  /*<a name="line.4497"></a>
-<span class="sourceLineNo">4498</span>   * @param size<a name="line.4498"></a>
-<span class="sourceLineNo">4499</span>   * @return True if size is over the flush threshold<a name="line.4499"></a>
-<span class="sourceLineNo">4500</span>   */<a name="line.4500"></a>
-<span class="sourceLineNo">4501</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4501"></a>
-<span class="sourceLineNo">4502</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4502"></a>
-<span class="sourceLineNo">4503</span>  }<a name="line.4503"></a>
-<span class="sourceLineNo">4504</span><a name="line.4504"></a>
-<span class="sourceLineNo">4505</span>  /**<a name="line.4505"></a>
-<span class="sourceLineNo">4506</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4506"></a>
-<span class="sourceLineNo">4507</span>   * the recovered edits back up into this region.<a name="line.4507"></a>
-<span class="sourceLineNo">4508</span>   *<a name="line.4508"></a>
-<span class="sourceLineNo">4509</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4509"></a>
-<span class="sourceLineNo">4510</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4510"></a>
-<span class="sourceLineNo">4511</span>   * reflected in the HFiles.)<a name="line.4511"></a>
-<span class="sourceLineNo">4512</span>   *<a name="line.4512"></a>
-<span class="sourceLineNo">4513</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4513"></a>
-<span class="sourceLineNo">4514</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4514"></a>
-<span class="sourceLineNo">4515</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4515"></a>
-<span class="sourceLineNo">4516</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4516"></a>
-<span class="sourceLineNo">4517</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4517"></a>
-<span class="sourceLineNo">4518</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4518"></a>
-<span class="sourceLineNo">4519</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4519"></a>
-<span class="sourceLineNo">4520</span>   * edits.<a name="line.4520"></a>
-<span class="sourceLineNo">4521</span>   *<a name="line.4521"></a>
-<span class="sourceLineNo">4522</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4522"></a>
-<span class="sourceLineNo">4523</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4523"></a>
-<span class="sourceLineNo">4524</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4524"></a>
-<span class="sourceLineNo">4525</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4525"></a>
-<span class="sourceLineNo">4526</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4526"></a>
-<span class="sourceLineNo">4527</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4527"></a>
-<span class="sourceLineNo">4528</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4528"></a>
-<span class="sourceLineNo">4529</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4529"></a>
-<span class="sourceLineNo">4530</span>   * make sense in a this single region context only -- until we online.<a name="line.4530"></a>
-<span class="sourceLineNo">4531</span>   *<a name="line.4531"></a>
-<span class="sourceLineNo">4532</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4532"></a>
-<span class="sourceLineNo">4533</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4533"></a>
-<span class="sourceLineNo">4534</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4534"></a>
-<span class="sourceLineNo">4535</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4535"></a>
-<span class="sourceLineNo">4536</span>   * @throws IOException<a name="line.4536"></a>
-<span class="sourceLineNo">4537</span>   */<a name="line.4537"></a>
-<span class="sourceLineNo">4538</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4538"></a>
-<span class="sourceLineNo">4539</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4539"></a>
-<span class="sourceLineNo">4540</span>      throws IOException {<a name="line.4540"></a>
-<span class="sourceLineNo">4541</span>    long minSeqIdForTheRegion = -1;<a name="line.4541"></a>
-<span class="sourceLineNo">4542</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4542"></a>
-<span class="sourceLineNo">4543</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4543"></a>
-<span class="sourceLineNo">4544</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4544"></a>
-<span class="sourceLineNo">4545</span>      }<a name="line.4545"></a>
-<span class="sourceLineNo">4546</span>    }<a name="line.4546"></a>
-<span class="sourceLineNo">4547</span>    long seqid = minSeqIdForTheRegion;<a name="line.4547"></a>
-<span class="sourceLineNo">4548</span><a name="line.4548"></a>
-<span class="sourceLineNo">4549</span>    FileSystem walFS = getWalFileSystem();<a name="line.4549"></a>
-<span class="sourceLineNo">4550</span>    FileSystem rootFS = getFilesystem();<a name="line.4550"></a>
-<span class="sourceLineNo">4551</span>    Path regionDir = getWALRegionDir();<a name="line.4551"></a>
-<span class="sourceLineNo">4552</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4552"></a>
-<span class="sourceLineNo">4553</span><a name="line.4553"></a>
-<span class="sourceLineNo">4554</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4554"></a>
-<span class="sourceLineNo">4555</span>    // under the root dir even if walDir is set.<a name="line.4555"></a>
-<span class="sourceLineNo">4556</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4556"></a>
-<span class="sourceLineNo">4557</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4557"></a>
-<span class="sourceLineNo">4558</span>      filesUnderRootDir =<a name="line.4558"></a>
-<span class="sourceLineNo">4559</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4559"></a>
-<span class="sourceLineNo">4560</span>      seqid = Math.max(seqid,<a name="line.4560"></a>
-<span class="sourceLineNo">4561</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4561"></a>
-<span class="sourceLineNo">4562</span>              defaultRegionDir));<a name="line.4562"></a>
-<span class="sourceLineNo">4563</span>    }<a name="line.4563"></a>
+<span class="sourceLineNo">4495</span>    long maxTs = now + timestampSlop;<a name="line.4495"></a>
+<span class="sourceLineNo">4496</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4496"></a>
+<span class="sourceLineNo">4497</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4497"></a>
+<span class="sourceLineNo">4498</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4498"></a>
+<span class="sourceLineNo">4499</span>      assert kvs instanceof RandomAccess;<a name="line.4499"></a>
+<span class="sourceLineNo">4500</span>      int listSize  = kvs.size();<a name="line.4500"></a>
+<span class="sourceLineNo">4501</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4501"></a>
+<span class="sourceLineNo">4502</span>        Cell cell = kvs.get(i);<a name="line.4502"></a>
+<span class="sourceLineNo">4503</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4503"></a>
+<span class="sourceLineNo">4504</span>        long ts = cell.getTimestamp();<a name="line.4504"></a>
+<span class="sourceLineNo">4505</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4505"></a>
+<span class="sourceLineNo">4506</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4506"></a>
+<span class="sourceLineNo">4507</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4507"></a>
+<span class="sourceLineNo">4508</span>        }<a name="line.4508"></a>
+<span class="sourceLineNo">4509</span>      }<a name="line.4509"></a>
+<span class="sourceLineNo">4510</span>    }<a name="line.4510"></a>
+<span class="sourceLineNo">4511</span>  }<a name="line.4511"></a>
+<span class="sourceLineNo">4512</span><a name="line.4512"></a>
+<span class="sourceLineNo">4513</span>  /*<a name="line.4513"></a>
+<span class="sourceLineNo">4514</span>   * @param size<a name="line.4514"></a>
+<span class="sourceLineNo">4515</span>   * @return True if size is over the flush threshold<a name="line.4515"></a>
+<span class="sourceLineNo">4516</span>   */<a name="line.4516"></a>
+<span class="sourceLineNo">4517</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4517"></a>
+<span class="sourceLineNo">4518</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4518"></a>
+<span class="sourceLineNo">4519</span>  }<a name="line.4519"></a>
+<span class="sourceLineNo">4520</span><a name="line.4520"></a>
+<span class="sourceLineNo">4521</span>  /**<a name="line.4521"></a>
+<span class="sourceLineNo">4522</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4522"></a>
+<span class="sourceLineNo">4523</span>   * the recovered edits back up into this region.<a name="line.4523"></a>
+<span class="sourceLineNo">4524</span>   *<a name="line.4524"></a>
+<span class="sourceLineNo">4525</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4525"></a>
+<span class="sourceLineNo">4526</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4526"></a>
+<span class="sourceLineNo">4527</span>   * reflected in the HFiles.)<a name="line.4527"></a>
+<span class="sourceLineNo">4528</span>   *<a name="line.4528"></a>
+<span class="sourceLineNo">4529</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4529"></a>
+<span class="sourceLineNo">4530</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4530"></a>
+<span class="sourceLineNo">4531</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4531"></a>
+<span class="sourceLineNo">4532</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4532"></a>
+<span class="sourceLineNo">4533</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4533"></a>
+<span class="sourceLineNo">4534</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4534"></a>
+<span class="sourceLineNo">4535</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4535"></a>
+<span class="sourceLineNo">4536</span>   * edits.<a name="line.4536"></a>
+<span class="sourceLineNo">4537</span>   *<a name="line.4537"></a>
+<span class="sourceLineNo">4538</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4538"></a>
+<span class="sourceLineNo">4539</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4539"></a>
+<span class="sourceLineNo">4540</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4540"></a>
+<span class="sourceLineNo">4541</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4541"></a>
+<span class="sourceLineNo">4542</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4542"></a>
+<span class="sourceLineNo">4543</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4543"></a>
+<span class="sourceLineNo">4544</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4544"></a>
+<span class="sourceLineNo">4545</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4545"></a>
+<span class="sourceLineNo">4546</span>   * make sense in a this single region context only -- until we online.<a name="line.4546"></a>
+<span class="sourceLineNo">4547</span>   *<a name="line.4547"></a>
+<span class="sourceLineNo">4548</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4548"></a>
+<span class="sourceLineNo">4549</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4549"></a>
+<span class="sourceLineNo">4550</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4550"></a>
+<span class="sourceLineNo">4551</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4551"></a>
+<span class="sourceLineNo">4552</span>   * @throws IOException<a name="line.4552"></a>
+<span class="sourceLineNo">4553</span>   */<a name="line.4553"></a>
+<span class="sourceLineNo">4554</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4554"></a>
+<span class="sourceLineNo">4555</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4555"></a>
+<span class="sourceLineNo">4556</span>      throws IOException {<a name="line.4556"></a>
+<span class="sourceLineNo">4557</span>    long minSeqIdForTheRegion = -1;<a name="line.4557"></a>
+<span class="sourceLineNo">4558</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4558"></a>
+<span class="sourceLineNo">4559</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4559"></a>
+<span class="sourceLineNo">4560</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4560"></a>
+<span class="sourceLineNo">4561</span>      }<a name="line.4561"></a>
+<span class="sourceLineNo">4562</span>    }<a name="line.4562"></a>
+<span class="sourceLineNo">4563</span>    long seqid = minSeqIdForTheRegion;<a name="line.4563"></a>
 <span class="sourceLineNo">4564</span><a name="line.4564"></a>
-<span class="sourceLineNo">4565</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4565"></a>
-<span class="sourceLineNo">4566</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4566"></a>
-<span class="sourceLineNo">4567</span>        files, reporter, regionDir));<a name="line.4567"></a>
-<span class="sourceLineNo">4568</span><a name="line.4568"></a>
-<span class="sourceLineNo">4569</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4569"></a>
-<span class="sourceLineNo">4570</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4570"></a>
-<span class="sourceLineNo">4571</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4571"></a>
-<span class="sourceLineNo">4572</span>    }<a name="line.4572"></a>
-<span class="sourceLineNo">4573</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4573"></a>
-<span class="sourceLineNo">4574</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4574"></a>
-<span class="sourceLineNo">4575</span>      // For debugging data loss issues!<a name="line.4575"></a>
-<span class="sourceLineNo">4576</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4576"></a>
-<span class="sourceLineNo">4577</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4577"></a>
-<span class="sourceLineNo">4578</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4578"></a>
-<span class="sourceLineNo">4579</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4579"></a>
-<span class="sourceLineNo">4580</span>      for (Path file: files) {<a name="line.4580"></a>
-<span class="sourceLineNo">4581</span>        fakeStoreFiles.add(<a name="line.4581"></a>
-<span class="sourceLineNo">4582</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4582"></a>
-<span class="sourceLineNo">4583</span>      }<a name="line.4583"></a>
-<span class="sourceLineNo">4584</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4584"></a>
-<span class="sourceLineNo">4585</span>    } else {<a name="line.4585"></a>
-<span class="sourceLineNo">4586</span>      if (filesUnderRootDir != null) {<a name="line.4586"></a>
-<span class="sourceLineNo">4587</span>        for (Path file : filesUnderRootDir) {<a name="line.4587"></a>
-<span class="sourceLineNo">4588</span>          if (!rootFS.delete(file, false)) {<a name="line.4588"></a>
-<span class="sourceLineNo">4589</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4589"></a>
-<span class="sourceLineNo">4590</span>          } else {<a name="line.4590"></a>
-<span class="sourceLineNo">4591</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4591"></a>
-<span class="sourceLineNo">4592</span>          }<a name="line.4592"></a>
-<span class="sourceLineNo">4593</span>        }<a name="line.4593"></a>
-<span class="sourceLineNo">4594</span>      }<a name="line.4594"></a>
-<span class="sourceLineNo">4595</span>      for (Path file: files) {<a name="line.4595"></a>
-<span class="sourceLineNo">4596</span>        if (!walFS.delete(file, false)) {<a name="line.4596"></a>
-<span class="sourceLineNo">4597</span>          LOG.error("Failed delete of " + file);<a name="line.4597"></a>
-<span class="sourceLineNo">4598</span>        } else {<a name="line.4598"></a>
-<span class="sourceLineNo">4599</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4599"></a>
-<span class="sourceLineNo">4600</span>        }<a name="line.4600"></a>
-<span class="sourceLineNo">4601</span>      }<a name="line.4601"></a>
-<span class="sourceLineNo">4602</span>    }<a name="line.4602"></a>
-<span class="sourceLineNo">4603</span>    return seqid;<a name="line.4603"></a>
-<span class="sourceLineNo">4604</span>  }<a name="line.4604"></a>
-<span class="sourceLineNo">4605</span><a name="line.4605"></a>
-<span class="sourceLineNo">4606</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4606"></a>
-<span class="sourceLineNo">4607</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4607"></a>
-<span class="sourceLineNo">4608</span>      throws IOException {<a name="line.4608"></a>
-<span class="sourceLineNo">4609</span>    long seqid = minSeqIdForTheRegion;<a name="line.4609"></a>
-<span class="sourceLineNo">4610</span>    if (LOG.isDebugEnabled()) {<a name="line.4610"></a>
-<span class="sourceLineNo">4611</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4611"></a>
-<span class="sourceLineNo">4612</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4612"></a>
-<span class="sourceLineNo">4613</span>    }<a name="line.4613"></a>
-<span class="sourceLineNo">4614</span><a name="line.4614"></a>
-<span class="sourceLineNo">4615</span>    if (files == null || files.isEmpty()) {<a name="line.4615"></a>
-<span class="sourceLineNo">4616</span>      return minSeqIdForTheRegion;<a name="line.4616"></a>
-<span class="sourceLineNo">4617</span>    }<a name="line.4617"></a>
-<span class="sourceLineNo">4618</span><a name="line.4618"></a>
-<span class="sourceLineNo">4619</span>    for (Path edits: files) {<a name="line.4619"></a>
-<span class="sourceLineNo">4620</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4620"></a>
-<span class="sourceLineNo">4621</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4621"></a>
-<span class="sourceLineNo">4622</span>        continue;<a name="line.4622"></a>
-<span class="sourceLineNo">4623</span>      }<a name="line.4623"></a>
-<span class="sourceLineNo">4624</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4624"></a>
-<span class="sourceLineNo">4625</span><a name="line.4625"></a>
-<span class="sourceLineNo">4626</span>      long maxSeqId;<a name="line.4626"></a>
-<span class="sourceLineNo">4627</span>      String fileName = edits.getName();<a name="line.4627"></a>
-<span class="sourceLineNo">4628</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4628"></a>
-<span class="sourceLineNo">4629</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4629"></a>
-<span class="sourceLineNo">4630</span>        if (LOG.isDebugEnabled()) {<a name="line.4630"></a>
-<span class="sourceLineNo">4631</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4631"></a>
-<span class="sourceLineNo">4632</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4632"></a>
-<span class="sourceLineNo">4633</span>              + ", skipped the whole file, path=" + edits;<a name="line.4633"></a>
-<span class="sourceLineNo">4634</span>          LOG.debug(msg);<a name="line.4634"></a>
-<span class="sourceLineNo">4635</span>        }<a name="line.4635"></a>
-<span class="sourceLineNo">4636</span>        continue;<a name="line.4636"></a>
-<span class="sourceLineNo">4637</span>      }<a name="line.4637"></a>
-<span class="sourceLineNo">4638</span><a name="line.4638"></a>
-<span class="sourceLineNo">4639</span>      try {<a name="line.4639"></a>
-<span class="sourceLineNo">4640</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4640"></a>
-<span class="sourceLineNo">4641</span>        // if seqId is greater<a name="line.4641"></a>
-<span class="sourceLineNo">4642</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4642"></a>
-<span class="sourceLineNo">4643</span>      } catch (IOException e) {<a name="line.4643"></a>
-<span class="sourceLineNo">4644</span>        boolean skipErrors = conf.getBoolean(<a name="line.4644"></a>
-<span class="sourceLineNo">4645</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4645"></a>
-<span class="sourceLineNo">4646</span>            conf.getBoolean(<a name="line.4646"></a>
-<span class="sourceLineNo">4647</span>                "hbase.skip.errors",<a name="line.4647"></a>
-<span class="sourceLineNo">4648</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4648"></a>
-<span class="sourceLineNo">4649</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4649"></a>
-<span class="sourceLineNo">4650</span>          LOG.warn(<a name="line.4650"></a>
-<span class="sourceLineNo">4651</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4651"></a>
-<span class="sourceLineNo">4652</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4652"></a>
-<span class="sourceLineNo">4653</span>        }<a name="line.4653"></a>
-<span class="sourceLineNo">4654</span>        if (skipErrors) {<a name="line.4654"></a>
-<span class="sourceLineNo">4655</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4655"></a>
-<span class="sourceLineNo">4656</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4656"></a>
-<span class="sourceLineNo">4657</span>              + "=true so continuing. Renamed " + edits +<a name="line.4657"></a>
-<span class="sourceLineNo">4658</span>              " as " + p, e);<a name="line.4658"></a>
-<span class="sourceLineNo">4659</span>        } else {<a name="line.4659"></a>
-<span class="sourceLineNo">4660</span>          throw e;<a name="line.4660"></a>
-<span class="sourceLineNo">4661</span>        }<a name="line.4661"></a>
-<span class="sourceLineNo">4662</span>      }<a name="line.4662"></a>
-<span class="sourceLineNo">4663</span>    }<a name="line.4663"></a>
-<span class="sourceLineNo">4664</span>    return seqid;<a name="line.4664"></a>
-<span class="sourceLineNo">4665</span>  }<a name="line.4665"></a>
-<span class="sourceLineNo">4666</span><a name="line.4666"></a>
-<span class="sourceLineNo">4667</span>  /*<a name="line.4667"></a>
-<span class="sourceLineNo">4668</span>   * @param edits File of recovered edits.<a name="line.4668"></a>
-<span class="sourceLineNo">4669</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4669"></a>
-<span class="sourceLineNo">4670</span>   * must be larger than this to be replayed for each store.<a name="line.4670"></a>
-<span class="sourceLineNo">4671</span>   * @param reporter<a name="line.4671"></a>
-<span class="sourceLineNo">4672</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4672"></a>
-<span class="sourceLineNo">4673</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4673"></a>
-<span class="sourceLineNo">4674</span>   * @throws IOException<a name="line.4674"></a>
-<span class="sourceLineNo">4675</span>   */<a name="line.4675"></a>
-<span class="sourceLineNo">4676</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4676"></a>
-<span class="sourceLineNo">4677</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4677"></a>
-<span class="sourceLineNo">4678</span>    throws IOException {<a name="line.4678"></a>
-<span class="sourceLineNo">4679</span>    String msg = "Replaying edits from " + edits;<a name="line.4679"></a>
-<span class="sourceLineNo">4680</span>    LOG.info(msg);<a name="line.4680"></a>
-<span class="sourceLineNo">4681</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4681"></a>
+<span class="sourceLineNo">4565</span>    FileSystem walFS = getWalFileSystem();<a name="line.4565"></a>
+<span class="sourceLineNo">4566</span>    FileSystem rootFS = getFilesystem();<a name="line.4566"></a>
+<span class="sourceLineNo">4567</span>    Path regionDir = getWALRegionDir();<a name="line.4567"></a>
+<span class="sourceLineNo">4568</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4568"></a>
+<span class="sourceLineNo">4569</span><a name="line.4569"></a>
+<span class="sourceLineNo">4570</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4570"></a>
+<span class="sourceLineNo">4571</span>    // under the root dir even if walDir is set.<a name="line.4571"></a>
+<span class="sourceLineNo">4572</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4572"></a>
+<span class="sourceLineNo">4573</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4573"></a>
+<span class="sourceLineNo">4574</span>      filesUnderRootDir =<a name="line.4574"></a>
+<span class="sourceLineNo">4575</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4575"></a>
+<span class="sourceLineNo">4576</span>      seqid = Math.max(seqid,<a name="line.4576"></a>
+<span class="sourceLineNo">4577</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4577"></a>
+<span class="sourceLineNo">4578</span>              defaultRegionDir));<a name="line.4578"></a>
+<span class="sourceLineNo">4579</span>    }<a name="line.4579"></a>
+<span class="sourceLineNo">4580</span><a name="line.4580"></a>
+<span class="sourceLineNo">4581</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4581"></a>
+<span class="sourceLineNo">4582</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4582"></a>
+<span class="sourceLineNo">4583</span>        files, reporter, regionDir));<a name="line.4583"></a>
+<span class="sourceLineNo">4584</span><a name="line.4584"></a>
+<span class="sourceLineNo">4585</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4585"></a>
+<span class="sourceLineNo">4586</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4586"></a>
+<span class="sourceLineNo">4587</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4587"></a>
+<span class="sourceLineNo">4588</span>    }<a name="line.4588"></a>
+<span class="sourceLineNo">4589</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4589"></a>
+<span class="sourceLineNo">4590</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4590"></a>
+<span class="sourceLineNo">4591</span>      // For debugging data loss issues!<a name="line.4591"></a>
+<span class="sourceLineNo">4592</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4592"></a>
+<span class="sourceLineNo">4593</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4593"></a>
+<span class="sourceLineNo">4594</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4594"></a>
+<span class="sourceLineNo">4595</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4595"></a>
+<span class="sourceLineNo">4596</span>      for (Path file: files) {<a name="line.4596"></a>
+<span class="sourceLineNo">4597</span>        fakeStoreFiles.add(<a name="line.4597"></a>
+<span class="sourceLineNo">4598</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4598"></a>
+<span class="sourceLineNo">4599</span>      }<a name="line.4599"></a>
+<span class="sourceLineNo">4600</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4600"></a>
+<span class="sourceLineNo">4601</span>    } else {<a name="line.4601"></a>
+<span class="sourceLineNo">4602</span>      if (filesUnderRootDir != null) {<a name="line.4602"></a>
+<span class="sourceLineNo">4603</span>        for (Path file : filesUnderRootDir) {<a name="line.4603"></a>
+<span class="sourceLineNo">4604</span>          if (!rootFS.delete(file, false)) {<a name="line.4604"></a>
+<span class="sourceLineNo">4605</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4605"></a>
+<span class="sourceLineNo">4606</span>          } else {<a name="line.4606"></a>
+<span class="sourceLineNo">4607</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4607"></a>
+<span class="sourceLineNo">4608</span>          }<a name="line.4608"></a>
+<span class="sourceLineNo">4609</span>        }<a name="line.4609"></a>
+<span class="sourceLineNo">4610</span>      }<a name="line.4610"></a>
+<span class="sourceLineNo">4611</span>      for (Path file: files) {<a name="line.4611"></a>
+<span class="sourceLineNo">4612</span>        if (!walFS.delete(file, false)) {<a name="line.4612"></a>
+<span class="sourceLineNo">4613</span>          LOG.error("Failed delete of " + file);<a name="line.4613"></a>
+<span class="sourceLineNo">4614</span>        } else {<a name="line.4614"></a>
+<span class="sourceLineNo">4615</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4615"></a>
+<span class="sourceLineNo">4616</span>        }<a name="line.4616"></a>
+<span class="sourceLineNo">4617</span>      }<a name="line.4617"></a>
+<span class="sourceLineNo">4618</span>    }<a name="line.4618"></a>
+<span class="sourceLineNo">4619</span>    return seqid;<a name="line.4619"></a>
+<span class="sourceLineNo">4620</span>  }<a name="line.4620"></a>
+<span class="sourceLineNo">4621</span><a name="line.4621"></a>
+<span class="sourceLineNo">4622</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4622"></a>
+<span class="sourceLineNo">4623</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4623"></a>
+<span class="sourceLineNo">4624</span>      throws IOException {<a name="line.4624"></a>
+<span class="sourceLineNo">4625</span>    long seqid = minSeqIdForTheRegion;<a name="line.4625"></a>
+<span class="sourceLineNo">4626</span>    if (LOG.isDebugEnabled()) {<a name="line.4626"></a>
+<span class="sourceLineNo">4627</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4627"></a>
+<span class="sourceLineNo">4628</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4628"></a>
+<span class="sourceLineNo">4629</span>    }<a name="line.4629"></a>
+<span class="sourceLineNo">4630</span><a name="line.4630"></a>
+<span class="sourceLineNo">4631</span>    if (files == null || files.isEmpty()) {<a name="line.4631"></a>
+<span class="sourceLineNo">4632</span>      return minSeqIdForTheRegion;<a name="line.4632"></a>
+<span class="sourceLineNo">4633</span>    }<a name="line.4633"></a>
+<span class="sourceLineNo">4634</span><a name="line.4634"></a>
+<span class="sourceLineNo">4635</span>    for (Path edits: files) {<a name="line.4635"></a>
+<span class="sourceLineNo">4636</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4636"></a>
+<span class="sourceLineNo">4637</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4637"></a>
+<span class="sourceLineNo">4638</span>        continue;<a name="line.4638"></a>
+<span class="sourceLineNo">4639</span>      }<a name="line.4639"></a>
+<span class="sourceLineNo">4640</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4640"></a>
+<span class="sourceLineNo">4641</span><a name="line.4641"></a>
+<span class="sourceLineNo">4642</span>      long maxSeqId;<a name="line.4642"></a>
+<span class="sourceLineNo">4643</span>      String fileName = edits.getName();<a name="line.4643"></a>
+<span class="sourceLineNo">4644</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4644"></a>
+<span class="sourceLineNo">4645</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4645"></a>
+<span class="sourceLineNo">4646</span>        if (LOG.isDebugEnabled()) {<a name="line.4646"></a>
+<span class="sourceLineNo">4647</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4647"></a>
+<span class="sourceLineNo">4648</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4648"></a>
+<span class="sourceLineNo">4649</span>              + ", skipped the whole file, path=" + edits;<a name="line.4649"></a>
+<span class="sourceLineNo">4650</span>          LOG.debug(msg);<a name="line.4650"></a>
+<span class="sourceLineNo">4651</span>        }<a name="line.4651"></a>
+<span class="sourceLineNo">4652</span>        continue;<a name="line.4652"></a>
+<span class="sourceLineNo">4653</span>      }<a name="line.4653"></a>
+<span class="sourceLineNo">4654</span><a name="line.4654"></a>
+<span class="sourceLineNo">4655</span>      try {<a name="line.4655"></a>
+<span class="sourceLineNo">4656</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4656"></a>
+<span class="sourceLineNo">4657</span>        // if seqId is greater<a name="line.4657"></a>
+<span class="sourceLineNo">4658</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4658"></a>
+<span class="sourceLineNo">4659</span>      } catch (IOException e) {<a name="line.4659"></a>
+<span class="sourceLineNo">4660</span>        boolean skipErrors = conf.getBoolean(<a name="line.4660"></a>
+<span class="sourceLineNo">4661</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4661"></a>
+<span class="sourceLineNo">4662</span>            conf.getBoolean(<a name="line.4662"></a>
+<span class="sourceLineNo">4663</span>                "hbase.skip.errors",<a name="line.4663"></a>
+<span class="sourceLineNo">4664</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4664"></a>
+<span class="sourceLineNo">4665</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4665"></a>
+<span class="sourceLineNo">4666</span>          LOG.warn(<a name="line.4666"></a>
+<span class="sourceLineNo">4667</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4667"></a>
+<span class="sourceLineNo">4668</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4668"></a>
+<span class="sourceLineNo">4669</span>        }<a name="line.4669"></a>
+<span class="sourceLineNo">4670</span>        if (skipErrors) {<a name="line.4670"></a>
+<span class="sourceLineNo">4671</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4671"></a>
+<span class="sourceLineNo">4672</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4672"></a>
+<span class="sourceLineNo">4673</span>              + "=true so continuing. Renamed " + edits +<a name="line.4673"></a>
+<span class="sourceLineNo">4674</span>              " as " + p, e);<a name="line.4674"></a>
+<span class="sourceLineNo">4675</span>        } else {<a name="line.4675"></a>
+<span class="sourceLineNo">4676</span>          throw e;<a name="line.4676"></a>
+<span class="sourceLineNo">4677</span>        }<a name="line.4677"></a>
+<span class="sourceLineNo">4678</span>      }<a name="line.4678"></a>
+<span class="sourceLineNo">4679</span>    }<a name="line.4679"></a>
+<span class="sourceLineNo">4680</span>    return seqid;<a name="line.4680"></a>
+<span class="sourceLineNo">4681</span>  }<a name="line.4681"></a>
 <span class="sourceLineNo">4682</span><a name="line.4682"></a>
-<span class="sourceLineNo">4683</span>    status.setStatus("Opening recovered edits");<a name="line.4683"></a>
-<span class="sourceLineNo">4684</span>    WAL.Reader reader = null;<a name="line.4684"></a>
-<span class="sourceLineNo">4685</span>    try {<a name="line.4685"></a>
-<span class="sourceLineNo">4686</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4686"></a>
-<span class="sourceLineNo">4687</span>      long currentEditSeqId = -1;<a name="line.4687"></a>
-<span class="sourceLineNo">4688</span>      long currentReplaySeqId = -1;<a name="line.4688"></a>
-<span class="sourceLineNo">4689</span>      long firstSeqIdInLog = -1;<a name="line.4689"></a>
-<span class="sourceLineNo">4690</span>      long skippedEdits = 0;<a name="line.4690"></a>
-<span class="sourceLineNo">4691</span>      long editsCount = 0;<a name="line.4691"></a>
-<span class="sourceLineNo">4692</span>      long intervalEdits = 0;<a name="line.4692"></a>
-<span class="sourceLineNo">4693</span>      WAL.Entry entry;<a name="line.4693"></a>
-<span class="sourceLineNo">4694</span>      HStore store = null;<a name="line.4694"></a>
-<span class="sourceLineNo">4695</span>      boolean reported_once = false;<a name="line.4695"></a>
-<span class="sourceLineNo">4696</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4696"></a>
-<span class="sourceLineNo">4697</span><a name="line.4697"></a>
-<span class="sourceLineNo">4698</span>      try {<a name="line.4698"></a>
-<span class="sourceLineNo">4699</span>        // How many edits seen before we check elapsed time<a name="line.4699"></a>
-<span class="sourceLineNo">4700</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4700"></a>
-<span class="sourceLineNo">4701</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4701"></a>
-<span class="sourceLineNo">4702</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4702"></a>
-<span class="sourceLineNo">4703</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4703"></a>
-<span class="sourceLineNo">4704</span><a name="line.4704"></a>
-<span class="sourceLineNo">4705</span>        if (coprocessorHost != null) {<a name="line.4705"></a>
-<span class="sourceLineNo">4706</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4706"></a>
-<span class="sourceLineNo">4707</span>        }<a name="line.4707"></a>
-<span class="sourceLineNo">4708</span><a name="line.4708"></a>
-<span class="sourceLineNo">4709</span>        while ((entry = reader.next()) != null) {<a name="line.4709"></a>
-<span class="sourceLineNo">4710</span>          WALKey key = entry.getKey();<a name="line.4710"></a>
-<span class="sourceLineNo">4711</span>          WALEdit val = entry.getEdit();<a name="line.4711"></a>
-<span class="sourceLineNo">4712</span><a name="line.4712"></a>
-<span class="sourceLineNo">4713</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4713"></a>
-<span class="sourceLineNo">4714</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4714"></a>
-<span class="sourceLineNo">4715</span>          }<a name="line.4715"></a>
-<span class="sourceLineNo">4716</span><a name="line.4716"></a>
-<span class="sourceLineNo">4717</span>          if (reporter != null) {<a name="line.4717"></a>
-<span class="sourceLineNo">4718</span>            intervalEdits += val.size();<a name="line.4718"></a>
-<span class="sourceLineNo">4719</span>            if (intervalEdits &gt;= interval) {<a name="line.4719"></a>
-<span class="sourceLineNo">4720</span>              // Number of edits interval reached<a name="line.4720"></a>
-<span class="sourceLineNo">4721</span>              intervalEdits = 0;<a name="line.4721"></a>
-<span class="sourceLineNo">4722</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4722"></a>
-<span class="sourceLineNo">4723</span>              if (lastReport + period &lt;= cur) {<a name="line.4723"></a>
-<span class="sourceLineNo">4724</span>                status.setStatus("Replaying edits..." +<a name="line.4724"></a>
-<span class="sourceLineNo">4725</span>                    " skipped=" + skippedEdits +<a name="line.4725"></a>
-<span class="sourceLineNo">4726</span>                    " edits=" + editsCount);<a name="line.4726"></a>
-<span class="sourceLineNo">4727</span>                // Timeout reached<a name="line.4727"></a>
-<span class="sourceLineNo">4728</span>                if(!reporter.progress()) {<a name="line.4728"></a>
-<span class="sourceLineNo">4729</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4729"></a>
-<span class="sourceLineNo">4730</span>                  LOG.warn(msg);<a name="line.4730"></a>
-<span class="sourceLineNo">4731</span>                  status.abort(msg);<a name="line.4731"></a>
-<span class="sourceLineNo">4732</span>                  throw new IOException(msg);<a name="line.4732"></a>
-<span class="sourceLineNo">4733</span>                }<a name="line.4733"></a>
-<span class="sourceLineNo">4734</span>                reported_once = true;<a name="line.4734"></a>
-<span class="sourceLineNo">4735</span>                lastReport = cur;<a name="line.4735"></a>
-<span class="sourceLineNo">4736</span>              }<a name="line.4736"></a>
-<span class="sourceLineNo">4737</span>            }<a name="line.4737"></a>
-<span class="sourceLineNo">4738</span>          }<a name="line.4738"></a>
-<span class="sourceLineNo">4739</span><a name="line.4739"></a>
-<span class="sourceLineNo">4740</span>          if (firstSeqIdInLog == -1) {<a name="line.4740"></a>
-<span class="sourceLineNo">4741</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4741"></a>
-<span class="sourceLineNo">4742</span>          }<a name="line.4742"></a>
-<span class="sourceLineNo">4743</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4743"></a>
-<span class="sourceLineNo">4744</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4744"></a>
-<span class="sourceLineNo">4745</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4745"></a>
-<span class="sourceLineNo">4746</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4746"></a>
-<span class="sourceLineNo">4747</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4747"></a>
-<span class="sourceLineNo">4748</span>                + "; edit=" + val);<a name="line.4748"></a>
-<span class="sourceLineNo">4749</span>          } else {<a name="line.4749"></a>
-<span class="sourceLineNo">4750</span>            currentEditSeqId = key.getSequenceId();<a name="line.4750"></a>
-<span class="sourceLineNo">4751</span>          }<a name="line.4751"></a>
-<span class="sourceLineNo">4752</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4752"></a>
-<span class="sourceLineNo">4753</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4753"></a>
-<span class="sourceLineNo">4754</span><a name="line.4754"></a>
-<span class="sourceLineNo">4755</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4755"></a>
-<span class="sourceLineNo">4756</span>          // instead of a KeyValue.<a name="line.4756"></a>
-<span class="sourceLineNo">4757</span>          if (coprocessorHost != null) {<a name="line.4757"></a>
-<span class="sourceLineNo">4758</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4758"></a>
-<span class="sourceLineNo">4759</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4759"></a>
-<span class="sourceLineNo">4760</span>              // if bypass this wal entry, ignore it ...<a name="line.4760"></a>
-<span class="sourceLineNo">4761</span>              continue;<a name="line.4761"></a>
-<span class="sourceLineNo">4762</span>            }<a name="line.4762"></a>
-<span class="sourceLineNo">4763</span>          }<a name="line.4763"></a>
-<span class="sourceLineNo">4764</span>          boolean checkRowWithinBoundary = false;<a name="line.4764"></a>
-<span class="sourceLineNo">4765</span>          // Check this edit is for this region.<a name="line.4765"></a>
-<span class="sourceLineNo">4766</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4766"></a>
-<span class="sourceLineNo">4767</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4767"></a>
-<span class="sourceLineNo">4768</span>            checkRowWithinBoundary = true;<a name="line.4768"></a>
-<span class="sourceLineNo">4769</span>          }<a name="line.4769"></a>
+<span class="sourceLineNo">4683</span>  /*<a name="line.4683"></a>
+<span class="sourceLineNo">4684</span>   * @param edits File of recovered edits.<a name="line.4684"></a>
+<span class="sourceLineNo">4685</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4685"></a>
+<span class="sourceLineNo">4686</span>   * must be larger than this to be replayed for each store.<a name="line.4686"></a>
+<span class="sourceLineNo">4687</span>   * @param reporter<a name="line.4687"></a>
+<span class="sourceLineNo">4688</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4688"></a>
+<span class="sourceLineNo">4689</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4689"></a>
+<span class="sourceLineNo">4690</span>   * @throws IOException<a name="line.4690"></a>
+<span class="sourceLineNo">4691</span>   */<a name="line.4691"></a>
+<span class="sourceLineNo">4692</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4692"></a>
+<span class="sourceLineNo">4693</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4693"></a>
+<span class="sourceLineNo">4694</span>    throws IOException {<a name="line.4694"></a>
+<span class="sourceLineNo">4695</span>    String msg = "Replaying edits from " + edits;<a name="line.4695"></a>
+<span class="sourceLineNo">4696</span>    LOG.info(msg);<a name="line.4696"></a>
+<span class="sourceLineNo">4697</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4697"></a>
+<span class="sourceLineNo">4698</span><a name="line.4698"></a>
+<span class="sourceLineNo">4699</span>    status.setStatus("Opening recovered edits");<a name="line.4699"></a>
+<span class="sourceLineNo">4700</span>    WAL.Reader reader = null;<a name="line.4700"></a>
+<span class="sourceLineNo">4701</span>    try {<a name="line.4701"></a>
+<span class="sourceLineNo">4702</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4702"></a>
+<span class="sourceLineNo">4703</span>      long currentEditSeqId = -1;<a name="line.4703"></a>
+<span class="sourceLineNo">4704</span>      long currentReplaySeqId = -1;<a name="line.4704"></a>
+<span class="sourceLineNo">4705</span>      long firstSeqIdInLog = -1;<a name="line.4705"></a>
+<span class="sourceLineNo">4706</span>      long skippedEdits = 0;<a name="line.4706"></a>
+<span class="sourceLineNo">4707</span>      long editsCount = 0;<a name="line.4707"></a>
+<span class="sourceLineNo">4708</span>      long intervalEdits = 0;<a name="line.4708"></a>
+<span class="sourceLineNo">4709</span>      WAL.Entry entry;<a name="line.4709"></a>
+<span class="sourceLineNo">4710</span>      HStore store = null;<a name="line.4710"></a>
+<span class="sourceLineNo">4711</span>      boolean reported_once = false;<a name="line.4711"></a>
+<span class="sourceLineNo">4712</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4712"></a>
+<span class="sourceLineNo">4713</span><a name="line.4713"></a>
+<span class="sourceLineNo">4714</span>      try {<a name="line.4714"></a>
+<span class="sourceLineNo">4715</span>        // How many edits seen before we check elapsed time<a name="line.4715"></a>
+<span class="sourceLineNo">4716</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4716"></a>
+<span class="sourceLineNo">4717</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4717"></a>
+<span class="sourceLineNo">4718</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4718"></a>
+<span class="sourceLineNo">4719</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4719"></a>
+<span class="sourceLineNo">4720</span><a name="line.4720"></a>
+<span class="sourceLineNo">4721</span>        if (coprocessorHost != null) {<a name="line.4721"></a>
+<span class="sourceLineNo">4722</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4722"></a>
+<span class="sourceLineNo">4723</span>        }<a name="line.4723"></a>
+<span class="sourceLineNo">4724</span><a name="line.4724"></a>
+<span class="sourceLineNo">4725</span>        while ((entry = reader.next()) != null) {<a name="line.4725"></a>
+<span class="sourceLineNo">4726</span>          WALKey key = entry.getKey();<a name="line.4726"></a>
+<span class="sourceLineNo">4727</span>          WALEdit val = entry.getEdit();<a name="line.4727"></a>
+<span class="sourceLineNo">4728</span><a name="line.4728"></a>
+<span class="sourceLineNo">4729</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4729"></a>
+<span class="sourceLineNo">4730</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4730"></a>
+<span class="sourceLineNo">4731</span>          }<a name="line.4731"></a>
+<span class="sourceLineNo">4732</span><a name="line.4732"></a>
+<span class="sourceLineNo">4733</span>          if (reporter != null) {<a name="line.4733"></a>
+<span class="sourceLineNo">4734</span>            intervalEdits += val.size();<a name="line.4734"></a>
+<span class="sourceLineNo">4735</span>            if (intervalEdits &gt;= interval) {<a name="line.4735"></a>
+<span class="sourceLineNo">4736</span>              // Number of edits interval reached<a name="line.4736"></a>
+<span class="sourceLineNo">4737</span>              intervalEdits = 0;<a name="line.4737"></a>
+<span class="sourceLineNo">4738</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4738"></a>
+<span class="sourceLineNo">4739</span>              if (lastReport + period &lt;= cur) {<a name="line.4739"></a>
+<span class="sourceLineNo">4740</span>                status.setStatus("Replaying edits..." +<a name="line.4740"></a>
+<span class="sourceLineNo">4741</span>                    " skipped=" + skippedEdits +<a name="line.4741"></a>
+<span class="sourceLineNo">4742</span>                    " edits=" + editsCount);<a name="line.4742"></a>
+<span class="sourceLineNo">4743</span>                // Timeout reached<a name="line.4743"></a>
+<span class="sourceLineNo">4744</span>                if(!reporter.progress()) {<a name="line.4744"></a>
+<span class="sourceLineNo">4745</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4745"></a>
+<span class="sourceLineNo">4746</span>                  LOG.warn(msg);<a name="line.4746"></a>
+<span class="sourceLineNo">4747</span>                  status.abort(msg);<a name="line.4747"></a>
+<span class="sourceLineNo">4748</span>                  throw new IOException(msg);<a name="line.4748"></a>
+<span class="sourceLineNo">4749</span>                }<a name="line.4749"></a>
+<span class="sourceLineNo">4750</span>                reported_once = true;<a name="line.4750"></a>
+<span class="sourceLineNo">4751</span>                lastReport = cur;<a name="line.4751"></a>
+<span class="sourceLineNo">4752</span>              }<a name="line.4752"></a>
+<span class="sourceLineNo">4753</span>            }<a name="line.4753"></a>
+<span class="sourceLineNo">4754</span>          }<a name="line.4754"></a>
+<span class="sourceLineNo">4755</span><a name="line.4755"></a>
+<span class="sourceLineNo">4756</span>          if (firstSeqIdInLog == -1) {<a name="line.4756"></a>
+<span class="sourceLineNo">4757</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4757"></a>
+<span class="sourceLineNo">4758</span>          }<a name="line.4758"></a>
+<span class="sourceLineNo">4759</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4759"></a>
+<span class="sourceLineNo">4760</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4760"></a>
+<span class="sourceLineNo">4761</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4761"></a>
+<span class="sourceLineNo">4762</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4762"></a>
+<span class="sourceLineNo">4763</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4763"></a>
+<span class="sourceLineNo">4764</span>                + "; edit=" + val);<a name="line.4764"></a>
+<span class="sourceLineNo">4765</span>          } else {<a name="line.4765"></a>
+<span class="sourceLineNo">4766</span>            currentEditSeqId = key.getSequenceId();<a name="line.4766"></a>
+<span class="sourceLineNo">4767</span>          }<a name="line.4767"></a>
+<span class="sourceLineNo">4768</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4768"></a>
+<span class="sourceLineNo">4769</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4769"></a>
 <span class="sourceLineNo">4770</span><a name="line.4770"></a>
-<span class="sourceLineNo">4771</span>          boolean flush = false;<a name="line.4771"></a>
-<span class="sourceLineNo">4772</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4772"></a>
-<span class="sourceLineNo">4773</span>          for (Cell cell: val.getCells()) {<a name="line.4773"></a>
-<span class="sourceLineNo">4774</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4774"></a>
-<span class="sourceLineNo">4775</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4775"></a>
-<span class="sourceLineNo">4776</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4776"></a>
-<span class="sourceLineNo">4777</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4777"></a>
-<span class="sourceLineNo">4778</span>              if (!checkRowWithinBoundary) {<a name="line.4778"></a>
-<span class="sourceLineNo">4779</span>                //this is a special edit, we should handle it<a name="line.4779"></a>
-<span class="sourceLineNo">4780</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4780"></a>
-<span class="sourceLineNo">4781</span>                if (compaction != null) {<a name="line.4781"></a>
-<span class="sourceLineNo">4782</span>                  //replay the compaction<a name="line.4782"></a>
-<span class="sourceLineNo">4783</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4783"></a>
-<span class="sourceLineNo">4784</span>                }<a name="line.4784"></a>
-<span class="sourceLineNo">4785</span>              }<a name="line.4785"></a>
-<span class="sourceLineNo">4786</span>              skippedEdits++;<a name="line.4786"></a>
-<span class="sourceLineNo">4787</span>              continue;<a name="line.4787"></a>
-<span class="sourceLineNo">4788</span>            }<a name="line.4788"></a>
-<span class="sourceLineNo">4789</span>            // Figure which store the edit is meant for.<a name="line.4789"></a>
-<span class="sourceLineNo">4790</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4790"></a>
-<span class="sourceLineNo">4791</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4791"></a>
-<span class="sourceLineNo">4792</span>              store = getStore(cell);<a name="line.4792"></a>
-<span class="sourceLineNo">4793</span>            }<a name="line.4793"></a>
-<span class="sourceLineNo">4794</span>            if (store == null) {<a name="line.4794"></a>
-<span class="sourceLineNo">4795</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4795"></a>
-<span class="sourceLineNo">4796</span>              // crash and redeploy?<a name="line.4796"></a>
-<span class="sourceLineNo">4797</span>              LOG.warn("No family for " + cell);<a name="line.4797"></a>
-<span class="sourceLineNo">4798</span>              skippedEdits++;<a name="line.4798"></a>
-<span class="sourceLineNo">4799</span>              continue;<a name="line.4799"></a>
-<span class="sourceLineNo">4800</span>            }<a name="line.4800"></a>
-<span class="sourceLineNo">4801</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4801"></a>
-<span class="sourceLineNo">4802</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4802"></a>
-<span class="sourceLineNo">4803</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4803"></a>
-<span class="sourceLineNo">4804</span>              skippedEdits++;<a name="line.4804"></a>
-<span class="sourceLineNo">4805</span>              continue;<a name="line.4805"></a>
-<span class="sourceLineNo">4806</span>            }<a name="line.4806"></a>
-<span class="sourceLineNo">4807</span>            // Now, figure if we should skip this edit.<a name="line.4807"></a>
-<span class="sourceLineNo">4808</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4808"></a>
-<span class="sourceLineNo">4809</span>                .getName())) {<a name="line.4809"></a>
-<span class="sourceLineNo">4810</span>              skippedEdits++;<a name="line.4810"></a>
-<span class="sourceLineNo">4811</span>              continue;<a name="line.4811"></a>
-<span class="sourceLineNo">4812</span>            }<a name="line.4812"></a>
-<span class="sourceLineNo">4813</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4813"></a>
-<span class="sourceLineNo">4814</span><a name="line.4814"></a>
-<span class="sourceLineNo">4815</span>            restoreEdit(store, cell, memStoreSizing);<a name="line.4815"></a>
-<span class="sourceLineNo">4816</span>            editsCount++;<a name="line.4816"></a>
-<span class="sourceLineNo">4817</span>          }<a name="line.4817"></a>
-<span class="sourceLineNo">4818</span>          MemStoreSize mss = memStoreSizing.getMemStoreSize();<a name="line.4818"></a>
-<span class="sourceLineNo">4819</span>          incMemStoreSize(mss);<a name="line.4819"></a>
-<span class="sourceLineNo">4820</span>          flush = isFlushSize(this.memStoreSizing.getMemStoreSize());<a name="line.4820"></a>
-<span class="sourceLineNo">4821</span>          if (flush) {<a name="line.4821"></a>
-<span class="sourceLineNo">4822</span>            internalFlushcache(null, currentEditSeqId, stores.values(), status, false,<a name="line.4822"></a>
-<span class="sourceLineNo">4823</span>              FlushLifeCycleTracker.DUMMY);<a name="line.4823"></a>
-<span class="sourceLineNo">4824</span>          }<a name="line.4824"></a>
-<span class="sourceLineNo">4825</span><a name="line.4825"></a>
-<span class="sourceLineNo">4826</span>          if (coprocessorHost != null) {<a name="line.4826"></a>
-<span class="sourceLineNo">4827</span>            coprocessorHost.postWALRestore(this.getRegionInfo(), key, val);<a name="line.4827"></a>
-<span class="sourceLineNo">4828</span>          }<a name="line.4828"></a>
-<span class="sourceLineNo">4829</span>        }<a name="line.4829"></a>
+<span class="sourceLineNo">4771</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4771"></a>
+<span class="sourceLineNo">4772</span>          // instead of a KeyValue.<a name="line.4772"></a>
+<span class="sourceLineNo">4773</span>          if (coprocessorHost != null) {<a name="line.4773"></a>
+<span class="sourceLineNo">4774</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4774"></a>
+<span class="sourceLineNo">4775</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4775"></a>
+<span class="sourceLineNo">4776</span>              // if bypass this wal entry, ignore it ...<a name="line.4776"></a>
+<span class="sourceLineNo">4777</span>              continue;<a name="line.4777"></a>
+<span class="sourceLineNo">4778</span>            }<a name="line.4778"></a>
+<span class="sourceLineNo">4779</span>          }<a name="line.4779"></a>
+<span class="sourceLineNo">4780</span>          boolean checkRowWithinBoundary = false;<a name="line.4780"></a>
+<span class="sourceLineNo">4781</span>          // Check this edit is for this region.<a name="line.4781"></a>
+<span class="sourceLineNo">4782</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4782"></a>
+<span class="sourceLineNo">4783</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4783"></a>
+<span class="sourceLineNo">4784</span>            checkRowWithinBoundary = true;<a name="line.4784"></a>
+<span class="sourceLineNo">4785</span>          }<a name="line.4785"></a>
+<span class="sourceLineNo">4786</span><a name="line.4786"></a>
+<span class="sourceLineNo">4787</span>          boolean flush = false;<a name="line.4787"></a>
+<span class="sourceLineNo">4788</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4788"></a>
+<span class="sourceLineNo">4789</span>          for (Cell cell: val.getCells()) {<a name="line.4789"></a>
+<span class="sourceLineNo">4790</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4790"></a>
+<span class="sourceLineNo">4791</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4791"></a>
+<span class="sourceLineNo">4792</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4792"></a>
+<span class="sourceLineNo">4793</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4793"></a>
+<span class="sourceLineNo">4794</span>              if (!checkRowWithinBoundary) {<a name="line.4794"></a>
+<span class="sourceLineNo">4795</span>                //this is a special edit, we should handle it<a name="line.4795"></a>
+<span class="sourceLineNo">4796</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4796"></a>
+<span class="sourceLineNo">4797</span>                if (compaction != null) {<a name="line.4797"></a>
+<span class="sourceLineNo">4798</span>                  //replay the compaction<a name="line.4798"></a>
+<span class="sourceLineNo">4799</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4799"></a>
+<span class="sourceLineNo">4800</span>                }<a name="line.4800"></a>
+<span class="sourceLineNo">4801</span>              }<a name="line.4801"></a>
+<span class="sourceLineNo">4802</span>              skippedEdits++;<a name="line.4802"></a>
+<span class="sourceLineNo">4803</span>              continue;<a name="line.4803"></a>
+<span class="sourceLineNo">4804</span>            }<a name="line.4804"></a>
+<span class="sourceLineNo">4805</span>            // Figure which store the edit is meant for.<a name="line.4805"></a>
+<span class="sourceLineNo">4806</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4806"></a>
+<span class="sourceLineNo">4807</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4807"></a>
+<span class="sourceLineNo">4808</span>              store = getStore(cell);<a name="line.4808"></a>
+<span class="sourceLineNo">4809</span>            }<a name="line.4809"></a>
+<span class="sourceLineNo">4810</span>            if (store == null) {<a name="line.4810"></a>
+<span class="sourceLineNo">4811</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4811"></a>
+<span class="sourceLineNo">4812</span>              // crash and redeploy?<a name="line.4812"></a>
+<span class="sourceLineNo">4813</span>              LOG.warn("No family for " + cell);<a name="line.4813"></a>
+<span class="sourceLineNo">4814</span>              skippedEdits++;<a name="line.4814"></a>
+<span class="sourceLineNo">4815</span>              continue;<a name="line.4815"></a>
+<span class="sourceLineNo">4816</span>            }<a name="line.4816"></a>
+<span class="sourceLineNo">4817</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4817"></a>
+<span class="sourceLineNo">4818</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4818"></a>
+<span class="sourceLineNo">4819</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4819"></a>
+<span class="sourceLineNo">4820</span>              skippedEdits++;<a name="line.4820"></a>
+<span class="sourceLineNo">4821</span>              continue;<a name="line.4821"></a>
+<span class="sourceLineNo">4822</span>            }<a name="line.4822"></a>
+<span class="sourceLineNo">4823</span>            // Now, figure if we should skip this edit.<a name="line.4823"></a>
+<span class="sourceLineNo">4824</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4824"></a>
+<span class="sourceLineNo">4825</span>                .getName())) {<a name="line.4825"></a>
+<span class="sourceLineNo">4826</span>              skippedEdits++;<a name="line.4826"></a>
+<span class="sourceLineNo">4827</span>              continue;<a name="line.4827"></a>
+<span class="sourceLineNo">4828</span>            }<a name="line.4828"></a>
+<span class="sourceLineNo">4829</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4829"></a>
 <span class="sourceLineNo">4830</span><a name="line.4830"></a>
-<span class="sourceLineNo">4831</span>        if (coprocessorHost != null) {<a name="line.4831"></a>
-<span class="sourceLineNo">4832</span>          coprocessorHost.postReplayWALs(this.getRegionInfo(), edits);<a name="line.4832"></a>
-<span class="sourceLineNo">4833</span>        }<a name="line.4833"></a>
-<span class="sourceLineNo">4834</span>      } catch (EOFException eof) {<a name="line.4834"></a>
-<span class="sourceLineNo">4835</span>        Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4835"></a>
-<span class="sourceLineNo">4836</span>        msg = "EnLongAddered EOF. Most likely due to Master failure during " +<a name="line.4836"></a>
-<span class="sourceLineNo">4837</span>            "wal splitting, so we have this data in another edit.  " +<a name="line.4837"></a>
-<span class="sourceLineNo">4838</span>            "Continuing, but renaming " + edits + " as " + p;<a name="line.4838"></a>
-<span class="sourceLineNo">4839</span>        LOG.warn(msg, eof);<a name="line.4839"></a>
-<span class="sourceLineNo">4840</span>        status.abort(msg);<a name="line.4840"></a>
-<span class="sourceLineNo">4841</span>      } catch (IOException ioe) {<a name="line.4841"></a>
-<span class="sourceLineNo">4842</span>        // If the IOE resulted from bad file format,<a name="line.4842"></a>
-<span class="sourceLineNo">4843</span>        // then this problem is idempotent and retrying won't help<a name="line.4843"></a>
-<span class="sourceLineNo">4844</span>        if (ioe.getCause() instanceof ParseException) {<a name="line.4844"></a>
-<span class="sourceLineNo">4845</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4845"></a>
-<span class="sourceLineNo">4846</span>          msg = "File corruption enLongAddered!  " +<a name="line.4846"></a>
-<span class="sourceLineNo">4847</span>              "Continuing, but renaming " + edits + " as " + p;<a name="line.4847"></a>
-<span class="sourceLineNo">4848</span>          LOG.warn(msg, ioe);<a name="line.4848"></a>
-<span class="sourceLineNo">4849</span>          status.setStatus(msg);<a name="line.4849"></a>
-<span class="sourceLineNo">4850</span>        } else {<a name="line.4850"></a>
-<span class="sourceLineNo">4851</span>          status.abort(StringUtils.stringifyException(ioe));<a name="line.4851"></a>
-<span class="sourceLineNo">4852</span>          // other IO errors may be transient (bad network connection,<a name="line.4852"></a>
-<span class="sourceLineNo">4853</span>          // checksum exception on one datanode, etc).  throw &amp; retry<a name="line.4853"></a>
-<span class="sourceLineNo">4854</span>          throw ioe;<a name="line.4854"></a>
-<span class="sourceLineNo">4855</span>        }<a name="line.4855"></a>
-<span class="sourceLineNo">4856</span>      }<a name="line.4856"></a>
-<span class="sourceLineNo">4857</span>      if (reporter != null &amp;&amp; !reported_once) {<a name="line.4857"></a>
-<span class="sourceLineNo">4858</span>        reporter.progress();<a name="line.4858"></a>
-<span class="sourceLineNo">4859</span>      }<a name="line.4859"></a>
-<span class="sourceLineNo">4860</span>      msg = "Applied " + editsCount + ", skipped " + skippedEdits +<a name="line.4860"></a>
-<span class="sourceLineNo">4861</span>        ", firstSequenceIdInLog=" + firstSeqIdInLog +<a name="line.4861"></a>
-<span class="sourceLineNo">4862</span>        ", maxSequenceIdInLog=" + currentEditSeqId + ", path=" + edits;<a name="line.4862"></a>
-<span class="sourceLineNo">4863</span>      status.markComplete(msg);<a name="line.4863"></a>
-<span class="sourceLineNo">4864</span>      LOG.debug(msg);<a name="line.4864"></a>
-<span class="sourceLineNo">4865</span>      return currentEditSeqId;<a name="line.4865"></a>
-<span class="sourceLineNo">4866</span>    } finally {<a name="line.4866"></a>
-<span class="sourceLineNo">4867</span>      status.cleanup();<a name="line.4867"></a>
-<span class="sourceLineNo">4868</span>      if (reader != null) {<a name="line.4868"></a>
-<span class="sourceLineNo">4869</span>         reader.close();<a name="line.4869"></a>
-<span class="sourceLineNo">4870</span>      }<a name="line.4870"></a>
-<span class="sourceLineNo">4871</span>    }<a name="line.4871"></a>
-<span class="sourceLineNo">4872</span>  }<a name="line.4872"></a>
-<span class="sourceLineNo">4873</span><a name="line.4873"></a>
-<span class="sourceLineNo">4874</span>  /**<a name="line.4874"></a>
-<span class="sourceLineNo">4875</span>   * Call to complete a compaction. Its for the case where we find in the WAL a compaction<a name="line.4875"></a>
-<span class="sourceLineNo">4876</span>   * that was not finished.  We could find one recovering a WAL after a regionserver crash.<a name="line.4876"></a>
-<span class="sourceLineNo">4877</span>   * See HBASE-2331.<a name="line.4877"></a>
-<span class="sourceLineNo">4878</span>   */<a name="line.4878"></a>
-<span class="sourceLineNo">4879</span>  void replayWALCompactionMarker(CompactionDescriptor compaction, boolean pickCompactionFiles,<a name="line.4879"></a>
-<span class="sourceLineNo">4880</span>      boolean removeFiles, long replaySeqId)<a name="line.4880"></a>
-<span class="sourceLineNo">4881</span>      throws IOException {<a name="line.4881"></a>
-<span class="sourceLineNo">4882</span>    try {<a name="line.4882"></a>
-<span class="sourceLineNo">4883</span>      checkTargetRegion(compaction.getEncodedRegionName().toByteArray(),<a name="line.4883"></a>
-<span class="sourceLineNo">4884</span>        "Compaction marker from WAL ", compaction);<a name="line.4884"></a>
-<span class="sourceLineNo">4885</span>    } catch (WrongRegionException wre) {<a name="line.4885"></a>
-<span class="sourceLineNo">4886</span>      if (RegionReplicaUtil.isDefaultReplica(this.getRegionInfo())) {<a name="line.4886"></a>
-<span class="sourceLineNo">4887</span>        // skip the compaction marker since it is not for this region<a name="line.4887"></a>
-<span class="sourceLineNo">4888</span>        return;<a name="line.4888"></a>
-<span class="sourceLineNo">4889</span>      }<a name="line.4889"></a>
-<span class="sourceLineNo">4890</span>      throw wre;<a name="line.4890"></a>
-<span class="sourceLineNo">4891</span>    }<a name="line.4891"></a>
-<span class="sourceLineNo">4892</span><a name="line.4892"></a>
-<span class="sourceLineNo">4893</span>    synchronized (writestate) {<a name="line.4893"></a>
-<span class="sourceLineNo">4894</span>      if (replaySeqId &lt; lastReplayedOpenRegionSeqId) {<a name="line.4894"></a>
-<span class="sourceLineNo">4895</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4895"></a>
-<span class="sourceLineNo">4896</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4896"></a>
-<span class="sourceLineNo">4897</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4897"></a>
-<span class="sourceLineNo">4898</span>            + "lastReplayedOpenRegionSeqId of " + lastReplayedOpenRegionSeqId);<a name="line.4898"></a>
-<span class="sourceLineNo">4899</span>        return;<a name="line.4899"></a>
-<span class="sourceLineNo">4900</span>      }<a name="line.4900"></a>
-<span class="sourceLineNo">4901</span>      if (replaySeqId &lt; lastReplayedCompactionSeqId) {<a name="line.4901"></a>
-<span class="sourceLineNo">4902</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4902"></a>
-<span class="sourceLineNo">4903</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4903"></a>
-<span class="sourceLineNo">4904</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4904"></a>
-<span class="sourceLineNo">4905</span>            + "lastReplayedCompactionSeqId of " + lastReplayedCompactionSeqId);<a name="line.4905"></a>
-<span class="sourceLineNo">4906</span>        return;<a name="line.4906"></a>
-<span class="sourceLineNo">4907</span>      } else {<a name="line.4907"></a>
-<span class="sourceLineNo">4908</span>        lastReplayedCompactionSeqId = replaySeqId;<a name="line.4908"></a>
-<span class="sourceLineNo">

<TRUNCATED>

[02/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 dcccde1..cf6df5f 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, decorateRegionConfiguration, 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, getDataIn
 MemoryWithoutWAL, 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, getRegionWALFileSystem, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWalFileSystem, getW
 ALRegionDir, 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, r
 eplayWALFlushCommitMarker, replayWALFlushMarker, replayWALFlushStartMarker, replayWALRegionEventMarker, 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>
+<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamily, checkReadOnly, checkReadsEnabled, checkResources, checkRow, checkSplit, checkTimestamps, clearSplit, close, close, closeRegionOperation, closeRegionOperation, compact, compact, compact, compactStore, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decorateRegionConfiguration, 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, getDataInMemoryWithoutWA
 L, 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, getRegionWALFileSystem, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWalFileSystem, getWALRegionDir, ge
 tWriteRequestsCount, 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, replayWALFlushCo
 mmitMarker, replayWALFlushMarker, replayWALFlushStartMarker, replayWALRegionEventMarker, 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/fa850293/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 828caee..c3b8ca6 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, decorateRegionConfiguration, 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, getDataIn
 MemoryWithoutWAL, 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, getRegionWALFileSystem, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWalFileSystem, getW
 ALRegionDir, 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, replayWALFlushCommit
 Marker, replayWALFlushMarker, replayWALFlushStartMarker, replayWALRegionEventMarker, 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, writeRegionOpenMarker</code></li>
+<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamily, checkReadOnly, checkReadsEnabled, checkResources, checkRow, checkSplit, checkTimestamps, clearSplit, close, close, closeRegionOperation, closeRegionOperation, compact, compact, compact, compactStore, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decorateRegionConfiguration, 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, getDataInMemoryWithoutWA
 L, 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, getRegionWALFileSystem, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWalFileSystem, getWALRegionDir, ge
 tWriteRequestsCount, 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, replayW
 ALFlushMarker, replayWALFlushStartMarker, replayWALRegionEventMarker, 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, 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/fa850293/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 f2000c8..5965481 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, decorateRegionConfiguration, 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, getDataIn
 MemoryWithoutWAL, 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, getRegionWALFileSystem, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWalFileSystem, getW
 ALRegionDir, 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, 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, writeRegionOpenMarker</code></li>
+<code>addRegionToSnapshot, append, append, areWritesEnabled, batchMutate, batchMutate, batchMutate, batchMutate, batchReplay, blockUpdates, bulkLoadHFiles, bulkLoadHFiles, checkAndMutate, checkAndRowMutate, checkFamily, checkReadOnly, checkReadsEnabled, checkResources, checkRow, checkSplit, checkTimestamps, clearSplit, close, close, closeRegionOperation, closeRegionOperation, compact, compact, compact, compactStore, compactStores, computeHDFSBlocksDistribution, computeHDFSBlocksDistribution, createHRegion, createHRegion, decorateRegionConfiguration, 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, getDataInMemoryWithoutWA
 L, 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, getRegionWALFileSystem, getReplicationScope, getRowLock, getRowLock, getRowLockInternal, getScanner, getScanner, getSmallestReadPoint, getSplitPolicy, getStore, getStoreFileList, getStoreFileOpenAndCloseThreadPool, getStoreOpenAndCloseThreadPool, getStores, getTableDescriptor, getWAL, getWalFileSystem, getWALRegionDir, ge
 tWriteRequestsCount, 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, replayWALFlush
 Marker, replayWALFlushStartMarker, replayWALRegionEventMarker, 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, 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/fa850293/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 86cc984..c8fd06f 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -694,11 +694,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/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCacheOnWriteInSchema.CacheOnWriteType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestAtomicOperation.TestStep</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.Metric.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionServerReadRequestMetrics.Metric</span></a></li>
 <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/TestRegionServerReadRequestMetrics.Metric.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionServerReadRequestMetrics.Metric</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 def2a33..e23761b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
@@ -254,8 +254,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.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestLoadAndVerify.Counters</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Verify.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Verify.Counts</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Generator.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Generator.Counts</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Verify.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Verify.Counts</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestWithCellVisibilityLoadAndVerify.Counters</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 b21ae88..4d091e3 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -141,9 +141,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.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>
 <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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/testdevapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/overview-tree.html b/testdevapidocs/overview-tree.html
index e0bd538..c7e74f2 100644
--- a/testdevapidocs/overview-tree.html
+++ b/testdevapidocs/overview-tree.html
@@ -3005,6 +3005,7 @@
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestIntegrationTestBase.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestIntegrationTestBase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInterfaceAlign.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestInterfaceAlign</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestIntraRowPagination.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestIntraRowPagination</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestInvalidMutationDurabilityException</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/TestInvocationRecordFilter.html" title="class in org.apache.hadoop.hbase.filter"><span class="typeNameLink">TestInvocationRecordFilter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestIOFencing.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestIOFencing</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/TestIPCUtil.html" title="class in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">TestIPCUtil</span></a></li>
@@ -3824,6 +3825,9 @@
 <li type="circle">org.apache.hadoop.hbase.mapred.<a href="org/apache/hadoop/hbase/mapred/TestTableMapReduceUtil.html" title="class in org.apache.hadoop.hbase.mapred"><span class="typeNameLink">TestTableMapReduceUtil</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableMapReduceUtil.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableMapReduceUtil</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestTableName.Names.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestTableName.Names</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestTableOperationException</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor</span></a> (implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.hadoop.hbase.coprocessor.RegionObserver)</li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestTableOperationException.ThrowIOExceptionCoprocessor</span></a> (implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.hadoop.hbase.coprocessor.RegionObserver)</li>
 <li type="circle">org.apache.hadoop.hbase.mapred.<a href="org/apache/hadoop/hbase/mapred/TestTableOutputFormatConnectionExhaust.html" title="class in org.apache.hadoop.hbase.mapred"><span class="typeNameLink">TestTableOutputFormatConnectionExhaust</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/TestTablePermissions.html" title="class in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">TestTablePermissions</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/TestTableQuotaViolationStore.html" title="class in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">TestTableQuotaViolationStore</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/testdevapidocs/serialized-form.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/serialized-form.html b/testdevapidocs/serialized-form.html
index b362dad..1b4b612 100644
--- a/testdevapidocs/serialized-form.html
+++ b/testdevapidocs/serialized-form.html
@@ -1459,6 +1459,11 @@
 <li class="blockList">
 <h2 title="Package">Package&nbsp;org.apache.hadoop.hbase.regionserver</h2>
 <ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.regionserver.InvalidMutationDurabilityException">
+<!--   -->
+</a>
+<h3>Class org.apache.hadoop.hbase.regionserver.InvalidMutationDurabilityException extends org.apache.hadoop.hbase.DoNotRetryIOException implements Serializable</h3>
+</li>
 <li class="blockList"><a name="org.apache.hadoop.hbase.regionserver.LeaseException">
 <!--   -->
 </a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html
new file mode 100644
index 0000000..7f85096
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html
@@ -0,0 +1,228 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> *<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
+<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
+<span class="sourceLineNo">012</span> *<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
+<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
+<span class="sourceLineNo">018</span> */<a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.client;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.HConstants;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.TableName;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.regionserver.InvalidMutationDurabilityException;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.junit.AfterClass;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.junit.BeforeClass;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.junit.ClassRule;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.junit.Test;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.junit.experimental.categories.Category;<a name="line.33"></a>
+<span class="sourceLineNo">034</span><a name="line.34"></a>
+<span class="sourceLineNo">035</span>@Category({ MediumTests.class, ClientTests.class })<a name="line.35"></a>
+<span class="sourceLineNo">036</span>public class TestInvalidMutationDurabilityException {<a name="line.36"></a>
+<span class="sourceLineNo">037</span><a name="line.37"></a>
+<span class="sourceLineNo">038</span>  @ClassRule<a name="line.38"></a>
+<span class="sourceLineNo">039</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.39"></a>
+<span class="sourceLineNo">040</span>      HBaseClassTestRule.forClass(TestInvalidMutationDurabilityException.class);<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>  private static TableName TABLE_NOT_REPLICATE = TableName.valueOf("TableNotReplicate");<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span>  private static TableName TABLE_NEED_REPLICATE = TableName.valueOf("TableNeedReplicate");<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>  private static byte[] CF = Bytes.toBytes("cf");<a name="line.48"></a>
+<span class="sourceLineNo">049</span><a name="line.49"></a>
+<span class="sourceLineNo">050</span>  private static byte[] CQ = Bytes.toBytes("cq");<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>  private static Table tableNotReplicate;<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>  private static Table tableNeedReplicate;<a name="line.54"></a>
+<span class="sourceLineNo">055</span><a name="line.55"></a>
+<span class="sourceLineNo">056</span>  @BeforeClass<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  public static void setUp() throws Exception {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    UTIL.startMiniCluster();<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    UTIL.getAdmin().createTable(TableDescriptorBuilder.newBuilder(TABLE_NOT_REPLICATE)<a name="line.59"></a>
+<span class="sourceLineNo">060</span>        .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(CF).build()).build());<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    UTIL.getAdmin().createTable(TableDescriptorBuilder.newBuilder(TABLE_NEED_REPLICATE)<a name="line.61"></a>
+<span class="sourceLineNo">062</span>        .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(CF)<a name="line.62"></a>
+<span class="sourceLineNo">063</span>            .setScope(HConstants.REPLICATION_SCOPE_GLOBAL).build()).build());<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    tableNotReplicate = UTIL.getConnection().getTable(TABLE_NOT_REPLICATE);<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    tableNeedReplicate = UTIL.getConnection().getTable(TABLE_NEED_REPLICATE);<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>  @AfterClass<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  public static void tearDown() throws Exception {<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    UTIL.getAdmin().disableTable(TABLE_NOT_REPLICATE);<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    UTIL.getAdmin().disableTable(TABLE_NEED_REPLICATE);<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    UTIL.getAdmin().deleteTable(TABLE_NOT_REPLICATE);<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    UTIL.getAdmin().deleteTable(TABLE_NEED_REPLICATE);<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    UTIL.shutdownMiniCluster();<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>  private Put newPutWithSkipWAL() {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    Put put = new Put(Bytes.toBytes("row"));<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    put.addColumn(CF, CQ, Bytes.toBytes("value"));<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    put.setDurability(Durability.SKIP_WAL);<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    return put;<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>  @Test<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  public void testPutToTableNotReplicate() throws Exception {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    tableNotReplicate.put(newPutWithSkipWAL());<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>  @Test(expected = InvalidMutationDurabilityException.class)<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  public void testPutToTableNeedReplicate() throws Exception {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    tableNeedReplicate.put(newPutWithSkipWAL());<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>  private Delete newDeleteWithSkipWAL() {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    Delete delete = new Delete(Bytes.toBytes("row"));<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    delete.addColumn(CF, CQ);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    delete.setDurability(Durability.SKIP_WAL);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    return delete;<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>  @Test<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  public void testDeleteToTableNotReplicate() throws Exception {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    tableNotReplicate.delete(newDeleteWithSkipWAL());<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>  @Test(expected = InvalidMutationDurabilityException.class)<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  public void testDeleteToTableNeedReplicate() throws Exception {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    tableNeedReplicate.delete(newDeleteWithSkipWAL());<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>  private Append newAppendWithSkipWAL() {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    Append append = new Append(Bytes.toBytes("row"));<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    append.addColumn(CF, CQ, Bytes.toBytes("value"));<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    append.setDurability(Durability.SKIP_WAL);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    return append;<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>  @Test<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  public void testAppendToTableNotReplicate() throws Exception {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    tableNotReplicate.append(newAppendWithSkipWAL());<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>  @Test(expected = InvalidMutationDurabilityException.class)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  public void testAppendToTableNeedReplicate() throws Exception {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    tableNeedReplicate.append(newAppendWithSkipWAL());<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>  private Increment newIncrementWithSkipWAL() {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    Increment increment = new Increment(Bytes.toBytes("row"));<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    increment.addColumn(CF, CQ, 1);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    increment.setDurability(Durability.SKIP_WAL);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    return increment;<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>  @Test<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  public void testIncrementToTableNotReplicate() throws Exception {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    tableNotReplicate.increment(newIncrementWithSkipWAL());<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>  @Test(expected = InvalidMutationDurabilityException.class)<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  public void testIncrementToTableNeedReplicate() throws Exception {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    tableNeedReplicate.increment(newIncrementWithSkipWAL());<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>  @Test<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  public void testCheckWithMutateToTableNotReplicate() throws Exception {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    tableNotReplicate.checkAndMutate(Bytes.toBytes("row"), CF).qualifier(CQ).ifNotExists()<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        .thenPut(newPutWithSkipWAL());<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>  @Test(expected = InvalidMutationDurabilityException.class)<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public void testCheckWithMutateToTableNeedReplicate() throws Exception {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    tableNeedReplicate.checkAndMutate(Bytes.toBytes("row"), CF).qualifier(CQ).ifNotExists()<a name="line.153"></a>
+<span class="sourceLineNo">154</span>        .thenPut(newPutWithSkipWAL());<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>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html
new file mode 100644
index 0000000..0f6bfca
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html
@@ -0,0 +1,294 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.client;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import java.io.IOException;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.util.List;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.Optional;<a name="line.22"></a>
+<span class="sourceLineNo">023</span><a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.Cell;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.HConstants;<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.coprocessor.ObserverContext;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessor;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.wal.WALEdit;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.junit.AfterClass;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.junit.BeforeClass;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.junit.ClassRule;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.junit.Test;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.junit.experimental.categories.Category;<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>@Category({MediumTests.class, ClientTests.class})<a name="line.44"></a>
+<span class="sourceLineNo">045</span>public class TestTableOperationException {<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>  @ClassRule<a name="line.47"></a>
+<span class="sourceLineNo">048</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.48"></a>
+<span class="sourceLineNo">049</span>      HBaseClassTestRule.forClass(TestTableOperationException.class);<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.51"></a>
+<span class="sourceLineNo">052</span><a name="line.52"></a>
+<span class="sourceLineNo">053</span>  private static TableName TABLE_DONOT_RETRY = TableName.valueOf("TableDoNotRetry");<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>  private static TableName TABLE_RETRY = TableName.valueOf("TableRetry");<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  private static Table tableDoNotRetry;<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  private static Table tableRetry;<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  private static byte[] CF = Bytes.toBytes("cf");<a name="line.61"></a>
+<span class="sourceLineNo">062</span><a name="line.62"></a>
+<span class="sourceLineNo">063</span>  private static byte[] CQ = Bytes.toBytes("cq");<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  @BeforeClass<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  public static void setUp() throws Exception {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    UTIL.getConfiguration().setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 2);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    UTIL.startMiniCluster();<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    UTIL.getAdmin().createTable(TableDescriptorBuilder.newBuilder(TABLE_DONOT_RETRY)<a name="line.69"></a>
+<span class="sourceLineNo">070</span>        .setCoprocessor(ThrowDoNotRetryIOExceptionCoprocessor.class.getName())<a name="line.70"></a>
+<span class="sourceLineNo">071</span>        .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(CF).build()).build());<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    UTIL.getAdmin().createTable(TableDescriptorBuilder.newBuilder(TABLE_RETRY)<a name="line.72"></a>
+<span class="sourceLineNo">073</span>        .setCoprocessor(ThrowIOExceptionCoprocessor.class.getName())<a name="line.73"></a>
+<span class="sourceLineNo">074</span>        .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(CF).build()).build());<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    tableDoNotRetry = UTIL.getConnection().getTable(TABLE_DONOT_RETRY);<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    tableRetry = UTIL.getConnection().getTable(TABLE_RETRY);<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>  @AfterClass<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  public static void tearDown() throws Exception {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    UTIL.getAdmin().disableTable(TABLE_DONOT_RETRY);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    UTIL.getAdmin().disableTable(TABLE_RETRY);<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    UTIL.getAdmin().deleteTable(TABLE_DONOT_RETRY);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    UTIL.getAdmin().deleteTable(TABLE_RETRY);<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    UTIL.shutdownMiniCluster();<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>  @Test(expected = DoNotRetryIOException.class)<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  public void testGetWithDoNotRetryIOException() throws Exception {<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    tableDoNotRetry.get(new Get(Bytes.toBytes("row")).addColumn(CF, CQ));<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>  @Test(expected = DoNotRetryIOException.class)<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  public void testPutWithDoNotRetryIOException() throws Exception {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    tableDoNotRetry.put(new Put(Bytes.toBytes("row")).addColumn(CF, CQ, Bytes.toBytes("value")));<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>  @Test(expected = DoNotRetryIOException.class)<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  public void testDeleteWithDoNotRetryIOException() throws Exception {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    tableDoNotRetry.delete(new Delete(Bytes.toBytes("row")).addColumn(CF, CQ));<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>  @Test(expected = DoNotRetryIOException.class)<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  public void testAppendWithDoNotRetryIOException() throws Exception {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    tableDoNotRetry<a name="line.105"></a>
+<span class="sourceLineNo">106</span>        .append(new Append(Bytes.toBytes("row")).addColumn(CF, CQ, Bytes.toBytes("value")));<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  }<a name="line.107"></a>
+<span class="sourceLineNo">108</span><a name="line.108"></a>
+<span class="sourceLineNo">109</span>  @Test(expected = DoNotRetryIOException.class)<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  public void testIncrementWithDoNotRetryIOException() throws Exception {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    tableDoNotRetry.increment(new Increment(Bytes.toBytes("row")).addColumn(CF, CQ, 1));<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>  @Test(expected = RetriesExhaustedException.class)<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  public void testGetWithIOException() throws Exception {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    tableRetry.get(new Get(Bytes.toBytes("row")).addColumn(CF, CQ));<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>  @Test(expected = RetriesExhaustedException.class)<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  public void testPutWithIOException() throws Exception {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    tableRetry.put(new Put(Bytes.toBytes("row")).addColumn(CF, CQ, Bytes.toBytes("value")));<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>  @Test(expected = RetriesExhaustedException.class)<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  public void testDeleteWithIOException() throws Exception {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    tableRetry.delete(new Delete(Bytes.toBytes("row")).addColumn(CF, CQ));<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>  @Test(expected = RetriesExhaustedException.class)<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  public void testAppendWithIOException() throws Exception {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    tableRetry.append(new Append(Bytes.toBytes("row")).addColumn(CF, CQ, Bytes.toBytes("value")));<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>  @Test(expected = RetriesExhaustedException.class)<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  public void testIncrementWithIOException() throws Exception {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    tableRetry.increment(new Increment(Bytes.toBytes("row")).addColumn(CF, CQ, 1));<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>  public static class ThrowDoNotRetryIOExceptionCoprocessor<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      implements RegionCoprocessor, RegionObserver {<a name="line.140"></a>
+<span class="sourceLineNo">141</span><a name="line.141"></a>
+<span class="sourceLineNo">142</span>    public ThrowDoNotRetryIOExceptionCoprocessor() {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    }<a name="line.143"></a>
+<span class="sourceLineNo">144</span><a name="line.144"></a>
+<span class="sourceLineNo">145</span>    @Override<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    public Optional&lt;RegionObserver&gt; getRegionObserver() {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      return Optional.of(this);<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>    @Override<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    public void preGetOp(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, final Get get,<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        final List&lt;Cell&gt; results) throws IOException {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      throw new DoNotRetryIOException("Call failed and don't retry");<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 void prePut(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, final Put put,<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        final WALEdit edit, final Durability durability) throws IOException {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      throw new DoNotRetryIOException("Call failed and don't retry");<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 void preDelete(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        final Delete delete, final WALEdit edit, final Durability durability) throws IOException {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      throw new DoNotRetryIOException("Call failed and don't retry");<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>    @Override<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    public Result preIncrement(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        final Increment increment) throws IOException {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      throw new DoNotRetryIOException("Call failed and don't retry");<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>    @Override<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    public Result preAppend(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        final Append append) throws IOException {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      throw new DoNotRetryIOException("Call failed and don't retry");<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  }<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  public static class ThrowIOExceptionCoprocessor<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      implements RegionCoprocessor, RegionObserver {<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>    public ThrowIOExceptionCoprocessor() {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
+<span class="sourceLineNo">186</span><a name="line.186"></a>
+<span class="sourceLineNo">187</span>    @Override<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    public Optional&lt;RegionObserver&gt; getRegionObserver() {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      return Optional.of(this);<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>    @Override<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    public void preGetOp(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, final Get get,<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        final List&lt;Cell&gt; results) throws IOException {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      throw new IOException("Call failed and retry");<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>    @Override<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    public void prePut(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, final Put put,<a name="line.199"></a>
+<span class="sourceLineNo">200</span>        final WALEdit edit, final Durability durability) throws IOException {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      throw new IOException("Call failed and retry");<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>    @Override<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    public void preDelete(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        final Delete delete, final WALEdit edit, final Durability durability) throws IOException {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      throw new IOException("Call failed and retry");<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>    @Override<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    public Result preIncrement(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.211"></a>
+<span class="sourceLineNo">212</span>        final Increment increment) throws IOException {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      throw new IOException("Call failed and retry");<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>    @Override<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    public Result preAppend(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        final Append append) throws IOException {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      throw new IOException("Call failed and retry");<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>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


[20/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 da040ad..d6702a7 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
@@ -2957,7 +2957,7 @@
 <span class="sourceLineNo">2949</span>        if(family == null) {<a name="line.2949"></a>
 <span class="sourceLineNo">2950</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2950"></a>
 <span class="sourceLineNo">2951</span>        }<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>        checkFamily(family);<a name="line.2952"></a>
+<span class="sourceLineNo">2952</span>        checkFamily(family, delete.getDurability());<a name="line.2952"></a>
 <span class="sourceLineNo">2953</span>      }<a name="line.2953"></a>
 <span class="sourceLineNo">2954</span>    }<a name="line.2954"></a>
 <span class="sourceLineNo">2955</span>  }<a name="line.2955"></a>
@@ -3569,7 +3569,7 @@
 <span class="sourceLineNo">3561</span><a name="line.3561"></a>
 <span class="sourceLineNo">3562</span>    @Override<a name="line.3562"></a>
 <span class="sourceLineNo">3563</span>    public void checkAndPreparePut(Put p) throws IOException {<a name="line.3563"></a>
-<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet());<a name="line.3564"></a>
+<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet(), p.getDurability());<a name="line.3564"></a>
 <span class="sourceLineNo">3565</span>    }<a name="line.3565"></a>
 <span class="sourceLineNo">3566</span><a name="line.3566"></a>
 <span class="sourceLineNo">3567</span>    @Override<a name="line.3567"></a>
@@ -4462,4304 +4462,4307 @@
 <span class="sourceLineNo">4454</span>    store.add(cell, memstoreAccounting);<a name="line.4454"></a>
 <span class="sourceLineNo">4455</span>  }<a name="line.4455"></a>
 <span class="sourceLineNo">4456</span><a name="line.4456"></a>
-<span class="sourceLineNo">4457</span>  /**<a name="line.4457"></a>
-<span class="sourceLineNo">4458</span>   * Check the collection of families for validity.<a name="line.4458"></a>
-<span class="sourceLineNo">4459</span>   * @param families<a name="line.4459"></a>
-<span class="sourceLineNo">4460</span>   * @throws NoSuchColumnFamilyException<a name="line.4460"></a>
-<span class="sourceLineNo">4461</span>   */<a name="line.4461"></a>
-<span class="sourceLineNo">4462</span>  public void checkFamilies(Collection&lt;byte[]&gt; families) throws NoSuchColumnFamilyException {<a name="line.4462"></a>
-<span class="sourceLineNo">4463</span>    for (byte[] family : families) {<a name="line.4463"></a>
-<span class="sourceLineNo">4464</span>      checkFamily(family);<a name="line.4464"></a>
-<span class="sourceLineNo">4465</span>    }<a name="line.4465"></a>
-<span class="sourceLineNo">4466</span>  }<a name="line.4466"></a>
-<span class="sourceLineNo">4467</span><a name="line.4467"></a>
-<span class="sourceLineNo">4468</span>  /**<a name="line.4468"></a>
-<span class="sourceLineNo">4469</span>   * Check the collection of families for valid timestamps<a name="line.4469"></a>
-<span class="sourceLineNo">4470</span>   * @param familyMap<a name="line.4470"></a>
-<span class="sourceLineNo">4471</span>   * @param now current timestamp<a name="line.4471"></a>
-<span class="sourceLineNo">4472</span>   * @throws FailedSanityCheckException<a name="line.4472"></a>
-<span class="sourceLineNo">4473</span>   */<a name="line.4473"></a>
-<span class="sourceLineNo">4474</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4474"></a>
-<span class="sourceLineNo">4475</span>      throws FailedSanityCheckException {<a name="line.4475"></a>
-<span class="sourceLineNo">4476</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4476"></a>
-<span class="sourceLineNo">4477</span>      return;<a name="line.4477"></a>
-<span class="sourceLineNo">4478</span>    }<a name="line.4478"></a>
-<span class="sourceLineNo">4479</span>    long maxTs = now + timestampSlop;<a name="line.4479"></a>
-<span class="sourceLineNo">4480</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4480"></a>
-<span class="sourceLineNo">4481</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4481"></a>
-<span class="sourceLineNo">4482</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4482"></a>
-<span class="sourceLineNo">4483</span>      assert kvs instanceof RandomAccess;<a name="line.4483"></a>
-<span class="sourceLineNo">4484</span>      int listSize  = kvs.size();<a name="line.4484"></a>
-<span class="sourceLineNo">4485</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4485"></a>
-<span class="sourceLineNo">4486</span>        Cell cell = kvs.get(i);<a name="line.4486"></a>
-<span class="sourceLineNo">4487</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4487"></a>
-<span class="sourceLineNo">4488</span>        long ts = cell.getTimestamp();<a name="line.4488"></a>
-<span class="sourceLineNo">4489</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4489"></a>
-<span class="sourceLineNo">4490</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4490"></a>
-<span class="sourceLineNo">4491</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4491"></a>
-<span class="sourceLineNo">4492</span>        }<a name="line.4492"></a>
-<span class="sourceLineNo">4493</span>      }<a name="line.4493"></a>
+<span class="sourceLineNo">4457</span>  private void checkFamilies(Collection&lt;byte[]&gt; families, Durability durability)<a name="line.4457"></a>
+<span class="sourceLineNo">4458</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4458"></a>
+<span class="sourceLineNo">4459</span>    for (byte[] family : families) {<a name="line.4459"></a>
+<span class="sourceLineNo">4460</span>      checkFamily(family, durability);<a name="line.4460"></a>
+<span class="sourceLineNo">4461</span>    }<a name="line.4461"></a>
+<span class="sourceLineNo">4462</span>  }<a name="line.4462"></a>
+<span class="sourceLineNo">4463</span><a name="line.4463"></a>
+<span class="sourceLineNo">4464</span>  private void checkFamily(final byte[] family, Durability durability)<a name="line.4464"></a>
+<span class="sourceLineNo">4465</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4465"></a>
+<span class="sourceLineNo">4466</span>    checkFamily(family);<a name="line.4466"></a>
+<span class="sourceLineNo">4467</span>    if (durability.equals(Durability.SKIP_WAL)<a name="line.4467"></a>
+<span class="sourceLineNo">4468</span>        &amp;&amp; htableDescriptor.getColumnFamily(family).getScope()<a name="line.4468"></a>
+<span class="sourceLineNo">4469</span>        != HConstants.REPLICATION_SCOPE_LOCAL) {<a name="line.4469"></a>
+<span class="sourceLineNo">4470</span>      throw new InvalidMutationDurabilityException(<a name="line.4470"></a>
+<span class="sourceLineNo">4471</span>          "Mutation's durability is SKIP_WAL but table's column family " + Bytes.toString(family)<a name="line.4471"></a>
+<span class="sourceLineNo">4472</span>              + " need replication");<a name="line.4472"></a>
+<span class="sourceLineNo">4473</span>    }<a name="line.4473"></a>
+<span class="sourceLineNo">4474</span>  }<a name="line.4474"></a>
+<span class="sourceLineNo">4475</span><a name="line.4475"></a>
+<span class="sourceLineNo">4476</span>  void checkFamily(final byte[] family) throws NoSuchColumnFamilyException {<a name="line.4476"></a>
+<span class="sourceLineNo">4477</span>    if (!this.htableDescriptor.hasColumnFamily(family)) {<a name="line.4477"></a>
+<span class="sourceLineNo">4478</span>      throw new NoSuchColumnFamilyException(<a name="line.4478"></a>
+<span class="sourceLineNo">4479</span>          "Column family " + Bytes.toString(family) + " does not exist in region " + this<a name="line.4479"></a>
+<span class="sourceLineNo">4480</span>              + " in table " + this.htableDescriptor);<a name="line.4480"></a>
+<span class="sourceLineNo">4481</span>    }<a name="line.4481"></a>
+<span class="sourceLineNo">4482</span>  }<a name="line.4482"></a>
+<span class="sourceLineNo">4483</span><a name="line.4483"></a>
+<span class="sourceLineNo">4484</span>  /**<a name="line.4484"></a>
+<span class="sourceLineNo">4485</span>   * Check the collection of families for valid timestamps<a name="line.4485"></a>
+<span class="sourceLineNo">4486</span>   * @param familyMap<a name="line.4486"></a>
+<span class="sourceLineNo">4487</span>   * @param now current timestamp<a name="line.4487"></a>
+<span class="sourceLineNo">4488</span>   * @throws FailedSanityCheckException<a name="line.4488"></a>
+<span class="sourceLineNo">4489</span>   */<a name="line.4489"></a>
+<span class="sourceLineNo">4490</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4490"></a>
+<span class="sourceLineNo">4491</span>      throws FailedSanityCheckException {<a name="line.4491"></a>
+<span class="sourceLineNo">4492</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4492"></a>
+<span class="sourceLineNo">4493</span>      return;<a name="line.4493"></a>
 <span class="sourceLineNo">4494</span>    }<a name="line.4494"></a>
-<span class="sourceLineNo">4495</span>  }<a name="line.4495"></a>
-<span class="sourceLineNo">4496</span><a name="line.4496"></a>
-<span class="sourceLineNo">4497</span>  /*<a name="line.4497"></a>
-<span class="sourceLineNo">4498</span>   * @param size<a name="line.4498"></a>
-<span class="sourceLineNo">4499</span>   * @return True if size is over the flush threshold<a name="line.4499"></a>
-<span class="sourceLineNo">4500</span>   */<a name="line.4500"></a>
-<span class="sourceLineNo">4501</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4501"></a>
-<span class="sourceLineNo">4502</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4502"></a>
-<span class="sourceLineNo">4503</span>  }<a name="line.4503"></a>
-<span class="sourceLineNo">4504</span><a name="line.4504"></a>
-<span class="sourceLineNo">4505</span>  /**<a name="line.4505"></a>
-<span class="sourceLineNo">4506</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4506"></a>
-<span class="sourceLineNo">4507</span>   * the recovered edits back up into this region.<a name="line.4507"></a>
-<span class="sourceLineNo">4508</span>   *<a name="line.4508"></a>
-<span class="sourceLineNo">4509</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4509"></a>
-<span class="sourceLineNo">4510</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4510"></a>
-<span class="sourceLineNo">4511</span>   * reflected in the HFiles.)<a name="line.4511"></a>
-<span class="sourceLineNo">4512</span>   *<a name="line.4512"></a>
-<span class="sourceLineNo">4513</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4513"></a>
-<span class="sourceLineNo">4514</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4514"></a>
-<span class="sourceLineNo">4515</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4515"></a>
-<span class="sourceLineNo">4516</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4516"></a>
-<span class="sourceLineNo">4517</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4517"></a>
-<span class="sourceLineNo">4518</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4518"></a>
-<span class="sourceLineNo">4519</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4519"></a>
-<span class="sourceLineNo">4520</span>   * edits.<a name="line.4520"></a>
-<span class="sourceLineNo">4521</span>   *<a name="line.4521"></a>
-<span class="sourceLineNo">4522</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4522"></a>
-<span class="sourceLineNo">4523</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4523"></a>
-<span class="sourceLineNo">4524</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4524"></a>
-<span class="sourceLineNo">4525</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4525"></a>
-<span class="sourceLineNo">4526</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4526"></a>
-<span class="sourceLineNo">4527</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4527"></a>
-<span class="sourceLineNo">4528</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4528"></a>
-<span class="sourceLineNo">4529</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4529"></a>
-<span class="sourceLineNo">4530</span>   * make sense in a this single region context only -- until we online.<a name="line.4530"></a>
-<span class="sourceLineNo">4531</span>   *<a name="line.4531"></a>
-<span class="sourceLineNo">4532</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4532"></a>
-<span class="sourceLineNo">4533</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4533"></a>
-<span class="sourceLineNo">4534</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4534"></a>
-<span class="sourceLineNo">4535</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4535"></a>
-<span class="sourceLineNo">4536</span>   * @throws IOException<a name="line.4536"></a>
-<span class="sourceLineNo">4537</span>   */<a name="line.4537"></a>
-<span class="sourceLineNo">4538</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4538"></a>
-<span class="sourceLineNo">4539</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4539"></a>
-<span class="sourceLineNo">4540</span>      throws IOException {<a name="line.4540"></a>
-<span class="sourceLineNo">4541</span>    long minSeqIdForTheRegion = -1;<a name="line.4541"></a>
-<span class="sourceLineNo">4542</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4542"></a>
-<span class="sourceLineNo">4543</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4543"></a>
-<span class="sourceLineNo">4544</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4544"></a>
-<span class="sourceLineNo">4545</span>      }<a name="line.4545"></a>
-<span class="sourceLineNo">4546</span>    }<a name="line.4546"></a>
-<span class="sourceLineNo">4547</span>    long seqid = minSeqIdForTheRegion;<a name="line.4547"></a>
-<span class="sourceLineNo">4548</span><a name="line.4548"></a>
-<span class="sourceLineNo">4549</span>    FileSystem walFS = getWalFileSystem();<a name="line.4549"></a>
-<span class="sourceLineNo">4550</span>    FileSystem rootFS = getFilesystem();<a name="line.4550"></a>
-<span class="sourceLineNo">4551</span>    Path regionDir = getWALRegionDir();<a name="line.4551"></a>
-<span class="sourceLineNo">4552</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4552"></a>
-<span class="sourceLineNo">4553</span><a name="line.4553"></a>
-<span class="sourceLineNo">4554</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4554"></a>
-<span class="sourceLineNo">4555</span>    // under the root dir even if walDir is set.<a name="line.4555"></a>
-<span class="sourceLineNo">4556</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4556"></a>
-<span class="sourceLineNo">4557</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4557"></a>
-<span class="sourceLineNo">4558</span>      filesUnderRootDir =<a name="line.4558"></a>
-<span class="sourceLineNo">4559</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4559"></a>
-<span class="sourceLineNo">4560</span>      seqid = Math.max(seqid,<a name="line.4560"></a>
-<span class="sourceLineNo">4561</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4561"></a>
-<span class="sourceLineNo">4562</span>              defaultRegionDir));<a name="line.4562"></a>
-<span class="sourceLineNo">4563</span>    }<a name="line.4563"></a>
+<span class="sourceLineNo">4495</span>    long maxTs = now + timestampSlop;<a name="line.4495"></a>
+<span class="sourceLineNo">4496</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4496"></a>
+<span class="sourceLineNo">4497</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4497"></a>
+<span class="sourceLineNo">4498</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4498"></a>
+<span class="sourceLineNo">4499</span>      assert kvs instanceof RandomAccess;<a name="line.4499"></a>
+<span class="sourceLineNo">4500</span>      int listSize  = kvs.size();<a name="line.4500"></a>
+<span class="sourceLineNo">4501</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4501"></a>
+<span class="sourceLineNo">4502</span>        Cell cell = kvs.get(i);<a name="line.4502"></a>
+<span class="sourceLineNo">4503</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4503"></a>
+<span class="sourceLineNo">4504</span>        long ts = cell.getTimestamp();<a name="line.4504"></a>
+<span class="sourceLineNo">4505</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4505"></a>
+<span class="sourceLineNo">4506</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4506"></a>
+<span class="sourceLineNo">4507</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4507"></a>
+<span class="sourceLineNo">4508</span>        }<a name="line.4508"></a>
+<span class="sourceLineNo">4509</span>      }<a name="line.4509"></a>
+<span class="sourceLineNo">4510</span>    }<a name="line.4510"></a>
+<span class="sourceLineNo">4511</span>  }<a name="line.4511"></a>
+<span class="sourceLineNo">4512</span><a name="line.4512"></a>
+<span class="sourceLineNo">4513</span>  /*<a name="line.4513"></a>
+<span class="sourceLineNo">4514</span>   * @param size<a name="line.4514"></a>
+<span class="sourceLineNo">4515</span>   * @return True if size is over the flush threshold<a name="line.4515"></a>
+<span class="sourceLineNo">4516</span>   */<a name="line.4516"></a>
+<span class="sourceLineNo">4517</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4517"></a>
+<span class="sourceLineNo">4518</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4518"></a>
+<span class="sourceLineNo">4519</span>  }<a name="line.4519"></a>
+<span class="sourceLineNo">4520</span><a name="line.4520"></a>
+<span class="sourceLineNo">4521</span>  /**<a name="line.4521"></a>
+<span class="sourceLineNo">4522</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4522"></a>
+<span class="sourceLineNo">4523</span>   * the recovered edits back up into this region.<a name="line.4523"></a>
+<span class="sourceLineNo">4524</span>   *<a name="line.4524"></a>
+<span class="sourceLineNo">4525</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4525"></a>
+<span class="sourceLineNo">4526</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4526"></a>
+<span class="sourceLineNo">4527</span>   * reflected in the HFiles.)<a name="line.4527"></a>
+<span class="sourceLineNo">4528</span>   *<a name="line.4528"></a>
+<span class="sourceLineNo">4529</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4529"></a>
+<span class="sourceLineNo">4530</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4530"></a>
+<span class="sourceLineNo">4531</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4531"></a>
+<span class="sourceLineNo">4532</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4532"></a>
+<span class="sourceLineNo">4533</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4533"></a>
+<span class="sourceLineNo">4534</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4534"></a>
+<span class="sourceLineNo">4535</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4535"></a>
+<span class="sourceLineNo">4536</span>   * edits.<a name="line.4536"></a>
+<span class="sourceLineNo">4537</span>   *<a name="line.4537"></a>
+<span class="sourceLineNo">4538</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4538"></a>
+<span class="sourceLineNo">4539</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4539"></a>
+<span class="sourceLineNo">4540</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4540"></a>
+<span class="sourceLineNo">4541</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4541"></a>
+<span class="sourceLineNo">4542</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4542"></a>
+<span class="sourceLineNo">4543</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4543"></a>
+<span class="sourceLineNo">4544</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4544"></a>
+<span class="sourceLineNo">4545</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4545"></a>
+<span class="sourceLineNo">4546</span>   * make sense in a this single region context only -- until we online.<a name="line.4546"></a>
+<span class="sourceLineNo">4547</span>   *<a name="line.4547"></a>
+<span class="sourceLineNo">4548</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4548"></a>
+<span class="sourceLineNo">4549</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4549"></a>
+<span class="sourceLineNo">4550</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4550"></a>
+<span class="sourceLineNo">4551</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4551"></a>
+<span class="sourceLineNo">4552</span>   * @throws IOException<a name="line.4552"></a>
+<span class="sourceLineNo">4553</span>   */<a name="line.4553"></a>
+<span class="sourceLineNo">4554</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4554"></a>
+<span class="sourceLineNo">4555</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4555"></a>
+<span class="sourceLineNo">4556</span>      throws IOException {<a name="line.4556"></a>
+<span class="sourceLineNo">4557</span>    long minSeqIdForTheRegion = -1;<a name="line.4557"></a>
+<span class="sourceLineNo">4558</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4558"></a>
+<span class="sourceLineNo">4559</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4559"></a>
+<span class="sourceLineNo">4560</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4560"></a>
+<span class="sourceLineNo">4561</span>      }<a name="line.4561"></a>
+<span class="sourceLineNo">4562</span>    }<a name="line.4562"></a>
+<span class="sourceLineNo">4563</span>    long seqid = minSeqIdForTheRegion;<a name="line.4563"></a>
 <span class="sourceLineNo">4564</span><a name="line.4564"></a>
-<span class="sourceLineNo">4565</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4565"></a>
-<span class="sourceLineNo">4566</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4566"></a>
-<span class="sourceLineNo">4567</span>        files, reporter, regionDir));<a name="line.4567"></a>
-<span class="sourceLineNo">4568</span><a name="line.4568"></a>
-<span class="sourceLineNo">4569</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4569"></a>
-<span class="sourceLineNo">4570</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4570"></a>
-<span class="sourceLineNo">4571</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4571"></a>
-<span class="sourceLineNo">4572</span>    }<a name="line.4572"></a>
-<span class="sourceLineNo">4573</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4573"></a>
-<span class="sourceLineNo">4574</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4574"></a>
-<span class="sourceLineNo">4575</span>      // For debugging data loss issues!<a name="line.4575"></a>
-<span class="sourceLineNo">4576</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4576"></a>
-<span class="sourceLineNo">4577</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4577"></a>
-<span class="sourceLineNo">4578</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4578"></a>
-<span class="sourceLineNo">4579</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4579"></a>
-<span class="sourceLineNo">4580</span>      for (Path file: files) {<a name="line.4580"></a>
-<span class="sourceLineNo">4581</span>        fakeStoreFiles.add(<a name="line.4581"></a>
-<span class="sourceLineNo">4582</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4582"></a>
-<span class="sourceLineNo">4583</span>      }<a name="line.4583"></a>
-<span class="sourceLineNo">4584</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4584"></a>
-<span class="sourceLineNo">4585</span>    } else {<a name="line.4585"></a>
-<span class="sourceLineNo">4586</span>      if (filesUnderRootDir != null) {<a name="line.4586"></a>
-<span class="sourceLineNo">4587</span>        for (Path file : filesUnderRootDir) {<a name="line.4587"></a>
-<span class="sourceLineNo">4588</span>          if (!rootFS.delete(file, false)) {<a name="line.4588"></a>
-<span class="sourceLineNo">4589</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4589"></a>
-<span class="sourceLineNo">4590</span>          } else {<a name="line.4590"></a>
-<span class="sourceLineNo">4591</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4591"></a>
-<span class="sourceLineNo">4592</span>          }<a name="line.4592"></a>
-<span class="sourceLineNo">4593</span>        }<a name="line.4593"></a>
-<span class="sourceLineNo">4594</span>      }<a name="line.4594"></a>
-<span class="sourceLineNo">4595</span>      for (Path file: files) {<a name="line.4595"></a>
-<span class="sourceLineNo">4596</span>        if (!walFS.delete(file, false)) {<a name="line.4596"></a>
-<span class="sourceLineNo">4597</span>          LOG.error("Failed delete of " + file);<a name="line.4597"></a>
-<span class="sourceLineNo">4598</span>        } else {<a name="line.4598"></a>
-<span class="sourceLineNo">4599</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4599"></a>
-<span class="sourceLineNo">4600</span>        }<a name="line.4600"></a>
-<span class="sourceLineNo">4601</span>      }<a name="line.4601"></a>
-<span class="sourceLineNo">4602</span>    }<a name="line.4602"></a>
-<span class="sourceLineNo">4603</span>    return seqid;<a name="line.4603"></a>
-<span class="sourceLineNo">4604</span>  }<a name="line.4604"></a>
-<span class="sourceLineNo">4605</span><a name="line.4605"></a>
-<span class="sourceLineNo">4606</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4606"></a>
-<span class="sourceLineNo">4607</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4607"></a>
-<span class="sourceLineNo">4608</span>      throws IOException {<a name="line.4608"></a>
-<span class="sourceLineNo">4609</span>    long seqid = minSeqIdForTheRegion;<a name="line.4609"></a>
-<span class="sourceLineNo">4610</span>    if (LOG.isDebugEnabled()) {<a name="line.4610"></a>
-<span class="sourceLineNo">4611</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4611"></a>
-<span class="sourceLineNo">4612</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4612"></a>
-<span class="sourceLineNo">4613</span>    }<a name="line.4613"></a>
-<span class="sourceLineNo">4614</span><a name="line.4614"></a>
-<span class="sourceLineNo">4615</span>    if (files == null || files.isEmpty()) {<a name="line.4615"></a>
-<span class="sourceLineNo">4616</span>      return minSeqIdForTheRegion;<a name="line.4616"></a>
-<span class="sourceLineNo">4617</span>    }<a name="line.4617"></a>
-<span class="sourceLineNo">4618</span><a name="line.4618"></a>
-<span class="sourceLineNo">4619</span>    for (Path edits: files) {<a name="line.4619"></a>
-<span class="sourceLineNo">4620</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4620"></a>
-<span class="sourceLineNo">4621</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4621"></a>
-<span class="sourceLineNo">4622</span>        continue;<a name="line.4622"></a>
-<span class="sourceLineNo">4623</span>      }<a name="line.4623"></a>
-<span class="sourceLineNo">4624</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4624"></a>
-<span class="sourceLineNo">4625</span><a name="line.4625"></a>
-<span class="sourceLineNo">4626</span>      long maxSeqId;<a name="line.4626"></a>
-<span class="sourceLineNo">4627</span>      String fileName = edits.getName();<a name="line.4627"></a>
-<span class="sourceLineNo">4628</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4628"></a>
-<span class="sourceLineNo">4629</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4629"></a>
-<span class="sourceLineNo">4630</span>        if (LOG.isDebugEnabled()) {<a name="line.4630"></a>
-<span class="sourceLineNo">4631</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4631"></a>
-<span class="sourceLineNo">4632</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4632"></a>
-<span class="sourceLineNo">4633</span>              + ", skipped the whole file, path=" + edits;<a name="line.4633"></a>
-<span class="sourceLineNo">4634</span>          LOG.debug(msg);<a name="line.4634"></a>
-<span class="sourceLineNo">4635</span>        }<a name="line.4635"></a>
-<span class="sourceLineNo">4636</span>        continue;<a name="line.4636"></a>
-<span class="sourceLineNo">4637</span>      }<a name="line.4637"></a>
-<span class="sourceLineNo">4638</span><a name="line.4638"></a>
-<span class="sourceLineNo">4639</span>      try {<a name="line.4639"></a>
-<span class="sourceLineNo">4640</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4640"></a>
-<span class="sourceLineNo">4641</span>        // if seqId is greater<a name="line.4641"></a>
-<span class="sourceLineNo">4642</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4642"></a>
-<span class="sourceLineNo">4643</span>      } catch (IOException e) {<a name="line.4643"></a>
-<span class="sourceLineNo">4644</span>        boolean skipErrors = conf.getBoolean(<a name="line.4644"></a>
-<span class="sourceLineNo">4645</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4645"></a>
-<span class="sourceLineNo">4646</span>            conf.getBoolean(<a name="line.4646"></a>
-<span class="sourceLineNo">4647</span>                "hbase.skip.errors",<a name="line.4647"></a>
-<span class="sourceLineNo">4648</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4648"></a>
-<span class="sourceLineNo">4649</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4649"></a>
-<span class="sourceLineNo">4650</span>          LOG.warn(<a name="line.4650"></a>
-<span class="sourceLineNo">4651</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4651"></a>
-<span class="sourceLineNo">4652</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4652"></a>
-<span class="sourceLineNo">4653</span>        }<a name="line.4653"></a>
-<span class="sourceLineNo">4654</span>        if (skipErrors) {<a name="line.4654"></a>
-<span class="sourceLineNo">4655</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4655"></a>
-<span class="sourceLineNo">4656</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4656"></a>
-<span class="sourceLineNo">4657</span>              + "=true so continuing. Renamed " + edits +<a name="line.4657"></a>
-<span class="sourceLineNo">4658</span>              " as " + p, e);<a name="line.4658"></a>
-<span class="sourceLineNo">4659</span>        } else {<a name="line.4659"></a>
-<span class="sourceLineNo">4660</span>          throw e;<a name="line.4660"></a>
-<span class="sourceLineNo">4661</span>        }<a name="line.4661"></a>
-<span class="sourceLineNo">4662</span>      }<a name="line.4662"></a>
-<span class="sourceLineNo">4663</span>    }<a name="line.4663"></a>
-<span class="sourceLineNo">4664</span>    return seqid;<a name="line.4664"></a>
-<span class="sourceLineNo">4665</span>  }<a name="line.4665"></a>
-<span class="sourceLineNo">4666</span><a name="line.4666"></a>
-<span class="sourceLineNo">4667</span>  /*<a name="line.4667"></a>
-<span class="sourceLineNo">4668</span>   * @param edits File of recovered edits.<a name="line.4668"></a>
-<span class="sourceLineNo">4669</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4669"></a>
-<span class="sourceLineNo">4670</span>   * must be larger than this to be replayed for each store.<a name="line.4670"></a>
-<span class="sourceLineNo">4671</span>   * @param reporter<a name="line.4671"></a>
-<span class="sourceLineNo">4672</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4672"></a>
-<span class="sourceLineNo">4673</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4673"></a>
-<span class="sourceLineNo">4674</span>   * @throws IOException<a name="line.4674"></a>
-<span class="sourceLineNo">4675</span>   */<a name="line.4675"></a>
-<span class="sourceLineNo">4676</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4676"></a>
-<span class="sourceLineNo">4677</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4677"></a>
-<span class="sourceLineNo">4678</span>    throws IOException {<a name="line.4678"></a>
-<span class="sourceLineNo">4679</span>    String msg = "Replaying edits from " + edits;<a name="line.4679"></a>
-<span class="sourceLineNo">4680</span>    LOG.info(msg);<a name="line.4680"></a>
-<span class="sourceLineNo">4681</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4681"></a>
+<span class="sourceLineNo">4565</span>    FileSystem walFS = getWalFileSystem();<a name="line.4565"></a>
+<span class="sourceLineNo">4566</span>    FileSystem rootFS = getFilesystem();<a name="line.4566"></a>
+<span class="sourceLineNo">4567</span>    Path regionDir = getWALRegionDir();<a name="line.4567"></a>
+<span class="sourceLineNo">4568</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4568"></a>
+<span class="sourceLineNo">4569</span><a name="line.4569"></a>
+<span class="sourceLineNo">4570</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4570"></a>
+<span class="sourceLineNo">4571</span>    // under the root dir even if walDir is set.<a name="line.4571"></a>
+<span class="sourceLineNo">4572</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4572"></a>
+<span class="sourceLineNo">4573</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4573"></a>
+<span class="sourceLineNo">4574</span>      filesUnderRootDir =<a name="line.4574"></a>
+<span class="sourceLineNo">4575</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4575"></a>
+<span class="sourceLineNo">4576</span>      seqid = Math.max(seqid,<a name="line.4576"></a>
+<span class="sourceLineNo">4577</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4577"></a>
+<span class="sourceLineNo">4578</span>              defaultRegionDir));<a name="line.4578"></a>
+<span class="sourceLineNo">4579</span>    }<a name="line.4579"></a>
+<span class="sourceLineNo">4580</span><a name="line.4580"></a>
+<span class="sourceLineNo">4581</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4581"></a>
+<span class="sourceLineNo">4582</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4582"></a>
+<span class="sourceLineNo">4583</span>        files, reporter, regionDir));<a name="line.4583"></a>
+<span class="sourceLineNo">4584</span><a name="line.4584"></a>
+<span class="sourceLineNo">4585</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4585"></a>
+<span class="sourceLineNo">4586</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4586"></a>
+<span class="sourceLineNo">4587</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4587"></a>
+<span class="sourceLineNo">4588</span>    }<a name="line.4588"></a>
+<span class="sourceLineNo">4589</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4589"></a>
+<span class="sourceLineNo">4590</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4590"></a>
+<span class="sourceLineNo">4591</span>      // For debugging data loss issues!<a name="line.4591"></a>
+<span class="sourceLineNo">4592</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4592"></a>
+<span class="sourceLineNo">4593</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4593"></a>
+<span class="sourceLineNo">4594</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4594"></a>
+<span class="sourceLineNo">4595</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4595"></a>
+<span class="sourceLineNo">4596</span>      for (Path file: files) {<a name="line.4596"></a>
+<span class="sourceLineNo">4597</span>        fakeStoreFiles.add(<a name="line.4597"></a>
+<span class="sourceLineNo">4598</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4598"></a>
+<span class="sourceLineNo">4599</span>      }<a name="line.4599"></a>
+<span class="sourceLineNo">4600</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4600"></a>
+<span class="sourceLineNo">4601</span>    } else {<a name="line.4601"></a>
+<span class="sourceLineNo">4602</span>      if (filesUnderRootDir != null) {<a name="line.4602"></a>
+<span class="sourceLineNo">4603</span>        for (Path file : filesUnderRootDir) {<a name="line.4603"></a>
+<span class="sourceLineNo">4604</span>          if (!rootFS.delete(file, false)) {<a name="line.4604"></a>
+<span class="sourceLineNo">4605</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4605"></a>
+<span class="sourceLineNo">4606</span>          } else {<a name="line.4606"></a>
+<span class="sourceLineNo">4607</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4607"></a>
+<span class="sourceLineNo">4608</span>          }<a name="line.4608"></a>
+<span class="sourceLineNo">4609</span>        }<a name="line.4609"></a>
+<span class="sourceLineNo">4610</span>      }<a name="line.4610"></a>
+<span class="sourceLineNo">4611</span>      for (Path file: files) {<a name="line.4611"></a>
+<span class="sourceLineNo">4612</span>        if (!walFS.delete(file, false)) {<a name="line.4612"></a>
+<span class="sourceLineNo">4613</span>          LOG.error("Failed delete of " + file);<a name="line.4613"></a>
+<span class="sourceLineNo">4614</span>        } else {<a name="line.4614"></a>
+<span class="sourceLineNo">4615</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4615"></a>
+<span class="sourceLineNo">4616</span>        }<a name="line.4616"></a>
+<span class="sourceLineNo">4617</span>      }<a name="line.4617"></a>
+<span class="sourceLineNo">4618</span>    }<a name="line.4618"></a>
+<span class="sourceLineNo">4619</span>    return seqid;<a name="line.4619"></a>
+<span class="sourceLineNo">4620</span>  }<a name="line.4620"></a>
+<span class="sourceLineNo">4621</span><a name="line.4621"></a>
+<span class="sourceLineNo">4622</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4622"></a>
+<span class="sourceLineNo">4623</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4623"></a>
+<span class="sourceLineNo">4624</span>      throws IOException {<a name="line.4624"></a>
+<span class="sourceLineNo">4625</span>    long seqid = minSeqIdForTheRegion;<a name="line.4625"></a>
+<span class="sourceLineNo">4626</span>    if (LOG.isDebugEnabled()) {<a name="line.4626"></a>
+<span class="sourceLineNo">4627</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4627"></a>
+<span class="sourceLineNo">4628</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4628"></a>
+<span class="sourceLineNo">4629</span>    }<a name="line.4629"></a>
+<span class="sourceLineNo">4630</span><a name="line.4630"></a>
+<span class="sourceLineNo">4631</span>    if (files == null || files.isEmpty()) {<a name="line.4631"></a>
+<span class="sourceLineNo">4632</span>      return minSeqIdForTheRegion;<a name="line.4632"></a>
+<span class="sourceLineNo">4633</span>    }<a name="line.4633"></a>
+<span class="sourceLineNo">4634</span><a name="line.4634"></a>
+<span class="sourceLineNo">4635</span>    for (Path edits: files) {<a name="line.4635"></a>
+<span class="sourceLineNo">4636</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4636"></a>
+<span class="sourceLineNo">4637</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4637"></a>
+<span class="sourceLineNo">4638</span>        continue;<a name="line.4638"></a>
+<span class="sourceLineNo">4639</span>      }<a name="line.4639"></a>
+<span class="sourceLineNo">4640</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4640"></a>
+<span class="sourceLineNo">4641</span><a name="line.4641"></a>
+<span class="sourceLineNo">4642</span>      long maxSeqId;<a name="line.4642"></a>
+<span class="sourceLineNo">4643</span>      String fileName = edits.getName();<a name="line.4643"></a>
+<span class="sourceLineNo">4644</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4644"></a>
+<span class="sourceLineNo">4645</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4645"></a>
+<span class="sourceLineNo">4646</span>        if (LOG.isDebugEnabled()) {<a name="line.4646"></a>
+<span class="sourceLineNo">4647</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4647"></a>
+<span class="sourceLineNo">4648</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4648"></a>
+<span class="sourceLineNo">4649</span>              + ", skipped the whole file, path=" + edits;<a name="line.4649"></a>
+<span class="sourceLineNo">4650</span>          LOG.debug(msg);<a name="line.4650"></a>
+<span class="sourceLineNo">4651</span>        }<a name="line.4651"></a>
+<span class="sourceLineNo">4652</span>        continue;<a name="line.4652"></a>
+<span class="sourceLineNo">4653</span>      }<a name="line.4653"></a>
+<span class="sourceLineNo">4654</span><a name="line.4654"></a>
+<span class="sourceLineNo">4655</span>      try {<a name="line.4655"></a>
+<span class="sourceLineNo">4656</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4656"></a>
+<span class="sourceLineNo">4657</span>        // if seqId is greater<a name="line.4657"></a>
+<span class="sourceLineNo">4658</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4658"></a>
+<span class="sourceLineNo">4659</span>      } catch (IOException e) {<a name="line.4659"></a>
+<span class="sourceLineNo">4660</span>        boolean skipErrors = conf.getBoolean(<a name="line.4660"></a>
+<span class="sourceLineNo">4661</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4661"></a>
+<span class="sourceLineNo">4662</span>            conf.getBoolean(<a name="line.4662"></a>
+<span class="sourceLineNo">4663</span>                "hbase.skip.errors",<a name="line.4663"></a>
+<span class="sourceLineNo">4664</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4664"></a>
+<span class="sourceLineNo">4665</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4665"></a>
+<span class="sourceLineNo">4666</span>          LOG.warn(<a name="line.4666"></a>
+<span class="sourceLineNo">4667</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4667"></a>
+<span class="sourceLineNo">4668</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4668"></a>
+<span class="sourceLineNo">4669</span>        }<a name="line.4669"></a>
+<span class="sourceLineNo">4670</span>        if (skipErrors) {<a name="line.4670"></a>
+<span class="sourceLineNo">4671</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4671"></a>
+<span class="sourceLineNo">4672</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4672"></a>
+<span class="sourceLineNo">4673</span>              + "=true so continuing. Renamed " + edits +<a name="line.4673"></a>
+<span class="sourceLineNo">4674</span>              " as " + p, e);<a name="line.4674"></a>
+<span class="sourceLineNo">4675</span>        } else {<a name="line.4675"></a>
+<span class="sourceLineNo">4676</span>          throw e;<a name="line.4676"></a>
+<span class="sourceLineNo">4677</span>        }<a name="line.4677"></a>
+<span class="sourceLineNo">4678</span>      }<a name="line.4678"></a>
+<span class="sourceLineNo">4679</span>    }<a name="line.4679"></a>
+<span class="sourceLineNo">4680</span>    return seqid;<a name="line.4680"></a>
+<span class="sourceLineNo">4681</span>  }<a name="line.4681"></a>
 <span class="sourceLineNo">4682</span><a name="line.4682"></a>
-<span class="sourceLineNo">4683</span>    status.setStatus("Opening recovered edits");<a name="line.4683"></a>
-<span class="sourceLineNo">4684</span>    WAL.Reader reader = null;<a name="line.4684"></a>
-<span class="sourceLineNo">4685</span>    try {<a name="line.4685"></a>
-<span class="sourceLineNo">4686</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4686"></a>
-<span class="sourceLineNo">4687</span>      long currentEditSeqId = -1;<a name="line.4687"></a>
-<span class="sourceLineNo">4688</span>      long currentReplaySeqId = -1;<a name="line.4688"></a>
-<span class="sourceLineNo">4689</span>      long firstSeqIdInLog = -1;<a name="line.4689"></a>
-<span class="sourceLineNo">4690</span>      long skippedEdits = 0;<a name="line.4690"></a>
-<span class="sourceLineNo">4691</span>      long editsCount = 0;<a name="line.4691"></a>
-<span class="sourceLineNo">4692</span>      long intervalEdits = 0;<a name="line.4692"></a>
-<span class="sourceLineNo">4693</span>      WAL.Entry entry;<a name="line.4693"></a>
-<span class="sourceLineNo">4694</span>      HStore store = null;<a name="line.4694"></a>
-<span class="sourceLineNo">4695</span>      boolean reported_once = false;<a name="line.4695"></a>
-<span class="sourceLineNo">4696</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4696"></a>
-<span class="sourceLineNo">4697</span><a name="line.4697"></a>
-<span class="sourceLineNo">4698</span>      try {<a name="line.4698"></a>
-<span class="sourceLineNo">4699</span>        // How many edits seen before we check elapsed time<a name="line.4699"></a>
-<span class="sourceLineNo">4700</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4700"></a>
-<span class="sourceLineNo">4701</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4701"></a>
-<span class="sourceLineNo">4702</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4702"></a>
-<span class="sourceLineNo">4703</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4703"></a>
-<span class="sourceLineNo">4704</span><a name="line.4704"></a>
-<span class="sourceLineNo">4705</span>        if (coprocessorHost != null) {<a name="line.4705"></a>
-<span class="sourceLineNo">4706</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4706"></a>
-<span class="sourceLineNo">4707</span>        }<a name="line.4707"></a>
-<span class="sourceLineNo">4708</span><a name="line.4708"></a>
-<span class="sourceLineNo">4709</span>        while ((entry = reader.next()) != null) {<a name="line.4709"></a>
-<span class="sourceLineNo">4710</span>          WALKey key = entry.getKey();<a name="line.4710"></a>
-<span class="sourceLineNo">4711</span>          WALEdit val = entry.getEdit();<a name="line.4711"></a>
-<span class="sourceLineNo">4712</span><a name="line.4712"></a>
-<span class="sourceLineNo">4713</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4713"></a>
-<span class="sourceLineNo">4714</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4714"></a>
-<span class="sourceLineNo">4715</span>          }<a name="line.4715"></a>
-<span class="sourceLineNo">4716</span><a name="line.4716"></a>
-<span class="sourceLineNo">4717</span>          if (reporter != null) {<a name="line.4717"></a>
-<span class="sourceLineNo">4718</span>            intervalEdits += val.size();<a name="line.4718"></a>
-<span class="sourceLineNo">4719</span>            if (intervalEdits &gt;= interval) {<a name="line.4719"></a>
-<span class="sourceLineNo">4720</span>              // Number of edits interval reached<a name="line.4720"></a>
-<span class="sourceLineNo">4721</span>              intervalEdits = 0;<a name="line.4721"></a>
-<span class="sourceLineNo">4722</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4722"></a>
-<span class="sourceLineNo">4723</span>              if (lastReport + period &lt;= cur) {<a name="line.4723"></a>
-<span class="sourceLineNo">4724</span>                status.setStatus("Replaying edits..." +<a name="line.4724"></a>
-<span class="sourceLineNo">4725</span>                    " skipped=" + skippedEdits +<a name="line.4725"></a>
-<span class="sourceLineNo">4726</span>                    " edits=" + editsCount);<a name="line.4726"></a>
-<span class="sourceLineNo">4727</span>                // Timeout reached<a name="line.4727"></a>
-<span class="sourceLineNo">4728</span>                if(!reporter.progress()) {<a name="line.4728"></a>
-<span class="sourceLineNo">4729</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4729"></a>
-<span class="sourceLineNo">4730</span>                  LOG.warn(msg);<a name="line.4730"></a>
-<span class="sourceLineNo">4731</span>                  status.abort(msg);<a name="line.4731"></a>
-<span class="sourceLineNo">4732</span>                  throw new IOException(msg);<a name="line.4732"></a>
-<span class="sourceLineNo">4733</span>                }<a name="line.4733"></a>
-<span class="sourceLineNo">4734</span>                reported_once = true;<a name="line.4734"></a>
-<span class="sourceLineNo">4735</span>                lastReport = cur;<a name="line.4735"></a>
-<span class="sourceLineNo">4736</span>              }<a name="line.4736"></a>
-<span class="sourceLineNo">4737</span>            }<a name="line.4737"></a>
-<span class="sourceLineNo">4738</span>          }<a name="line.4738"></a>
-<span class="sourceLineNo">4739</span><a name="line.4739"></a>
-<span class="sourceLineNo">4740</span>          if (firstSeqIdInLog == -1) {<a name="line.4740"></a>
-<span class="sourceLineNo">4741</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4741"></a>
-<span class="sourceLineNo">4742</span>          }<a name="line.4742"></a>
-<span class="sourceLineNo">4743</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4743"></a>
-<span class="sourceLineNo">4744</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4744"></a>
-<span class="sourceLineNo">4745</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4745"></a>
-<span class="sourceLineNo">4746</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4746"></a>
-<span class="sourceLineNo">4747</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4747"></a>
-<span class="sourceLineNo">4748</span>                + "; edit=" + val);<a name="line.4748"></a>
-<span class="sourceLineNo">4749</span>          } else {<a name="line.4749"></a>
-<span class="sourceLineNo">4750</span>            currentEditSeqId = key.getSequenceId();<a name="line.4750"></a>
-<span class="sourceLineNo">4751</span>          }<a name="line.4751"></a>
-<span class="sourceLineNo">4752</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4752"></a>
-<span class="sourceLineNo">4753</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4753"></a>
-<span class="sourceLineNo">4754</span><a name="line.4754"></a>
-<span class="sourceLineNo">4755</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4755"></a>
-<span class="sourceLineNo">4756</span>          // instead of a KeyValue.<a name="line.4756"></a>
-<span class="sourceLineNo">4757</span>          if (coprocessorHost != null) {<a name="line.4757"></a>
-<span class="sourceLineNo">4758</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4758"></a>
-<span class="sourceLineNo">4759</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4759"></a>
-<span class="sourceLineNo">4760</span>              // if bypass this wal entry, ignore it ...<a name="line.4760"></a>
-<span class="sourceLineNo">4761</span>              continue;<a name="line.4761"></a>
-<span class="sourceLineNo">4762</span>            }<a name="line.4762"></a>
-<span class="sourceLineNo">4763</span>          }<a name="line.4763"></a>
-<span class="sourceLineNo">4764</span>          boolean checkRowWithinBoundary = false;<a name="line.4764"></a>
-<span class="sourceLineNo">4765</span>          // Check this edit is for this region.<a name="line.4765"></a>
-<span class="sourceLineNo">4766</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4766"></a>
-<span class="sourceLineNo">4767</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4767"></a>
-<span class="sourceLineNo">4768</span>            checkRowWithinBoundary = true;<a name="line.4768"></a>
-<span class="sourceLineNo">4769</span>          }<a name="line.4769"></a>
+<span class="sourceLineNo">4683</span>  /*<a name="line.4683"></a>
+<span class="sourceLineNo">4684</span>   * @param edits File of recovered edits.<a name="line.4684"></a>
+<span class="sourceLineNo">4685</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4685"></a>
+<span class="sourceLineNo">4686</span>   * must be larger than this to be replayed for each store.<a name="line.4686"></a>
+<span class="sourceLineNo">4687</span>   * @param reporter<a name="line.4687"></a>
+<span class="sourceLineNo">4688</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4688"></a>
+<span class="sourceLineNo">4689</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4689"></a>
+<span class="sourceLineNo">4690</span>   * @throws IOException<a name="line.4690"></a>
+<span class="sourceLineNo">4691</span>   */<a name="line.4691"></a>
+<span class="sourceLineNo">4692</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4692"></a>
+<span class="sourceLineNo">4693</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4693"></a>
+<span class="sourceLineNo">4694</span>    throws IOException {<a name="line.4694"></a>
+<span class="sourceLineNo">4695</span>    String msg = "Replaying edits from " + edits;<a name="line.4695"></a>
+<span class="sourceLineNo">4696</span>    LOG.info(msg);<a name="line.4696"></a>
+<span class="sourceLineNo">4697</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4697"></a>
+<span class="sourceLineNo">4698</span><a name="line.4698"></a>
+<span class="sourceLineNo">4699</span>    status.setStatus("Opening recovered edits");<a name="line.4699"></a>
+<span class="sourceLineNo">4700</span>    WAL.Reader reader = null;<a name="line.4700"></a>
+<span class="sourceLineNo">4701</span>    try {<a name="line.4701"></a>
+<span class="sourceLineNo">4702</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4702"></a>
+<span class="sourceLineNo">4703</span>      long currentEditSeqId = -1;<a name="line.4703"></a>
+<span class="sourceLineNo">4704</span>      long currentReplaySeqId = -1;<a name="line.4704"></a>
+<span class="sourceLineNo">4705</span>      long firstSeqIdInLog = -1;<a name="line.4705"></a>
+<span class="sourceLineNo">4706</span>      long skippedEdits = 0;<a name="line.4706"></a>
+<span class="sourceLineNo">4707</span>      long editsCount = 0;<a name="line.4707"></a>
+<span class="sourceLineNo">4708</span>      long intervalEdits = 0;<a name="line.4708"></a>
+<span class="sourceLineNo">4709</span>      WAL.Entry entry;<a name="line.4709"></a>
+<span class="sourceLineNo">4710</span>      HStore store = null;<a name="line.4710"></a>
+<span class="sourceLineNo">4711</span>      boolean reported_once = false;<a name="line.4711"></a>
+<span class="sourceLineNo">4712</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4712"></a>
+<span class="sourceLineNo">4713</span><a name="line.4713"></a>
+<span class="sourceLineNo">4714</span>      try {<a name="line.4714"></a>
+<span class="sourceLineNo">4715</span>        // How many edits seen before we check elapsed time<a name="line.4715"></a>
+<span class="sourceLineNo">4716</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4716"></a>
+<span class="sourceLineNo">4717</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4717"></a>
+<span class="sourceLineNo">4718</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4718"></a>
+<span class="sourceLineNo">4719</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4719"></a>
+<span class="sourceLineNo">4720</span><a name="line.4720"></a>
+<span class="sourceLineNo">4721</span>        if (coprocessorHost != null) {<a name="line.4721"></a>
+<span class="sourceLineNo">4722</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4722"></a>
+<span class="sourceLineNo">4723</span>        }<a name="line.4723"></a>
+<span class="sourceLineNo">4724</span><a name="line.4724"></a>
+<span class="sourceLineNo">4725</span>        while ((entry = reader.next()) != null) {<a name="line.4725"></a>
+<span class="sourceLineNo">4726</span>          WALKey key = entry.getKey();<a name="line.4726"></a>
+<span class="sourceLineNo">4727</span>          WALEdit val = entry.getEdit();<a name="line.4727"></a>
+<span class="sourceLineNo">4728</span><a name="line.4728"></a>
+<span class="sourceLineNo">4729</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4729"></a>
+<span class="sourceLineNo">4730</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4730"></a>
+<span class="sourceLineNo">4731</span>          }<a name="line.4731"></a>
+<span class="sourceLineNo">4732</span><a name="line.4732"></a>
+<span class="sourceLineNo">4733</span>          if (reporter != null) {<a name="line.4733"></a>
+<span class="sourceLineNo">4734</span>            intervalEdits += val.size();<a name="line.4734"></a>
+<span class="sourceLineNo">4735</span>            if (intervalEdits &gt;= interval) {<a name="line.4735"></a>
+<span class="sourceLineNo">4736</span>              // Number of edits interval reached<a name="line.4736"></a>
+<span class="sourceLineNo">4737</span>              intervalEdits = 0;<a name="line.4737"></a>
+<span class="sourceLineNo">4738</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4738"></a>
+<span class="sourceLineNo">4739</span>              if (lastReport + period &lt;= cur) {<a name="line.4739"></a>
+<span class="sourceLineNo">4740</span>                status.setStatus("Replaying edits..." +<a name="line.4740"></a>
+<span class="sourceLineNo">4741</span>                    " skipped=" + skippedEdits +<a name="line.4741"></a>
+<span class="sourceLineNo">4742</span>                    " edits=" + editsCount);<a name="line.4742"></a>
+<span class="sourceLineNo">4743</span>                // Timeout reached<a name="line.4743"></a>
+<span class="sourceLineNo">4744</span>                if(!reporter.progress()) {<a name="line.4744"></a>
+<span class="sourceLineNo">4745</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4745"></a>
+<span class="sourceLineNo">4746</span>                  LOG.warn(msg);<a name="line.4746"></a>
+<span class="sourceLineNo">4747</span>                  status.abort(msg);<a name="line.4747"></a>
+<span class="sourceLineNo">4748</span>                  throw new IOException(msg);<a name="line.4748"></a>
+<span class="sourceLineNo">4749</span>                }<a name="line.4749"></a>
+<span class="sourceLineNo">4750</span>                reported_once = true;<a name="line.4750"></a>
+<span class="sourceLineNo">4751</span>                lastReport = cur;<a name="line.4751"></a>
+<span class="sourceLineNo">4752</span>              }<a name="line.4752"></a>
+<span class="sourceLineNo">4753</span>            }<a name="line.4753"></a>
+<span class="sourceLineNo">4754</span>          }<a name="line.4754"></a>
+<span class="sourceLineNo">4755</span><a name="line.4755"></a>
+<span class="sourceLineNo">4756</span>          if (firstSeqIdInLog == -1) {<a name="line.4756"></a>
+<span class="sourceLineNo">4757</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4757"></a>
+<span class="sourceLineNo">4758</span>          }<a name="line.4758"></a>
+<span class="sourceLineNo">4759</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4759"></a>
+<span class="sourceLineNo">4760</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4760"></a>
+<span class="sourceLineNo">4761</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4761"></a>
+<span class="sourceLineNo">4762</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4762"></a>
+<span class="sourceLineNo">4763</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4763"></a>
+<span class="sourceLineNo">4764</span>                + "; edit=" + val);<a name="line.4764"></a>
+<span class="sourceLineNo">4765</span>          } else {<a name="line.4765"></a>
+<span class="sourceLineNo">4766</span>            currentEditSeqId = key.getSequenceId();<a name="line.4766"></a>
+<span class="sourceLineNo">4767</span>          }<a name="line.4767"></a>
+<span class="sourceLineNo">4768</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4768"></a>
+<span class="sourceLineNo">4769</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4769"></a>
 <span class="sourceLineNo">4770</span><a name="line.4770"></a>
-<span class="sourceLineNo">4771</span>          boolean flush = false;<a name="line.4771"></a>
-<span class="sourceLineNo">4772</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4772"></a>
-<span class="sourceLineNo">4773</span>          for (Cell cell: val.getCells()) {<a name="line.4773"></a>
-<span class="sourceLineNo">4774</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4774"></a>
-<span class="sourceLineNo">4775</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4775"></a>
-<span class="sourceLineNo">4776</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4776"></a>
-<span class="sourceLineNo">4777</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4777"></a>
-<span class="sourceLineNo">4778</span>              if (!checkRowWithinBoundary) {<a name="line.4778"></a>
-<span class="sourceLineNo">4779</span>                //this is a special edit, we should handle it<a name="line.4779"></a>
-<span class="sourceLineNo">4780</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4780"></a>
-<span class="sourceLineNo">4781</span>                if (compaction != null) {<a name="line.4781"></a>
-<span class="sourceLineNo">4782</span>                  //replay the compaction<a name="line.4782"></a>
-<span class="sourceLineNo">4783</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4783"></a>
-<span class="sourceLineNo">4784</span>                }<a name="line.4784"></a>
-<span class="sourceLineNo">4785</span>              }<a name="line.4785"></a>
-<span class="sourceLineNo">4786</span>              skippedEdits++;<a name="line.4786"></a>
-<span class="sourceLineNo">4787</span>              continue;<a name="line.4787"></a>
-<span class="sourceLineNo">4788</span>            }<a name="line.4788"></a>
-<span class="sourceLineNo">4789</span>            // Figure which store the edit is meant for.<a name="line.4789"></a>
-<span class="sourceLineNo">4790</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4790"></a>
-<span class="sourceLineNo">4791</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4791"></a>
-<span class="sourceLineNo">4792</span>              store = getStore(cell);<a name="line.4792"></a>
-<span class="sourceLineNo">4793</span>            }<a name="line.4793"></a>
-<span class="sourceLineNo">4794</span>            if (store == null) {<a name="line.4794"></a>
-<span class="sourceLineNo">4795</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4795"></a>
-<span class="sourceLineNo">4796</span>              // crash and redeploy?<a name="line.4796"></a>
-<span class="sourceLineNo">4797</span>              LOG.warn("No family for " + cell);<a name="line.4797"></a>
-<span class="sourceLineNo">4798</span>              skippedEdits++;<a name="line.4798"></a>
-<span class="sourceLineNo">4799</span>              continue;<a name="line.4799"></a>
-<span class="sourceLineNo">4800</span>            }<a name="line.4800"></a>
-<span class="sourceLineNo">4801</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4801"></a>
-<span class="sourceLineNo">4802</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4802"></a>
-<span class="sourceLineNo">4803</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4803"></a>
-<span class="sourceLineNo">4804</span>              skippedEdits++;<a name="line.4804"></a>
-<span class="sourceLineNo">4805</span>              continue;<a name="line.4805"></a>
-<span class="sourceLineNo">4806</span>            }<a name="line.4806"></a>
-<span class="sourceLineNo">4807</span>            // Now, figure if we should skip this edit.<a name="line.4807"></a>
-<span class="sourceLineNo">4808</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4808"></a>
-<span class="sourceLineNo">4809</span>                .getName())) {<a name="line.4809"></a>
-<span class="sourceLineNo">4810</span>              skippedEdits++;<a name="line.4810"></a>
-<span class="sourceLineNo">4811</span>              continue;<a name="line.4811"></a>
-<span class="sourceLineNo">4812</span>            }<a name="line.4812"></a>
-<span class="sourceLineNo">4813</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4813"></a>
-<span class="sourceLineNo">4814</span><a name="line.4814"></a>
-<span class="sourceLineNo">4815</span>            restoreEdit(store, cell, memStoreSizing);<a name="line.4815"></a>
-<span class="sourceLineNo">4816</span>            editsCount++;<a name="line.4816"></a>
-<span class="sourceLineNo">4817</span>          }<a name="line.4817"></a>
-<span class="sourceLineNo">4818</span>          MemStoreSize mss = memStoreSizing.getMemStoreSize();<a name="line.4818"></a>
-<span class="sourceLineNo">4819</span>          incMemStoreSize(mss);<a name="line.4819"></a>
-<span class="sourceLineNo">4820</span>          flush = isFlushSize(this.memStoreSizing.getMemStoreSize());<a name="line.4820"></a>
-<span class="sourceLineNo">4821</span>          if (flush) {<a name="line.4821"></a>
-<span class="sourceLineNo">4822</span>            internalFlushcache(null, currentEditSeqId, stores.values(), status, false,<a name="line.4822"></a>
-<span class="sourceLineNo">4823</span>              FlushLifeCycleTracker.DUMMY);<a name="line.4823"></a>
-<span class="sourceLineNo">4824</span>          }<a name="line.4824"></a>
-<span class="sourceLineNo">4825</span><a name="line.4825"></a>
-<span class="sourceLineNo">4826</span>          if (coprocessorHost != null) {<a name="line.4826"></a>
-<span class="sourceLineNo">4827</span>            coprocessorHost.postWALRestore(this.getRegionInfo(), key, val);<a name="line.4827"></a>
-<span class="sourceLineNo">4828</span>          }<a name="line.4828"></a>
-<span class="sourceLineNo">4829</span>        }<a name="line.4829"></a>
+<span class="sourceLineNo">4771</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4771"></a>
+<span class="sourceLineNo">4772</span>          // instead of a KeyValue.<a name="line.4772"></a>
+<span class="sourceLineNo">4773</span>          if (coprocessorHost != null) {<a name="line.4773"></a>
+<span class="sourceLineNo">4774</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4774"></a>
+<span class="sourceLineNo">4775</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4775"></a>
+<span class="sourceLineNo">4776</span>              // if bypass this wal entry, ignore it ...<a name="line.4776"></a>
+<span class="sourceLineNo">4777</span>              continue;<a name="line.4777"></a>
+<span class="sourceLineNo">4778</span>            }<a name="line.4778"></a>
+<span class="sourceLineNo">4779</span>          }<a name="line.4779"></a>
+<span class="sourceLineNo">4780</span>          boolean checkRowWithinBoundary = false;<a name="line.4780"></a>
+<span class="sourceLineNo">4781</span>          // Check this edit is for this region.<a name="line.4781"></a>
+<span class="sourceLineNo">4782</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4782"></a>
+<span class="sourceLineNo">4783</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4783"></a>
+<span class="sourceLineNo">4784</span>            checkRowWithinBoundary = true;<a name="line.4784"></a>
+<span class="sourceLineNo">4785</span>          }<a name="line.4785"></a>
+<span class="sourceLineNo">4786</span><a name="line.4786"></a>
+<span class="sourceLineNo">4787</span>          boolean flush = false;<a name="line.4787"></a>
+<span class="sourceLineNo">4788</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4788"></a>
+<span class="sourceLineNo">4789</span>          for (Cell cell: val.getCells()) {<a name="line.4789"></a>
+<span class="sourceLineNo">4790</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4790"></a>
+<span class="sourceLineNo">4791</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4791"></a>
+<span class="sourceLineNo">4792</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4792"></a>
+<span class="sourceLineNo">4793</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4793"></a>
+<span class="sourceLineNo">4794</span>              if (!checkRowWithinBoundary) {<a name="line.4794"></a>
+<span class="sourceLineNo">4795</span>                //this is a special edit, we should handle it<a name="line.4795"></a>
+<span class="sourceLineNo">4796</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4796"></a>
+<span class="sourceLineNo">4797</span>                if (compaction != null) {<a name="line.4797"></a>
+<span class="sourceLineNo">4798</span>                  //replay the compaction<a name="line.4798"></a>
+<span class="sourceLineNo">4799</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4799"></a>
+<span class="sourceLineNo">4800</span>                }<a name="line.4800"></a>
+<span class="sourceLineNo">4801</span>              }<a name="line.4801"></a>
+<span class="sourceLineNo">4802</span>              skippedEdits++;<a name="line.4802"></a>
+<span class="sourceLineNo">4803</span>              continue;<a name="line.4803"></a>
+<span class="sourceLineNo">4804</span>            }<a name="line.4804"></a>
+<span class="sourceLineNo">4805</span>            // Figure which store the edit is meant for.<a name="line.4805"></a>
+<span class="sourceLineNo">4806</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4806"></a>
+<span class="sourceLineNo">4807</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4807"></a>
+<span class="sourceLineNo">4808</span>              store = getStore(cell);<a name="line.4808"></a>
+<span class="sourceLineNo">4809</span>            }<a name="line.4809"></a>
+<span class="sourceLineNo">4810</span>            if (store == null) {<a name="line.4810"></a>
+<span class="sourceLineNo">4811</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4811"></a>
+<span class="sourceLineNo">4812</span>              // crash and redeploy?<a name="line.4812"></a>
+<span class="sourceLineNo">4813</span>              LOG.warn("No family for " + cell);<a name="line.4813"></a>
+<span class="sourceLineNo">4814</span>              skippedEdits++;<a name="line.4814"></a>
+<span class="sourceLineNo">4815</span>              continue;<a name="line.4815"></a>
+<span class="sourceLineNo">4816</span>            }<a name="line.4816"></a>
+<span class="sourceLineNo">4817</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4817"></a>
+<span class="sourceLineNo">4818</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4818"></a>
+<span class="sourceLineNo">4819</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4819"></a>
+<span class="sourceLineNo">4820</span>              skippedEdits++;<a name="line.4820"></a>
+<span class="sourceLineNo">4821</span>              continue;<a name="line.4821"></a>
+<span class="sourceLineNo">4822</span>            }<a name="line.4822"></a>
+<span class="sourceLineNo">4823</span>            // Now, figure if we should skip this edit.<a name="line.4823"></a>
+<span class="sourceLineNo">4824</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4824"></a>
+<span class="sourceLineNo">4825</span>                .getName())) {<a name="line.4825"></a>
+<span class="sourceLineNo">4826</span>              skippedEdits++;<a name="line.4826"></a>
+<span class="sourceLineNo">4827</span>              continue;<a name="line.4827"></a>
+<span class="sourceLineNo">4828</span>            }<a name="line.4828"></a>
+<span class="sourceLineNo">4829</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4829"></a>
 <span class="sourceLineNo">4830</span><a name="line.4830"></a>
-<span class="sourceLineNo">4831</span>        if (coprocessorHost != null) {<a name="line.4831"></a>
-<span class="sourceLineNo">4832</span>          coprocessorHost.postReplayWALs(this.getRegionInfo(), edits);<a name="line.4832"></a>
-<span class="sourceLineNo">4833</span>        }<a name="line.4833"></a>
-<span class="sourceLineNo">4834</span>      } catch (EOFException eof) {<a name="line.4834"></a>
-<span class="sourceLineNo">4835</span>        Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4835"></a>
-<span class="sourceLineNo">4836</span>        msg = "EnLongAddered EOF. Most likely due to Master failure during " +<a name="line.4836"></a>
-<span class="sourceLineNo">4837</span>            "wal splitting, so we have this data in another edit.  " +<a name="line.4837"></a>
-<span class="sourceLineNo">4838</span>            "Continuing, but renaming " + edits + " as " + p;<a name="line.4838"></a>
-<span class="sourceLineNo">4839</span>        LOG.warn(msg, eof);<a name="line.4839"></a>
-<span class="sourceLineNo">4840</span>        status.abort(msg);<a name="line.4840"></a>
-<span class="sourceLineNo">4841</span>      } catch (IOException ioe) {<a name="line.4841"></a>
-<span class="sourceLineNo">4842</span>        // If the IOE resulted from bad file format,<a name="line.4842"></a>
-<span class="sourceLineNo">4843</span>        // then this problem is idempotent and retrying won't help<a name="line.4843"></a>
-<span class="sourceLineNo">4844</span>        if (ioe.getCause() instanceof ParseException) {<a name="line.4844"></a>
-<span class="sourceLineNo">4845</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4845"></a>
-<span class="sourceLineNo">4846</span>          msg = "File corruption enLongAddered!  " +<a name="line.4846"></a>
-<span class="sourceLineNo">4847</span>              "Continuing, but renaming " + edits + " as " + p;<a name="line.4847"></a>
-<span class="sourceLineNo">4848</span>          LOG.warn(msg, ioe);<a name="line.4848"></a>
-<span class="sourceLineNo">4849</span>          status.setStatus(msg);<a name="line.4849"></a>
-<span class="sourceLineNo">4850</span>        } else {<a name="line.4850"></a>
-<span class="sourceLineNo">4851</span>          status.abort(StringUtils.stringifyException(ioe));<a name="line.4851"></a>
-<span class="sourceLineNo">4852</span>          // other IO errors may be transient (bad network connection,<a name="line.4852"></a>
-<span class="sourceLineNo">4853</span>          // checksum exception on one datanode, etc).  throw &amp; retry<a name="line.4853"></a>
-<span class="sourceLineNo">4854</span>          throw ioe;<a name="line.4854"></a>
-<span class="sourceLineNo">4855</span>        }<a name="line.4855"></a>
-<span class="sourceLineNo">4856</span>      }<a name="line.4856"></a>
-<span class="sourceLineNo">4857</span>      if (reporter != null &amp;&amp; !reported_once) {<a name="line.4857"></a>
-<span class="sourceLineNo">4858</span>        reporter.progress();<a name="line.4858"></a>
-<span class="sourceLineNo">4859</span>      }<a name="line.4859"></a>
-<span class="sourceLineNo">4860</span>      msg = "Applied " + editsCount + ", skipped " + skippedEdits +<a name="line.4860"></a>
-<span class="sourceLineNo">4861</span>        ", firstSequenceIdInLog=" + firstSeqIdInLog +<a name="line.4861"></a>
-<span class="sourceLineNo">4862</span>        ", maxSequenceIdInLog=" + currentEditSeqId + ", path=" + edits;<a name="line.4862"></a>
-<span class="sourceLineNo">4863</span>      status.markComplete(msg);<a name="line.4863"></a>
-<span class="sourceLineNo">4864</span>      LOG.debug(msg);<a name="line.4864"></a>
-<span class="sourceLineNo">4865</span>      return currentEditSeqId;<a name="line.4865"></a>
-<span class="sourceLineNo">4866</span>    } finally {<a name="line.4866"></a>
-<span class="sourceLineNo">4867</span>      status.cleanup();<a name="line.4867"></a>
-<span class="sourceLineNo">4868</span>      if (reader != null) {<a name="line.4868"></a>
-<span class="sourceLineNo">4869</span>         reader.close();<a name="line.4869"></a>
-<span class="sourceLineNo">4870</span>      }<a name="line.4870"></a>
-<span class="sourceLineNo">4871</span>    }<a name="line.4871"></a>
-<span class="sourceLineNo">4872</span>  }<a name="line.4872"></a>
-<span class="sourceLineNo">4873</span><a name="line.4873"></a>
-<span class="sourceLineNo">4874</span>  /**<a name="line.4874"></a>
-<span class="sourceLineNo">4875</span>   * Call to complete a compaction. Its for the case where we find in the WAL a compaction<a name="line.4875"></a>
-<span class="sourceLineNo">4876</span>   * that was not finished.  We could find one recovering a WAL after a regionserver crash.<a name="line.4876"></a>
-<span class="sourceLineNo">4877</span>   * See HBASE-2331.<a name="line.4877"></a>
-<span class="sourceLineNo">4878</span>   */<a name="line.4878"></a>
-<span class="sourceLineNo">4879</span>  void replayWALCompactionMarker(CompactionDescriptor compaction, boolean pickCompactionFiles,<a name="line.4879"></a>
-<span class="sourceLineNo">4880</span>      boolean removeFiles, long replaySeqId)<a name="line.4880"></a>
-<span class="sourceLineNo">4881</span>      throws IOException {<a name="line.4881"></a>
-<span class="sourceLineNo">4882</span>    try {<a name="line.4882"></a>
-<span class="sourceLineNo">4883</span>      checkTargetRegion(compaction.getEncodedRegionName().toByteArray(),<a name="line.4883"></a>
-<span class="sourceLineNo">4884</span>        "Compaction marker from WAL ", compaction);<a name="line.4884"></a>
-<span class="sourceLineNo">4885</span>    } catch (WrongRegionException wre) {<a name="line.4885"></a>
-<span class="sourceLineNo">4886</span>      if (RegionReplicaUtil.isDefaultReplica(this.getRegionInfo())) {<a name="line.4886"></a>
-<span class="sourceLineNo">4887</span>        // skip the compaction marker since it is not for this region<a name="line.4887"></a>
-<span class="sourceLineNo">4888</span>        return;<a name="line.4888"></a>
-<span class="sourceLineNo">4889</span>      }<a name="line.4889"></a>
-<span class="sourceLineNo">4890</span>      throw wre;<a name="line.4890"></a>
-<span class="sourceLineNo">4891</span>    }<a name="line.4891"></a>
-<span class="sourceLineNo">4892</span><a name="line.4892"></a>
-<span class="sourceLineNo">4893</span>    synchronized (writestate) {<a name="line.4893"></a>
-<span class="sourceLineNo">4894</span>      if (replaySeqId &lt; lastReplayedOpenRegionSeqId) {<a name="line.4894"></a>
-<span class="sourceLineNo">4895</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4895"></a>
-<span class="sourceLineNo">4896</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4896"></a>
-<span class="sourceLineNo">4897</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4897"></a>
-<span class="sourceLineNo">4898</span>            + "lastReplayedOpenRegionSeqId of " + lastReplayedOpenRegionSeqId);<a name="line.4898"></a>
-<span class="sourceLineNo">4899</span>        return;<a name="line.4899"></a>
-<span class="sourceLineNo">4900</span>      }<a name="line.4900"></a>
-<span class="sourceLineNo">4901</span>      if (replaySeqId &lt; lastReplayedCompactionSeqId) {<a name="line.4901"></a>
-<span class="sourceLineNo">4902</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4902"></a>
-<span class="sourceLineNo">4903</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4903"></a>
-<span class="sourceLineNo">4904</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4904"></a>
-<span class="sourceLineNo">4905</span>            + "lastReplayedCompactionSeqId of " + lastReplayedCompactionSeqId);<a name="line.4905"></a>
-<span class="sourceLineNo">4906</span>        return;<a name="line.4906"></a>
-<span class="sourceLineNo">4907</span>      } else {<a name="line.4907"></a>
-<span class="sourceLineNo">4908</span>        lastReplayedCompactionSeqId = replaySeqId;<a name="line

<TRUNCATED>

[12/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 da040ad..d6702a7 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
@@ -2957,7 +2957,7 @@
 <span class="sourceLineNo">2949</span>        if(family == null) {<a name="line.2949"></a>
 <span class="sourceLineNo">2950</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2950"></a>
 <span class="sourceLineNo">2951</span>        }<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>        checkFamily(family);<a name="line.2952"></a>
+<span class="sourceLineNo">2952</span>        checkFamily(family, delete.getDurability());<a name="line.2952"></a>
 <span class="sourceLineNo">2953</span>      }<a name="line.2953"></a>
 <span class="sourceLineNo">2954</span>    }<a name="line.2954"></a>
 <span class="sourceLineNo">2955</span>  }<a name="line.2955"></a>
@@ -3569,7 +3569,7 @@
 <span class="sourceLineNo">3561</span><a name="line.3561"></a>
 <span class="sourceLineNo">3562</span>    @Override<a name="line.3562"></a>
 <span class="sourceLineNo">3563</span>    public void checkAndPreparePut(Put p) throws IOException {<a name="line.3563"></a>
-<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet());<a name="line.3564"></a>
+<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet(), p.getDurability());<a name="line.3564"></a>
 <span class="sourceLineNo">3565</span>    }<a name="line.3565"></a>
 <span class="sourceLineNo">3566</span><a name="line.3566"></a>
 <span class="sourceLineNo">3567</span>    @Override<a name="line.3567"></a>
@@ -4462,4304 +4462,4307 @@
 <span class="sourceLineNo">4454</span>    store.add(cell, memstoreAccounting);<a name="line.4454"></a>
 <span class="sourceLineNo">4455</span>  }<a name="line.4455"></a>
 <span class="sourceLineNo">4456</span><a name="line.4456"></a>
-<span class="sourceLineNo">4457</span>  /**<a name="line.4457"></a>
-<span class="sourceLineNo">4458</span>   * Check the collection of families for validity.<a name="line.4458"></a>
-<span class="sourceLineNo">4459</span>   * @param families<a name="line.4459"></a>
-<span class="sourceLineNo">4460</span>   * @throws NoSuchColumnFamilyException<a name="line.4460"></a>
-<span class="sourceLineNo">4461</span>   */<a name="line.4461"></a>
-<span class="sourceLineNo">4462</span>  public void checkFamilies(Collection&lt;byte[]&gt; families) throws NoSuchColumnFamilyException {<a name="line.4462"></a>
-<span class="sourceLineNo">4463</span>    for (byte[] family : families) {<a name="line.4463"></a>
-<span class="sourceLineNo">4464</span>      checkFamily(family);<a name="line.4464"></a>
-<span class="sourceLineNo">4465</span>    }<a name="line.4465"></a>
-<span class="sourceLineNo">4466</span>  }<a name="line.4466"></a>
-<span class="sourceLineNo">4467</span><a name="line.4467"></a>
-<span class="sourceLineNo">4468</span>  /**<a name="line.4468"></a>
-<span class="sourceLineNo">4469</span>   * Check the collection of families for valid timestamps<a name="line.4469"></a>
-<span class="sourceLineNo">4470</span>   * @param familyMap<a name="line.4470"></a>
-<span class="sourceLineNo">4471</span>   * @param now current timestamp<a name="line.4471"></a>
-<span class="sourceLineNo">4472</span>   * @throws FailedSanityCheckException<a name="line.4472"></a>
-<span class="sourceLineNo">4473</span>   */<a name="line.4473"></a>
-<span class="sourceLineNo">4474</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4474"></a>
-<span class="sourceLineNo">4475</span>      throws FailedSanityCheckException {<a name="line.4475"></a>
-<span class="sourceLineNo">4476</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4476"></a>
-<span class="sourceLineNo">4477</span>      return;<a name="line.4477"></a>
-<span class="sourceLineNo">4478</span>    }<a name="line.4478"></a>
-<span class="sourceLineNo">4479</span>    long maxTs = now + timestampSlop;<a name="line.4479"></a>
-<span class="sourceLineNo">4480</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4480"></a>
-<span class="sourceLineNo">4481</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4481"></a>
-<span class="sourceLineNo">4482</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4482"></a>
-<span class="sourceLineNo">4483</span>      assert kvs instanceof RandomAccess;<a name="line.4483"></a>
-<span class="sourceLineNo">4484</span>      int listSize  = kvs.size();<a name="line.4484"></a>
-<span class="sourceLineNo">4485</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4485"></a>
-<span class="sourceLineNo">4486</span>        Cell cell = kvs.get(i);<a name="line.4486"></a>
-<span class="sourceLineNo">4487</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4487"></a>
-<span class="sourceLineNo">4488</span>        long ts = cell.getTimestamp();<a name="line.4488"></a>
-<span class="sourceLineNo">4489</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4489"></a>
-<span class="sourceLineNo">4490</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4490"></a>
-<span class="sourceLineNo">4491</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4491"></a>
-<span class="sourceLineNo">4492</span>        }<a name="line.4492"></a>
-<span class="sourceLineNo">4493</span>      }<a name="line.4493"></a>
+<span class="sourceLineNo">4457</span>  private void checkFamilies(Collection&lt;byte[]&gt; families, Durability durability)<a name="line.4457"></a>
+<span class="sourceLineNo">4458</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4458"></a>
+<span class="sourceLineNo">4459</span>    for (byte[] family : families) {<a name="line.4459"></a>
+<span class="sourceLineNo">4460</span>      checkFamily(family, durability);<a name="line.4460"></a>
+<span class="sourceLineNo">4461</span>    }<a name="line.4461"></a>
+<span class="sourceLineNo">4462</span>  }<a name="line.4462"></a>
+<span class="sourceLineNo">4463</span><a name="line.4463"></a>
+<span class="sourceLineNo">4464</span>  private void checkFamily(final byte[] family, Durability durability)<a name="line.4464"></a>
+<span class="sourceLineNo">4465</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4465"></a>
+<span class="sourceLineNo">4466</span>    checkFamily(family);<a name="line.4466"></a>
+<span class="sourceLineNo">4467</span>    if (durability.equals(Durability.SKIP_WAL)<a name="line.4467"></a>
+<span class="sourceLineNo">4468</span>        &amp;&amp; htableDescriptor.getColumnFamily(family).getScope()<a name="line.4468"></a>
+<span class="sourceLineNo">4469</span>        != HConstants.REPLICATION_SCOPE_LOCAL) {<a name="line.4469"></a>
+<span class="sourceLineNo">4470</span>      throw new InvalidMutationDurabilityException(<a name="line.4470"></a>
+<span class="sourceLineNo">4471</span>          "Mutation's durability is SKIP_WAL but table's column family " + Bytes.toString(family)<a name="line.4471"></a>
+<span class="sourceLineNo">4472</span>              + " need replication");<a name="line.4472"></a>
+<span class="sourceLineNo">4473</span>    }<a name="line.4473"></a>
+<span class="sourceLineNo">4474</span>  }<a name="line.4474"></a>
+<span class="sourceLineNo">4475</span><a name="line.4475"></a>
+<span class="sourceLineNo">4476</span>  void checkFamily(final byte[] family) throws NoSuchColumnFamilyException {<a name="line.4476"></a>
+<span class="sourceLineNo">4477</span>    if (!this.htableDescriptor.hasColumnFamily(family)) {<a name="line.4477"></a>
+<span class="sourceLineNo">4478</span>      throw new NoSuchColumnFamilyException(<a name="line.4478"></a>
+<span class="sourceLineNo">4479</span>          "Column family " + Bytes.toString(family) + " does not exist in region " + this<a name="line.4479"></a>
+<span class="sourceLineNo">4480</span>              + " in table " + this.htableDescriptor);<a name="line.4480"></a>
+<span class="sourceLineNo">4481</span>    }<a name="line.4481"></a>
+<span class="sourceLineNo">4482</span>  }<a name="line.4482"></a>
+<span class="sourceLineNo">4483</span><a name="line.4483"></a>
+<span class="sourceLineNo">4484</span>  /**<a name="line.4484"></a>
+<span class="sourceLineNo">4485</span>   * Check the collection of families for valid timestamps<a name="line.4485"></a>
+<span class="sourceLineNo">4486</span>   * @param familyMap<a name="line.4486"></a>
+<span class="sourceLineNo">4487</span>   * @param now current timestamp<a name="line.4487"></a>
+<span class="sourceLineNo">4488</span>   * @throws FailedSanityCheckException<a name="line.4488"></a>
+<span class="sourceLineNo">4489</span>   */<a name="line.4489"></a>
+<span class="sourceLineNo">4490</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4490"></a>
+<span class="sourceLineNo">4491</span>      throws FailedSanityCheckException {<a name="line.4491"></a>
+<span class="sourceLineNo">4492</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4492"></a>
+<span class="sourceLineNo">4493</span>      return;<a name="line.4493"></a>
 <span class="sourceLineNo">4494</span>    }<a name="line.4494"></a>
-<span class="sourceLineNo">4495</span>  }<a name="line.4495"></a>
-<span class="sourceLineNo">4496</span><a name="line.4496"></a>
-<span class="sourceLineNo">4497</span>  /*<a name="line.4497"></a>
-<span class="sourceLineNo">4498</span>   * @param size<a name="line.4498"></a>
-<span class="sourceLineNo">4499</span>   * @return True if size is over the flush threshold<a name="line.4499"></a>
-<span class="sourceLineNo">4500</span>   */<a name="line.4500"></a>
-<span class="sourceLineNo">4501</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4501"></a>
-<span class="sourceLineNo">4502</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4502"></a>
-<span class="sourceLineNo">4503</span>  }<a name="line.4503"></a>
-<span class="sourceLineNo">4504</span><a name="line.4504"></a>
-<span class="sourceLineNo">4505</span>  /**<a name="line.4505"></a>
-<span class="sourceLineNo">4506</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4506"></a>
-<span class="sourceLineNo">4507</span>   * the recovered edits back up into this region.<a name="line.4507"></a>
-<span class="sourceLineNo">4508</span>   *<a name="line.4508"></a>
-<span class="sourceLineNo">4509</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4509"></a>
-<span class="sourceLineNo">4510</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4510"></a>
-<span class="sourceLineNo">4511</span>   * reflected in the HFiles.)<a name="line.4511"></a>
-<span class="sourceLineNo">4512</span>   *<a name="line.4512"></a>
-<span class="sourceLineNo">4513</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4513"></a>
-<span class="sourceLineNo">4514</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4514"></a>
-<span class="sourceLineNo">4515</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4515"></a>
-<span class="sourceLineNo">4516</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4516"></a>
-<span class="sourceLineNo">4517</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4517"></a>
-<span class="sourceLineNo">4518</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4518"></a>
-<span class="sourceLineNo">4519</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4519"></a>
-<span class="sourceLineNo">4520</span>   * edits.<a name="line.4520"></a>
-<span class="sourceLineNo">4521</span>   *<a name="line.4521"></a>
-<span class="sourceLineNo">4522</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4522"></a>
-<span class="sourceLineNo">4523</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4523"></a>
-<span class="sourceLineNo">4524</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4524"></a>
-<span class="sourceLineNo">4525</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4525"></a>
-<span class="sourceLineNo">4526</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4526"></a>
-<span class="sourceLineNo">4527</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4527"></a>
-<span class="sourceLineNo">4528</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4528"></a>
-<span class="sourceLineNo">4529</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4529"></a>
-<span class="sourceLineNo">4530</span>   * make sense in a this single region context only -- until we online.<a name="line.4530"></a>
-<span class="sourceLineNo">4531</span>   *<a name="line.4531"></a>
-<span class="sourceLineNo">4532</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4532"></a>
-<span class="sourceLineNo">4533</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4533"></a>
-<span class="sourceLineNo">4534</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4534"></a>
-<span class="sourceLineNo">4535</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4535"></a>
-<span class="sourceLineNo">4536</span>   * @throws IOException<a name="line.4536"></a>
-<span class="sourceLineNo">4537</span>   */<a name="line.4537"></a>
-<span class="sourceLineNo">4538</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4538"></a>
-<span class="sourceLineNo">4539</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4539"></a>
-<span class="sourceLineNo">4540</span>      throws IOException {<a name="line.4540"></a>
-<span class="sourceLineNo">4541</span>    long minSeqIdForTheRegion = -1;<a name="line.4541"></a>
-<span class="sourceLineNo">4542</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4542"></a>
-<span class="sourceLineNo">4543</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4543"></a>
-<span class="sourceLineNo">4544</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4544"></a>
-<span class="sourceLineNo">4545</span>      }<a name="line.4545"></a>
-<span class="sourceLineNo">4546</span>    }<a name="line.4546"></a>
-<span class="sourceLineNo">4547</span>    long seqid = minSeqIdForTheRegion;<a name="line.4547"></a>
-<span class="sourceLineNo">4548</span><a name="line.4548"></a>
-<span class="sourceLineNo">4549</span>    FileSystem walFS = getWalFileSystem();<a name="line.4549"></a>
-<span class="sourceLineNo">4550</span>    FileSystem rootFS = getFilesystem();<a name="line.4550"></a>
-<span class="sourceLineNo">4551</span>    Path regionDir = getWALRegionDir();<a name="line.4551"></a>
-<span class="sourceLineNo">4552</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4552"></a>
-<span class="sourceLineNo">4553</span><a name="line.4553"></a>
-<span class="sourceLineNo">4554</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4554"></a>
-<span class="sourceLineNo">4555</span>    // under the root dir even if walDir is set.<a name="line.4555"></a>
-<span class="sourceLineNo">4556</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4556"></a>
-<span class="sourceLineNo">4557</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4557"></a>
-<span class="sourceLineNo">4558</span>      filesUnderRootDir =<a name="line.4558"></a>
-<span class="sourceLineNo">4559</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4559"></a>
-<span class="sourceLineNo">4560</span>      seqid = Math.max(seqid,<a name="line.4560"></a>
-<span class="sourceLineNo">4561</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4561"></a>
-<span class="sourceLineNo">4562</span>              defaultRegionDir));<a name="line.4562"></a>
-<span class="sourceLineNo">4563</span>    }<a name="line.4563"></a>
+<span class="sourceLineNo">4495</span>    long maxTs = now + timestampSlop;<a name="line.4495"></a>
+<span class="sourceLineNo">4496</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4496"></a>
+<span class="sourceLineNo">4497</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4497"></a>
+<span class="sourceLineNo">4498</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4498"></a>
+<span class="sourceLineNo">4499</span>      assert kvs instanceof RandomAccess;<a name="line.4499"></a>
+<span class="sourceLineNo">4500</span>      int listSize  = kvs.size();<a name="line.4500"></a>
+<span class="sourceLineNo">4501</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4501"></a>
+<span class="sourceLineNo">4502</span>        Cell cell = kvs.get(i);<a name="line.4502"></a>
+<span class="sourceLineNo">4503</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4503"></a>
+<span class="sourceLineNo">4504</span>        long ts = cell.getTimestamp();<a name="line.4504"></a>
+<span class="sourceLineNo">4505</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4505"></a>
+<span class="sourceLineNo">4506</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4506"></a>
+<span class="sourceLineNo">4507</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4507"></a>
+<span class="sourceLineNo">4508</span>        }<a name="line.4508"></a>
+<span class="sourceLineNo">4509</span>      }<a name="line.4509"></a>
+<span class="sourceLineNo">4510</span>    }<a name="line.4510"></a>
+<span class="sourceLineNo">4511</span>  }<a name="line.4511"></a>
+<span class="sourceLineNo">4512</span><a name="line.4512"></a>
+<span class="sourceLineNo">4513</span>  /*<a name="line.4513"></a>
+<span class="sourceLineNo">4514</span>   * @param size<a name="line.4514"></a>
+<span class="sourceLineNo">4515</span>   * @return True if size is over the flush threshold<a name="line.4515"></a>
+<span class="sourceLineNo">4516</span>   */<a name="line.4516"></a>
+<span class="sourceLineNo">4517</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4517"></a>
+<span class="sourceLineNo">4518</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4518"></a>
+<span class="sourceLineNo">4519</span>  }<a name="line.4519"></a>
+<span class="sourceLineNo">4520</span><a name="line.4520"></a>
+<span class="sourceLineNo">4521</span>  /**<a name="line.4521"></a>
+<span class="sourceLineNo">4522</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4522"></a>
+<span class="sourceLineNo">4523</span>   * the recovered edits back up into this region.<a name="line.4523"></a>
+<span class="sourceLineNo">4524</span>   *<a name="line.4524"></a>
+<span class="sourceLineNo">4525</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4525"></a>
+<span class="sourceLineNo">4526</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4526"></a>
+<span class="sourceLineNo">4527</span>   * reflected in the HFiles.)<a name="line.4527"></a>
+<span class="sourceLineNo">4528</span>   *<a name="line.4528"></a>
+<span class="sourceLineNo">4529</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4529"></a>
+<span class="sourceLineNo">4530</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4530"></a>
+<span class="sourceLineNo">4531</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4531"></a>
+<span class="sourceLineNo">4532</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4532"></a>
+<span class="sourceLineNo">4533</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4533"></a>
+<span class="sourceLineNo">4534</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4534"></a>
+<span class="sourceLineNo">4535</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4535"></a>
+<span class="sourceLineNo">4536</span>   * edits.<a name="line.4536"></a>
+<span class="sourceLineNo">4537</span>   *<a name="line.4537"></a>
+<span class="sourceLineNo">4538</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4538"></a>
+<span class="sourceLineNo">4539</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4539"></a>
+<span class="sourceLineNo">4540</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4540"></a>
+<span class="sourceLineNo">4541</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4541"></a>
+<span class="sourceLineNo">4542</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4542"></a>
+<span class="sourceLineNo">4543</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4543"></a>
+<span class="sourceLineNo">4544</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4544"></a>
+<span class="sourceLineNo">4545</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4545"></a>
+<span class="sourceLineNo">4546</span>   * make sense in a this single region context only -- until we online.<a name="line.4546"></a>
+<span class="sourceLineNo">4547</span>   *<a name="line.4547"></a>
+<span class="sourceLineNo">4548</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4548"></a>
+<span class="sourceLineNo">4549</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4549"></a>
+<span class="sourceLineNo">4550</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4550"></a>
+<span class="sourceLineNo">4551</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4551"></a>
+<span class="sourceLineNo">4552</span>   * @throws IOException<a name="line.4552"></a>
+<span class="sourceLineNo">4553</span>   */<a name="line.4553"></a>
+<span class="sourceLineNo">4554</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4554"></a>
+<span class="sourceLineNo">4555</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4555"></a>
+<span class="sourceLineNo">4556</span>      throws IOException {<a name="line.4556"></a>
+<span class="sourceLineNo">4557</span>    long minSeqIdForTheRegion = -1;<a name="line.4557"></a>
+<span class="sourceLineNo">4558</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4558"></a>
+<span class="sourceLineNo">4559</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4559"></a>
+<span class="sourceLineNo">4560</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4560"></a>
+<span class="sourceLineNo">4561</span>      }<a name="line.4561"></a>
+<span class="sourceLineNo">4562</span>    }<a name="line.4562"></a>
+<span class="sourceLineNo">4563</span>    long seqid = minSeqIdForTheRegion;<a name="line.4563"></a>
 <span class="sourceLineNo">4564</span><a name="line.4564"></a>
-<span class="sourceLineNo">4565</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4565"></a>
-<span class="sourceLineNo">4566</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4566"></a>
-<span class="sourceLineNo">4567</span>        files, reporter, regionDir));<a name="line.4567"></a>
-<span class="sourceLineNo">4568</span><a name="line.4568"></a>
-<span class="sourceLineNo">4569</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4569"></a>
-<span class="sourceLineNo">4570</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4570"></a>
-<span class="sourceLineNo">4571</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4571"></a>
-<span class="sourceLineNo">4572</span>    }<a name="line.4572"></a>
-<span class="sourceLineNo">4573</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4573"></a>
-<span class="sourceLineNo">4574</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4574"></a>
-<span class="sourceLineNo">4575</span>      // For debugging data loss issues!<a name="line.4575"></a>
-<span class="sourceLineNo">4576</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4576"></a>
-<span class="sourceLineNo">4577</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4577"></a>
-<span class="sourceLineNo">4578</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4578"></a>
-<span class="sourceLineNo">4579</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4579"></a>
-<span class="sourceLineNo">4580</span>      for (Path file: files) {<a name="line.4580"></a>
-<span class="sourceLineNo">4581</span>        fakeStoreFiles.add(<a name="line.4581"></a>
-<span class="sourceLineNo">4582</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4582"></a>
-<span class="sourceLineNo">4583</span>      }<a name="line.4583"></a>
-<span class="sourceLineNo">4584</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4584"></a>
-<span class="sourceLineNo">4585</span>    } else {<a name="line.4585"></a>
-<span class="sourceLineNo">4586</span>      if (filesUnderRootDir != null) {<a name="line.4586"></a>
-<span class="sourceLineNo">4587</span>        for (Path file : filesUnderRootDir) {<a name="line.4587"></a>
-<span class="sourceLineNo">4588</span>          if (!rootFS.delete(file, false)) {<a name="line.4588"></a>
-<span class="sourceLineNo">4589</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4589"></a>
-<span class="sourceLineNo">4590</span>          } else {<a name="line.4590"></a>
-<span class="sourceLineNo">4591</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4591"></a>
-<span class="sourceLineNo">4592</span>          }<a name="line.4592"></a>
-<span class="sourceLineNo">4593</span>        }<a name="line.4593"></a>
-<span class="sourceLineNo">4594</span>      }<a name="line.4594"></a>
-<span class="sourceLineNo">4595</span>      for (Path file: files) {<a name="line.4595"></a>
-<span class="sourceLineNo">4596</span>        if (!walFS.delete(file, false)) {<a name="line.4596"></a>
-<span class="sourceLineNo">4597</span>          LOG.error("Failed delete of " + file);<a name="line.4597"></a>
-<span class="sourceLineNo">4598</span>        } else {<a name="line.4598"></a>
-<span class="sourceLineNo">4599</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4599"></a>
-<span class="sourceLineNo">4600</span>        }<a name="line.4600"></a>
-<span class="sourceLineNo">4601</span>      }<a name="line.4601"></a>
-<span class="sourceLineNo">4602</span>    }<a name="line.4602"></a>
-<span class="sourceLineNo">4603</span>    return seqid;<a name="line.4603"></a>
-<span class="sourceLineNo">4604</span>  }<a name="line.4604"></a>
-<span class="sourceLineNo">4605</span><a name="line.4605"></a>
-<span class="sourceLineNo">4606</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4606"></a>
-<span class="sourceLineNo">4607</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4607"></a>
-<span class="sourceLineNo">4608</span>      throws IOException {<a name="line.4608"></a>
-<span class="sourceLineNo">4609</span>    long seqid = minSeqIdForTheRegion;<a name="line.4609"></a>
-<span class="sourceLineNo">4610</span>    if (LOG.isDebugEnabled()) {<a name="line.4610"></a>
-<span class="sourceLineNo">4611</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4611"></a>
-<span class="sourceLineNo">4612</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4612"></a>
-<span class="sourceLineNo">4613</span>    }<a name="line.4613"></a>
-<span class="sourceLineNo">4614</span><a name="line.4614"></a>
-<span class="sourceLineNo">4615</span>    if (files == null || files.isEmpty()) {<a name="line.4615"></a>
-<span class="sourceLineNo">4616</span>      return minSeqIdForTheRegion;<a name="line.4616"></a>
-<span class="sourceLineNo">4617</span>    }<a name="line.4617"></a>
-<span class="sourceLineNo">4618</span><a name="line.4618"></a>
-<span class="sourceLineNo">4619</span>    for (Path edits: files) {<a name="line.4619"></a>
-<span class="sourceLineNo">4620</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4620"></a>
-<span class="sourceLineNo">4621</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4621"></a>
-<span class="sourceLineNo">4622</span>        continue;<a name="line.4622"></a>
-<span class="sourceLineNo">4623</span>      }<a name="line.4623"></a>
-<span class="sourceLineNo">4624</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4624"></a>
-<span class="sourceLineNo">4625</span><a name="line.4625"></a>
-<span class="sourceLineNo">4626</span>      long maxSeqId;<a name="line.4626"></a>
-<span class="sourceLineNo">4627</span>      String fileName = edits.getName();<a name="line.4627"></a>
-<span class="sourceLineNo">4628</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4628"></a>
-<span class="sourceLineNo">4629</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4629"></a>
-<span class="sourceLineNo">4630</span>        if (LOG.isDebugEnabled()) {<a name="line.4630"></a>
-<span class="sourceLineNo">4631</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4631"></a>
-<span class="sourceLineNo">4632</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4632"></a>
-<span class="sourceLineNo">4633</span>              + ", skipped the whole file, path=" + edits;<a name="line.4633"></a>
-<span class="sourceLineNo">4634</span>          LOG.debug(msg);<a name="line.4634"></a>
-<span class="sourceLineNo">4635</span>        }<a name="line.4635"></a>
-<span class="sourceLineNo">4636</span>        continue;<a name="line.4636"></a>
-<span class="sourceLineNo">4637</span>      }<a name="line.4637"></a>
-<span class="sourceLineNo">4638</span><a name="line.4638"></a>
-<span class="sourceLineNo">4639</span>      try {<a name="line.4639"></a>
-<span class="sourceLineNo">4640</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4640"></a>
-<span class="sourceLineNo">4641</span>        // if seqId is greater<a name="line.4641"></a>
-<span class="sourceLineNo">4642</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4642"></a>
-<span class="sourceLineNo">4643</span>      } catch (IOException e) {<a name="line.4643"></a>
-<span class="sourceLineNo">4644</span>        boolean skipErrors = conf.getBoolean(<a name="line.4644"></a>
-<span class="sourceLineNo">4645</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4645"></a>
-<span class="sourceLineNo">4646</span>            conf.getBoolean(<a name="line.4646"></a>
-<span class="sourceLineNo">4647</span>                "hbase.skip.errors",<a name="line.4647"></a>
-<span class="sourceLineNo">4648</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4648"></a>
-<span class="sourceLineNo">4649</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4649"></a>
-<span class="sourceLineNo">4650</span>          LOG.warn(<a name="line.4650"></a>
-<span class="sourceLineNo">4651</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4651"></a>
-<span class="sourceLineNo">4652</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4652"></a>
-<span class="sourceLineNo">4653</span>        }<a name="line.4653"></a>
-<span class="sourceLineNo">4654</span>        if (skipErrors) {<a name="line.4654"></a>
-<span class="sourceLineNo">4655</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4655"></a>
-<span class="sourceLineNo">4656</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4656"></a>
-<span class="sourceLineNo">4657</span>              + "=true so continuing. Renamed " + edits +<a name="line.4657"></a>
-<span class="sourceLineNo">4658</span>              " as " + p, e);<a name="line.4658"></a>
-<span class="sourceLineNo">4659</span>        } else {<a name="line.4659"></a>
-<span class="sourceLineNo">4660</span>          throw e;<a name="line.4660"></a>
-<span class="sourceLineNo">4661</span>        }<a name="line.4661"></a>
-<span class="sourceLineNo">4662</span>      }<a name="line.4662"></a>
-<span class="sourceLineNo">4663</span>    }<a name="line.4663"></a>
-<span class="sourceLineNo">4664</span>    return seqid;<a name="line.4664"></a>
-<span class="sourceLineNo">4665</span>  }<a name="line.4665"></a>
-<span class="sourceLineNo">4666</span><a name="line.4666"></a>
-<span class="sourceLineNo">4667</span>  /*<a name="line.4667"></a>
-<span class="sourceLineNo">4668</span>   * @param edits File of recovered edits.<a name="line.4668"></a>
-<span class="sourceLineNo">4669</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4669"></a>
-<span class="sourceLineNo">4670</span>   * must be larger than this to be replayed for each store.<a name="line.4670"></a>
-<span class="sourceLineNo">4671</span>   * @param reporter<a name="line.4671"></a>
-<span class="sourceLineNo">4672</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4672"></a>
-<span class="sourceLineNo">4673</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4673"></a>
-<span class="sourceLineNo">4674</span>   * @throws IOException<a name="line.4674"></a>
-<span class="sourceLineNo">4675</span>   */<a name="line.4675"></a>
-<span class="sourceLineNo">4676</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4676"></a>
-<span class="sourceLineNo">4677</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4677"></a>
-<span class="sourceLineNo">4678</span>    throws IOException {<a name="line.4678"></a>
-<span class="sourceLineNo">4679</span>    String msg = "Replaying edits from " + edits;<a name="line.4679"></a>
-<span class="sourceLineNo">4680</span>    LOG.info(msg);<a name="line.4680"></a>
-<span class="sourceLineNo">4681</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4681"></a>
+<span class="sourceLineNo">4565</span>    FileSystem walFS = getWalFileSystem();<a name="line.4565"></a>
+<span class="sourceLineNo">4566</span>    FileSystem rootFS = getFilesystem();<a name="line.4566"></a>
+<span class="sourceLineNo">4567</span>    Path regionDir = getWALRegionDir();<a name="line.4567"></a>
+<span class="sourceLineNo">4568</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4568"></a>
+<span class="sourceLineNo">4569</span><a name="line.4569"></a>
+<span class="sourceLineNo">4570</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4570"></a>
+<span class="sourceLineNo">4571</span>    // under the root dir even if walDir is set.<a name="line.4571"></a>
+<span class="sourceLineNo">4572</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4572"></a>
+<span class="sourceLineNo">4573</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4573"></a>
+<span class="sourceLineNo">4574</span>      filesUnderRootDir =<a name="line.4574"></a>
+<span class="sourceLineNo">4575</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4575"></a>
+<span class="sourceLineNo">4576</span>      seqid = Math.max(seqid,<a name="line.4576"></a>
+<span class="sourceLineNo">4577</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4577"></a>
+<span class="sourceLineNo">4578</span>              defaultRegionDir));<a name="line.4578"></a>
+<span class="sourceLineNo">4579</span>    }<a name="line.4579"></a>
+<span class="sourceLineNo">4580</span><a name="line.4580"></a>
+<span class="sourceLineNo">4581</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4581"></a>
+<span class="sourceLineNo">4582</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4582"></a>
+<span class="sourceLineNo">4583</span>        files, reporter, regionDir));<a name="line.4583"></a>
+<span class="sourceLineNo">4584</span><a name="line.4584"></a>
+<span class="sourceLineNo">4585</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4585"></a>
+<span class="sourceLineNo">4586</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4586"></a>
+<span class="sourceLineNo">4587</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4587"></a>
+<span class="sourceLineNo">4588</span>    }<a name="line.4588"></a>
+<span class="sourceLineNo">4589</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4589"></a>
+<span class="sourceLineNo">4590</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4590"></a>
+<span class="sourceLineNo">4591</span>      // For debugging data loss issues!<a name="line.4591"></a>
+<span class="sourceLineNo">4592</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4592"></a>
+<span class="sourceLineNo">4593</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4593"></a>
+<span class="sourceLineNo">4594</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4594"></a>
+<span class="sourceLineNo">4595</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4595"></a>
+<span class="sourceLineNo">4596</span>      for (Path file: files) {<a name="line.4596"></a>
+<span class="sourceLineNo">4597</span>        fakeStoreFiles.add(<a name="line.4597"></a>
+<span class="sourceLineNo">4598</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4598"></a>
+<span class="sourceLineNo">4599</span>      }<a name="line.4599"></a>
+<span class="sourceLineNo">4600</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4600"></a>
+<span class="sourceLineNo">4601</span>    } else {<a name="line.4601"></a>
+<span class="sourceLineNo">4602</span>      if (filesUnderRootDir != null) {<a name="line.4602"></a>
+<span class="sourceLineNo">4603</span>        for (Path file : filesUnderRootDir) {<a name="line.4603"></a>
+<span class="sourceLineNo">4604</span>          if (!rootFS.delete(file, false)) {<a name="line.4604"></a>
+<span class="sourceLineNo">4605</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4605"></a>
+<span class="sourceLineNo">4606</span>          } else {<a name="line.4606"></a>
+<span class="sourceLineNo">4607</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4607"></a>
+<span class="sourceLineNo">4608</span>          }<a name="line.4608"></a>
+<span class="sourceLineNo">4609</span>        }<a name="line.4609"></a>
+<span class="sourceLineNo">4610</span>      }<a name="line.4610"></a>
+<span class="sourceLineNo">4611</span>      for (Path file: files) {<a name="line.4611"></a>
+<span class="sourceLineNo">4612</span>        if (!walFS.delete(file, false)) {<a name="line.4612"></a>
+<span class="sourceLineNo">4613</span>          LOG.error("Failed delete of " + file);<a name="line.4613"></a>
+<span class="sourceLineNo">4614</span>        } else {<a name="line.4614"></a>
+<span class="sourceLineNo">4615</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4615"></a>
+<span class="sourceLineNo">4616</span>        }<a name="line.4616"></a>
+<span class="sourceLineNo">4617</span>      }<a name="line.4617"></a>
+<span class="sourceLineNo">4618</span>    }<a name="line.4618"></a>
+<span class="sourceLineNo">4619</span>    return seqid;<a name="line.4619"></a>
+<span class="sourceLineNo">4620</span>  }<a name="line.4620"></a>
+<span class="sourceLineNo">4621</span><a name="line.4621"></a>
+<span class="sourceLineNo">4622</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4622"></a>
+<span class="sourceLineNo">4623</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4623"></a>
+<span class="sourceLineNo">4624</span>      throws IOException {<a name="line.4624"></a>
+<span class="sourceLineNo">4625</span>    long seqid = minSeqIdForTheRegion;<a name="line.4625"></a>
+<span class="sourceLineNo">4626</span>    if (LOG.isDebugEnabled()) {<a name="line.4626"></a>
+<span class="sourceLineNo">4627</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4627"></a>
+<span class="sourceLineNo">4628</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4628"></a>
+<span class="sourceLineNo">4629</span>    }<a name="line.4629"></a>
+<span class="sourceLineNo">4630</span><a name="line.4630"></a>
+<span class="sourceLineNo">4631</span>    if (files == null || files.isEmpty()) {<a name="line.4631"></a>
+<span class="sourceLineNo">4632</span>      return minSeqIdForTheRegion;<a name="line.4632"></a>
+<span class="sourceLineNo">4633</span>    }<a name="line.4633"></a>
+<span class="sourceLineNo">4634</span><a name="line.4634"></a>
+<span class="sourceLineNo">4635</span>    for (Path edits: files) {<a name="line.4635"></a>
+<span class="sourceLineNo">4636</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4636"></a>
+<span class="sourceLineNo">4637</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4637"></a>
+<span class="sourceLineNo">4638</span>        continue;<a name="line.4638"></a>
+<span class="sourceLineNo">4639</span>      }<a name="line.4639"></a>
+<span class="sourceLineNo">4640</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4640"></a>
+<span class="sourceLineNo">4641</span><a name="line.4641"></a>
+<span class="sourceLineNo">4642</span>      long maxSeqId;<a name="line.4642"></a>
+<span class="sourceLineNo">4643</span>      String fileName = edits.getName();<a name="line.4643"></a>
+<span class="sourceLineNo">4644</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4644"></a>
+<span class="sourceLineNo">4645</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4645"></a>
+<span class="sourceLineNo">4646</span>        if (LOG.isDebugEnabled()) {<a name="line.4646"></a>
+<span class="sourceLineNo">4647</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4647"></a>
+<span class="sourceLineNo">4648</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4648"></a>
+<span class="sourceLineNo">4649</span>              + ", skipped the whole file, path=" + edits;<a name="line.4649"></a>
+<span class="sourceLineNo">4650</span>          LOG.debug(msg);<a name="line.4650"></a>
+<span class="sourceLineNo">4651</span>        }<a name="line.4651"></a>
+<span class="sourceLineNo">4652</span>        continue;<a name="line.4652"></a>
+<span class="sourceLineNo">4653</span>      }<a name="line.4653"></a>
+<span class="sourceLineNo">4654</span><a name="line.4654"></a>
+<span class="sourceLineNo">4655</span>      try {<a name="line.4655"></a>
+<span class="sourceLineNo">4656</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4656"></a>
+<span class="sourceLineNo">4657</span>        // if seqId is greater<a name="line.4657"></a>
+<span class="sourceLineNo">4658</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4658"></a>
+<span class="sourceLineNo">4659</span>      } catch (IOException e) {<a name="line.4659"></a>
+<span class="sourceLineNo">4660</span>        boolean skipErrors = conf.getBoolean(<a name="line.4660"></a>
+<span class="sourceLineNo">4661</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4661"></a>
+<span class="sourceLineNo">4662</span>            conf.getBoolean(<a name="line.4662"></a>
+<span class="sourceLineNo">4663</span>                "hbase.skip.errors",<a name="line.4663"></a>
+<span class="sourceLineNo">4664</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4664"></a>
+<span class="sourceLineNo">4665</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4665"></a>
+<span class="sourceLineNo">4666</span>          LOG.warn(<a name="line.4666"></a>
+<span class="sourceLineNo">4667</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4667"></a>
+<span class="sourceLineNo">4668</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4668"></a>
+<span class="sourceLineNo">4669</span>        }<a name="line.4669"></a>
+<span class="sourceLineNo">4670</span>        if (skipErrors) {<a name="line.4670"></a>
+<span class="sourceLineNo">4671</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4671"></a>
+<span class="sourceLineNo">4672</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4672"></a>
+<span class="sourceLineNo">4673</span>              + "=true so continuing. Renamed " + edits +<a name="line.4673"></a>
+<span class="sourceLineNo">4674</span>              " as " + p, e);<a name="line.4674"></a>
+<span class="sourceLineNo">4675</span>        } else {<a name="line.4675"></a>
+<span class="sourceLineNo">4676</span>          throw e;<a name="line.4676"></a>
+<span class="sourceLineNo">4677</span>        }<a name="line.4677"></a>
+<span class="sourceLineNo">4678</span>      }<a name="line.4678"></a>
+<span class="sourceLineNo">4679</span>    }<a name="line.4679"></a>
+<span class="sourceLineNo">4680</span>    return seqid;<a name="line.4680"></a>
+<span class="sourceLineNo">4681</span>  }<a name="line.4681"></a>
 <span class="sourceLineNo">4682</span><a name="line.4682"></a>
-<span class="sourceLineNo">4683</span>    status.setStatus("Opening recovered edits");<a name="line.4683"></a>
-<span class="sourceLineNo">4684</span>    WAL.Reader reader = null;<a name="line.4684"></a>
-<span class="sourceLineNo">4685</span>    try {<a name="line.4685"></a>
-<span class="sourceLineNo">4686</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4686"></a>
-<span class="sourceLineNo">4687</span>      long currentEditSeqId = -1;<a name="line.4687"></a>
-<span class="sourceLineNo">4688</span>      long currentReplaySeqId = -1;<a name="line.4688"></a>
-<span class="sourceLineNo">4689</span>      long firstSeqIdInLog = -1;<a name="line.4689"></a>
-<span class="sourceLineNo">4690</span>      long skippedEdits = 0;<a name="line.4690"></a>
-<span class="sourceLineNo">4691</span>      long editsCount = 0;<a name="line.4691"></a>
-<span class="sourceLineNo">4692</span>      long intervalEdits = 0;<a name="line.4692"></a>
-<span class="sourceLineNo">4693</span>      WAL.Entry entry;<a name="line.4693"></a>
-<span class="sourceLineNo">4694</span>      HStore store = null;<a name="line.4694"></a>
-<span class="sourceLineNo">4695</span>      boolean reported_once = false;<a name="line.4695"></a>
-<span class="sourceLineNo">4696</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4696"></a>
-<span class="sourceLineNo">4697</span><a name="line.4697"></a>
-<span class="sourceLineNo">4698</span>      try {<a name="line.4698"></a>
-<span class="sourceLineNo">4699</span>        // How many edits seen before we check elapsed time<a name="line.4699"></a>
-<span class="sourceLineNo">4700</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4700"></a>
-<span class="sourceLineNo">4701</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4701"></a>
-<span class="sourceLineNo">4702</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4702"></a>
-<span class="sourceLineNo">4703</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4703"></a>
-<span class="sourceLineNo">4704</span><a name="line.4704"></a>
-<span class="sourceLineNo">4705</span>        if (coprocessorHost != null) {<a name="line.4705"></a>
-<span class="sourceLineNo">4706</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4706"></a>
-<span class="sourceLineNo">4707</span>        }<a name="line.4707"></a>
-<span class="sourceLineNo">4708</span><a name="line.4708"></a>
-<span class="sourceLineNo">4709</span>        while ((entry = reader.next()) != null) {<a name="line.4709"></a>
-<span class="sourceLineNo">4710</span>          WALKey key = entry.getKey();<a name="line.4710"></a>
-<span class="sourceLineNo">4711</span>          WALEdit val = entry.getEdit();<a name="line.4711"></a>
-<span class="sourceLineNo">4712</span><a name="line.4712"></a>
-<span class="sourceLineNo">4713</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4713"></a>
-<span class="sourceLineNo">4714</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4714"></a>
-<span class="sourceLineNo">4715</span>          }<a name="line.4715"></a>
-<span class="sourceLineNo">4716</span><a name="line.4716"></a>
-<span class="sourceLineNo">4717</span>          if (reporter != null) {<a name="line.4717"></a>
-<span class="sourceLineNo">4718</span>            intervalEdits += val.size();<a name="line.4718"></a>
-<span class="sourceLineNo">4719</span>            if (intervalEdits &gt;= interval) {<a name="line.4719"></a>
-<span class="sourceLineNo">4720</span>              // Number of edits interval reached<a name="line.4720"></a>
-<span class="sourceLineNo">4721</span>              intervalEdits = 0;<a name="line.4721"></a>
-<span class="sourceLineNo">4722</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4722"></a>
-<span class="sourceLineNo">4723</span>              if (lastReport + period &lt;= cur) {<a name="line.4723"></a>
-<span class="sourceLineNo">4724</span>                status.setStatus("Replaying edits..." +<a name="line.4724"></a>
-<span class="sourceLineNo">4725</span>                    " skipped=" + skippedEdits +<a name="line.4725"></a>
-<span class="sourceLineNo">4726</span>                    " edits=" + editsCount);<a name="line.4726"></a>
-<span class="sourceLineNo">4727</span>                // Timeout reached<a name="line.4727"></a>
-<span class="sourceLineNo">4728</span>                if(!reporter.progress()) {<a name="line.4728"></a>
-<span class="sourceLineNo">4729</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4729"></a>
-<span class="sourceLineNo">4730</span>                  LOG.warn(msg);<a name="line.4730"></a>
-<span class="sourceLineNo">4731</span>                  status.abort(msg);<a name="line.4731"></a>
-<span class="sourceLineNo">4732</span>                  throw new IOException(msg);<a name="line.4732"></a>
-<span class="sourceLineNo">4733</span>                }<a name="line.4733"></a>
-<span class="sourceLineNo">4734</span>                reported_once = true;<a name="line.4734"></a>
-<span class="sourceLineNo">4735</span>                lastReport = cur;<a name="line.4735"></a>
-<span class="sourceLineNo">4736</span>              }<a name="line.4736"></a>
-<span class="sourceLineNo">4737</span>            }<a name="line.4737"></a>
-<span class="sourceLineNo">4738</span>          }<a name="line.4738"></a>
-<span class="sourceLineNo">4739</span><a name="line.4739"></a>
-<span class="sourceLineNo">4740</span>          if (firstSeqIdInLog == -1) {<a name="line.4740"></a>
-<span class="sourceLineNo">4741</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4741"></a>
-<span class="sourceLineNo">4742</span>          }<a name="line.4742"></a>
-<span class="sourceLineNo">4743</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4743"></a>
-<span class="sourceLineNo">4744</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4744"></a>
-<span class="sourceLineNo">4745</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4745"></a>
-<span class="sourceLineNo">4746</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4746"></a>
-<span class="sourceLineNo">4747</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4747"></a>
-<span class="sourceLineNo">4748</span>                + "; edit=" + val);<a name="line.4748"></a>
-<span class="sourceLineNo">4749</span>          } else {<a name="line.4749"></a>
-<span class="sourceLineNo">4750</span>            currentEditSeqId = key.getSequenceId();<a name="line.4750"></a>
-<span class="sourceLineNo">4751</span>          }<a name="line.4751"></a>
-<span class="sourceLineNo">4752</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4752"></a>
-<span class="sourceLineNo">4753</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4753"></a>
-<span class="sourceLineNo">4754</span><a name="line.4754"></a>
-<span class="sourceLineNo">4755</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4755"></a>
-<span class="sourceLineNo">4756</span>          // instead of a KeyValue.<a name="line.4756"></a>
-<span class="sourceLineNo">4757</span>          if (coprocessorHost != null) {<a name="line.4757"></a>
-<span class="sourceLineNo">4758</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4758"></a>
-<span class="sourceLineNo">4759</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4759"></a>
-<span class="sourceLineNo">4760</span>              // if bypass this wal entry, ignore it ...<a name="line.4760"></a>
-<span class="sourceLineNo">4761</span>              continue;<a name="line.4761"></a>
-<span class="sourceLineNo">4762</span>            }<a name="line.4762"></a>
-<span class="sourceLineNo">4763</span>          }<a name="line.4763"></a>
-<span class="sourceLineNo">4764</span>          boolean checkRowWithinBoundary = false;<a name="line.4764"></a>
-<span class="sourceLineNo">4765</span>          // Check this edit is for this region.<a name="line.4765"></a>
-<span class="sourceLineNo">4766</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4766"></a>
-<span class="sourceLineNo">4767</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4767"></a>
-<span class="sourceLineNo">4768</span>            checkRowWithinBoundary = true;<a name="line.4768"></a>
-<span class="sourceLineNo">4769</span>          }<a name="line.4769"></a>
+<span class="sourceLineNo">4683</span>  /*<a name="line.4683"></a>
+<span class="sourceLineNo">4684</span>   * @param edits File of recovered edits.<a name="line.4684"></a>
+<span class="sourceLineNo">4685</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4685"></a>
+<span class="sourceLineNo">4686</span>   * must be larger than this to be replayed for each store.<a name="line.4686"></a>
+<span class="sourceLineNo">4687</span>   * @param reporter<a name="line.4687"></a>
+<span class="sourceLineNo">4688</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4688"></a>
+<span class="sourceLineNo">4689</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4689"></a>
+<span class="sourceLineNo">4690</span>   * @throws IOException<a name="line.4690"></a>
+<span class="sourceLineNo">4691</span>   */<a name="line.4691"></a>
+<span class="sourceLineNo">4692</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4692"></a>
+<span class="sourceLineNo">4693</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4693"></a>
+<span class="sourceLineNo">4694</span>    throws IOException {<a name="line.4694"></a>
+<span class="sourceLineNo">4695</span>    String msg = "Replaying edits from " + edits;<a name="line.4695"></a>
+<span class="sourceLineNo">4696</span>    LOG.info(msg);<a name="line.4696"></a>
+<span class="sourceLineNo">4697</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4697"></a>
+<span class="sourceLineNo">4698</span><a name="line.4698"></a>
+<span class="sourceLineNo">4699</span>    status.setStatus("Opening recovered edits");<a name="line.4699"></a>
+<span class="sourceLineNo">4700</span>    WAL.Reader reader = null;<a name="line.4700"></a>
+<span class="sourceLineNo">4701</span>    try {<a name="line.4701"></a>
+<span class="sourceLineNo">4702</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4702"></a>
+<span class="sourceLineNo">4703</span>      long currentEditSeqId = -1;<a name="line.4703"></a>
+<span class="sourceLineNo">4704</span>      long currentReplaySeqId = -1;<a name="line.4704"></a>
+<span class="sourceLineNo">4705</span>      long firstSeqIdInLog = -1;<a name="line.4705"></a>
+<span class="sourceLineNo">4706</span>      long skippedEdits = 0;<a name="line.4706"></a>
+<span class="sourceLineNo">4707</span>      long editsCount = 0;<a name="line.4707"></a>
+<span class="sourceLineNo">4708</span>      long intervalEdits = 0;<a name="line.4708"></a>
+<span class="sourceLineNo">4709</span>      WAL.Entry entry;<a name="line.4709"></a>
+<span class="sourceLineNo">4710</span>      HStore store = null;<a name="line.4710"></a>
+<span class="sourceLineNo">4711</span>      boolean reported_once = false;<a name="line.4711"></a>
+<span class="sourceLineNo">4712</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4712"></a>
+<span class="sourceLineNo">4713</span><a name="line.4713"></a>
+<span class="sourceLineNo">4714</span>      try {<a name="line.4714"></a>
+<span class="sourceLineNo">4715</span>        // How many edits seen before we check elapsed time<a name="line.4715"></a>
+<span class="sourceLineNo">4716</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4716"></a>
+<span class="sourceLineNo">4717</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4717"></a>
+<span class="sourceLineNo">4718</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4718"></a>
+<span class="sourceLineNo">4719</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4719"></a>
+<span class="sourceLineNo">4720</span><a name="line.4720"></a>
+<span class="sourceLineNo">4721</span>        if (coprocessorHost != null) {<a name="line.4721"></a>
+<span class="sourceLineNo">4722</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4722"></a>
+<span class="sourceLineNo">4723</span>        }<a name="line.4723"></a>
+<span class="sourceLineNo">4724</span><a name="line.4724"></a>
+<span class="sourceLineNo">4725</span>        while ((entry = reader.next()) != null) {<a name="line.4725"></a>
+<span class="sourceLineNo">4726</span>          WALKey key = entry.getKey();<a name="line.4726"></a>
+<span class="sourceLineNo">4727</span>          WALEdit val = entry.getEdit();<a name="line.4727"></a>
+<span class="sourceLineNo">4728</span><a name="line.4728"></a>
+<span class="sourceLineNo">4729</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4729"></a>
+<span class="sourceLineNo">4730</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4730"></a>
+<span class="sourceLineNo">4731</span>          }<a name="line.4731"></a>
+<span class="sourceLineNo">4732</span><a name="line.4732"></a>
+<span class="sourceLineNo">4733</span>          if (reporter != null) {<a name="line.4733"></a>
+<span class="sourceLineNo">4734</span>            intervalEdits += val.size();<a name="line.4734"></a>
+<span class="sourceLineNo">4735</span>            if (intervalEdits &gt;= interval) {<a name="line.4735"></a>
+<span class="sourceLineNo">4736</span>              // Number of edits interval reached<a name="line.4736"></a>
+<span class="sourceLineNo">4737</span>              intervalEdits = 0;<a name="line.4737"></a>
+<span class="sourceLineNo">4738</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4738"></a>
+<span class="sourceLineNo">4739</span>              if (lastReport + period &lt;= cur) {<a name="line.4739"></a>
+<span class="sourceLineNo">4740</span>                status.setStatus("Replaying edits..." +<a name="line.4740"></a>
+<span class="sourceLineNo">4741</span>                    " skipped=" + skippedEdits +<a name="line.4741"></a>
+<span class="sourceLineNo">4742</span>                    " edits=" + editsCount);<a name="line.4742"></a>
+<span class="sourceLineNo">4743</span>                // Timeout reached<a name="line.4743"></a>
+<span class="sourceLineNo">4744</span>                if(!reporter.progress()) {<a name="line.4744"></a>
+<span class="sourceLineNo">4745</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4745"></a>
+<span class="sourceLineNo">4746</span>                  LOG.warn(msg);<a name="line.4746"></a>
+<span class="sourceLineNo">4747</span>                  status.abort(msg);<a name="line.4747"></a>
+<span class="sourceLineNo">4748</span>                  throw new IOException(msg);<a name="line.4748"></a>
+<span class="sourceLineNo">4749</span>                }<a name="line.4749"></a>
+<span class="sourceLineNo">4750</span>                reported_once = true;<a name="line.4750"></a>
+<span class="sourceLineNo">4751</span>                lastReport = cur;<a name="line.4751"></a>
+<span class="sourceLineNo">4752</span>              }<a name="line.4752"></a>
+<span class="sourceLineNo">4753</span>            }<a name="line.4753"></a>
+<span class="sourceLineNo">4754</span>          }<a name="line.4754"></a>
+<span class="sourceLineNo">4755</span><a name="line.4755"></a>
+<span class="sourceLineNo">4756</span>          if (firstSeqIdInLog == -1) {<a name="line.4756"></a>
+<span class="sourceLineNo">4757</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4757"></a>
+<span class="sourceLineNo">4758</span>          }<a name="line.4758"></a>
+<span class="sourceLineNo">4759</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4759"></a>
+<span class="sourceLineNo">4760</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4760"></a>
+<span class="sourceLineNo">4761</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4761"></a>
+<span class="sourceLineNo">4762</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4762"></a>
+<span class="sourceLineNo">4763</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4763"></a>
+<span class="sourceLineNo">4764</span>                + "; edit=" + val);<a name="line.4764"></a>
+<span class="sourceLineNo">4765</span>          } else {<a name="line.4765"></a>
+<span class="sourceLineNo">4766</span>            currentEditSeqId = key.getSequenceId();<a name="line.4766"></a>
+<span class="sourceLineNo">4767</span>          }<a name="line.4767"></a>
+<span class="sourceLineNo">4768</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4768"></a>
+<span class="sourceLineNo">4769</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4769"></a>
 <span class="sourceLineNo">4770</span><a name="line.4770"></a>
-<span class="sourceLineNo">4771</span>          boolean flush = false;<a name="line.4771"></a>
-<span class="sourceLineNo">4772</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4772"></a>
-<span class="sourceLineNo">4773</span>          for (Cell cell: val.getCells()) {<a name="line.4773"></a>
-<span class="sourceLineNo">4774</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4774"></a>
-<span class="sourceLineNo">4775</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4775"></a>
-<span class="sourceLineNo">4776</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4776"></a>
-<span class="sourceLineNo">4777</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4777"></a>
-<span class="sourceLineNo">4778</span>              if (!checkRowWithinBoundary) {<a name="line.4778"></a>
-<span class="sourceLineNo">4779</span>                //this is a special edit, we should handle it<a name="line.4779"></a>
-<span class="sourceLineNo">4780</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4780"></a>
-<span class="sourceLineNo">4781</span>                if (compaction != null) {<a name="line.4781"></a>
-<span class="sourceLineNo">4782</span>                  //replay the compaction<a name="line.4782"></a>
-<span class="sourceLineNo">4783</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4783"></a>
-<span class="sourceLineNo">4784</span>                }<a name="line.4784"></a>
-<span class="sourceLineNo">4785</span>              }<a name="line.4785"></a>
-<span class="sourceLineNo">4786</span>              skippedEdits++;<a name="line.4786"></a>
-<span class="sourceLineNo">4787</span>              continue;<a name="line.4787"></a>
-<span class="sourceLineNo">4788</span>            }<a name="line.4788"></a>
-<span class="sourceLineNo">4789</span>            // Figure which store the edit is meant for.<a name="line.4789"></a>
-<span class="sourceLineNo">4790</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4790"></a>
-<span class="sourceLineNo">4791</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4791"></a>
-<span class="sourceLineNo">4792</span>              store = getStore(cell);<a name="line.4792"></a>
-<span class="sourceLineNo">4793</span>            }<a name="line.4793"></a>
-<span class="sourceLineNo">4794</span>            if (store == null) {<a name="line.4794"></a>
-<span class="sourceLineNo">4795</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4795"></a>
-<span class="sourceLineNo">4796</span>              // crash and redeploy?<a name="line.4796"></a>
-<span class="sourceLineNo">4797</span>              LOG.warn("No family for " + cell);<a name="line.4797"></a>
-<span class="sourceLineNo">4798</span>              skippedEdits++;<a name="line.4798"></a>
-<span class="sourceLineNo">4799</span>              continue;<a name="line.4799"></a>
-<span class="sourceLineNo">4800</span>            }<a name="line.4800"></a>
-<span class="sourceLineNo">4801</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4801"></a>
-<span class="sourceLineNo">4802</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4802"></a>
-<span class="sourceLineNo">4803</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4803"></a>
-<span class="sourceLineNo">4804</span>              skippedEdits++;<a name="line.4804"></a>
-<span class="sourceLineNo">4805</span>              continue;<a name="line.4805"></a>
-<span class="sourceLineNo">4806</span>            }<a name="line.4806"></a>
-<span class="sourceLineNo">4807</span>            // Now, figure if we should skip this edit.<a name="line.4807"></a>
-<span class="sourceLineNo">4808</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4808"></a>
-<span class="sourceLineNo">4809</span>                .getName())) {<a name="line.4809"></a>
-<span class="sourceLineNo">4810</span>              skippedEdits++;<a name="line.4810"></a>
-<span class="sourceLineNo">4811</span>              continue;<a name="line.4811"></a>
-<span class="sourceLineNo">4812</span>            }<a name="line.4812"></a>
-<span class="sourceLineNo">4813</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4813"></a>
-<span class="sourceLineNo">4814</span><a name="line.4814"></a>
-<span class="sourceLineNo">4815</span>            restoreEdit(store, cell, memStoreSizing);<a name="line.4815"></a>
-<span class="sourceLineNo">4816</span>            editsCount++;<a name="line.4816"></a>
-<span class="sourceLineNo">4817</span>          }<a name="line.4817"></a>
-<span class="sourceLineNo">4818</span>          MemStoreSize mss = memStoreSizing.getMemStoreSize();<a name="line.4818"></a>
-<span class="sourceLineNo">4819</span>          incMemStoreSize(mss);<a name="line.4819"></a>
-<span class="sourceLineNo">4820</span>          flush = isFlushSize(this.memStoreSizing.getMemStoreSize());<a name="line.4820"></a>
-<span class="sourceLineNo">4821</span>          if (flush) {<a name="line.4821"></a>
-<span class="sourceLineNo">4822</span>            internalFlushcache(null, currentEditSeqId, stores.values(), status, false,<a name="line.4822"></a>
-<span class="sourceLineNo">4823</span>              FlushLifeCycleTracker.DUMMY);<a name="line.4823"></a>
-<span class="sourceLineNo">4824</span>          }<a name="line.4824"></a>
-<span class="sourceLineNo">4825</span><a name="line.4825"></a>
-<span class="sourceLineNo">4826</span>          if (coprocessorHost != null) {<a name="line.4826"></a>
-<span class="sourceLineNo">4827</span>            coprocessorHost.postWALRestore(this.getRegionInfo(), key, val);<a name="line.4827"></a>
-<span class="sourceLineNo">4828</span>          }<a name="line.4828"></a>
-<span class="sourceLineNo">4829</span>        }<a name="line.4829"></a>
+<span class="sourceLineNo">4771</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4771"></a>
+<span class="sourceLineNo">4772</span>          // instead of a KeyValue.<a name="line.4772"></a>
+<span class="sourceLineNo">4773</span>          if (coprocessorHost != null) {<a name="line.4773"></a>
+<span class="sourceLineNo">4774</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4774"></a>
+<span class="sourceLineNo">4775</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4775"></a>
+<span class="sourceLineNo">4776</span>              // if bypass this wal entry, ignore it ...<a name="line.4776"></a>
+<span class="sourceLineNo">4777</span>              continue;<a name="line.4777"></a>
+<span class="sourceLineNo">4778</span>            }<a name="line.4778"></a>
+<span class="sourceLineNo">4779</span>          }<a name="line.4779"></a>
+<span class="sourceLineNo">4780</span>          boolean checkRowWithinBoundary = false;<a name="line.4780"></a>
+<span class="sourceLineNo">4781</span>          // Check this edit is for this region.<a name="line.4781"></a>
+<span class="sourceLineNo">4782</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4782"></a>
+<span class="sourceLineNo">4783</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4783"></a>
+<span class="sourceLineNo">4784</span>            checkRowWithinBoundary = true;<a name="line.4784"></a>
+<span class="sourceLineNo">4785</span>          }<a name="line.4785"></a>
+<span class="sourceLineNo">4786</span><a name="line.4786"></a>
+<span class="sourceLineNo">4787</span>          boolean flush = false;<a name="line.4787"></a>
+<span class="sourceLineNo">4788</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4788"></a>
+<span class="sourceLineNo">4789</span>          for (Cell cell: val.getCells()) {<a name="line.4789"></a>
+<span class="sourceLineNo">4790</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4790"></a>
+<span class="sourceLineNo">4791</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4791"></a>
+<span class="sourceLineNo">4792</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4792"></a>
+<span class="sourceLineNo">4793</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4793"></a>
+<span class="sourceLineNo">4794</span>              if (!checkRowWithinBoundary) {<a name="line.4794"></a>
+<span class="sourceLineNo">4795</span>                //this is a special edit, we should handle it<a name="line.4795"></a>
+<span class="sourceLineNo">4796</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4796"></a>
+<span class="sourceLineNo">4797</span>                if (compaction != null) {<a name="line.4797"></a>
+<span class="sourceLineNo">4798</span>                  //replay the compaction<a name="line.4798"></a>
+<span class="sourceLineNo">4799</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4799"></a>
+<span class="sourceLineNo">4800</span>                }<a name="line.4800"></a>
+<span class="sourceLineNo">4801</span>              }<a name="line.4801"></a>
+<span class="sourceLineNo">4802</span>              skippedEdits++;<a name="line.4802"></a>
+<span class="sourceLineNo">4803</span>              continue;<a name="line.4803"></a>
+<span class="sourceLineNo">4804</span>            }<a name="line.4804"></a>
+<span class="sourceLineNo">4805</span>            // Figure which store the edit is meant for.<a name="line.4805"></a>
+<span class="sourceLineNo">4806</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4806"></a>
+<span class="sourceLineNo">4807</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4807"></a>
+<span class="sourceLineNo">4808</span>              store = getStore(cell);<a name="line.4808"></a>
+<span class="sourceLineNo">4809</span>            }<a name="line.4809"></a>
+<span class="sourceLineNo">4810</span>            if (store == null) {<a name="line.4810"></a>
+<span class="sourceLineNo">4811</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4811"></a>
+<span class="sourceLineNo">4812</span>              // crash and redeploy?<a name="line.4812"></a>
+<span class="sourceLineNo">4813</span>              LOG.warn("No family for " + cell);<a name="line.4813"></a>
+<span class="sourceLineNo">4814</span>              skippedEdits++;<a name="line.4814"></a>
+<span class="sourceLineNo">4815</span>              continue;<a name="line.4815"></a>
+<span class="sourceLineNo">4816</span>            }<a name="line.4816"></a>
+<span class="sourceLineNo">4817</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4817"></a>
+<span class="sourceLineNo">4818</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4818"></a>
+<span class="sourceLineNo">4819</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4819"></a>
+<span class="sourceLineNo">4820</span>              skippedEdits++;<a name="line.4820"></a>
+<span class="sourceLineNo">4821</span>              continue;<a name="line.4821"></a>
+<span class="sourceLineNo">4822</span>            }<a name="line.4822"></a>
+<span class="sourceLineNo">4823</span>            // Now, figure if we should skip this edit.<a name="line.4823"></a>
+<span class="sourceLineNo">4824</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4824"></a>
+<span class="sourceLineNo">4825</span>                .getName())) {<a name="line.4825"></a>
+<span class="sourceLineNo">4826</span>              skippedEdits++;<a name="line.4826"></a>
+<span class="sourceLineNo">4827</span>              continue;<a name="line.4827"></a>
+<span class="sourceLineNo">4828</span>            }<a name="line.4828"></a>
+<span class="sourceLineNo">4829</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4829"></a>
 <span class="sourceLineNo">4830</span><a name="line.4830"></a>
-<span class="sourceLineNo">4831</span>        if (coprocessorHost != null) {<a name="line.4831"></a>
-<span class="sourceLineNo">4832</span>          coprocessorHost.postReplayWALs(this.getRegionInfo(), edits);<a name="line.4832"></a>
-<span class="sourceLineNo">4833</span>        }<a name="line.4833"></a>
-<span class="sourceLineNo">4834</span>      } catch (EOFException eof) {<a name="line.4834"></a>
-<span class="sourceLineNo">4835</span>        Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4835"></a>
-<span class="sourceLineNo">4836</span>        msg = "EnLongAddered EOF. Most likely due to Master failure during " +<a name="line.4836"></a>
-<span class="sourceLineNo">4837</span>            "wal splitting, so we have this data in another edit.  " +<a name="line.4837"></a>
-<span class="sourceLineNo">4838</span>            "Continuing, but renaming " + edits + " as " + p;<a name="line.4838"></a>
-<span class="sourceLineNo">4839</span>        LOG.warn(msg, eof);<a name="line.4839"></a>
-<span class="sourceLineNo">4840</span>        status.abort(msg);<a name="line.4840"></a>
-<span class="sourceLineNo">4841</span>      } catch (IOException ioe) {<a name="line.4841"></a>
-<span class="sourceLineNo">4842</span>        // If the IOE resulted from bad file format,<a name="line.4842"></a>
-<span class="sourceLineNo">4843</span>        // then this problem is idempotent and retrying won't help<a name="line.4843"></a>
-<span class="sourceLineNo">4844</span>        if (ioe.getCause() instanceof ParseException) {<a name="line.4844"></a>
-<span class="sourceLineNo">4845</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4845"></a>
-<span class="sourceLineNo">4846</span>          msg = "File corruption enLongAddered!  " +<a name="line.4846"></a>
-<span class="sourceLineNo">4847</span>              "Continuing, but renaming " + edits + " as " + p;<a name="line.4847"></a>
-<span class="sourceLineNo">4848</span>          LOG.warn(msg, ioe);<a name="line.4848"></a>
-<span class="sourceLineNo">4849</span>          status.setStatus(msg);<a name="line.4849"></a>
-<span class="sourceLineNo">4850</span>        } else {<a name="line.4850"></a>
-<span class="sourceLineNo">4851</span>          status.abort(StringUtils.stringifyException(ioe));<a name="line.4851"></a>
-<span class="sourceLineNo">4852</span>          // other IO errors may be transient (bad network connection,<a name="line.4852"></a>
-<span class="sourceLineNo">4853</span>          // checksum exception on one datanode, etc).  throw &amp; retry<a name="line.4853"></a>
-<span class="sourceLineNo">4854</span>          throw ioe;<a name="line.4854"></a>
-<span class="sourceLineNo">4855</span>        }<a name="line.4855"></a>
-<span class="sourceLineNo">4856</span>      }<a name="line.4856"></a>
-<span class="sourceLineNo">4857</span>      if (reporter != null &amp;&amp; !reported_once) {<a name="line.4857"></a>
-<span class="sourceLineNo">4858</span>        reporter.progress();<a name="line.4858"></a>
-<span class="sourceLineNo">4859</span>      }<a name="line.4859"></a>
-<span class="sourceLineNo">4860</span>      msg = "Applied " + editsCount + ", skipped " + skippedEdits +<a name="line.4860"></a>
-<span class="sourceLineNo">4861</span>        ", firstSequenceIdInLog=" + firstSeqIdInLog +<a name="line.4861"></a>
-<span class="sourceLineNo">4862</span>        ", maxSequenceIdInLog=" + currentEditSeqId + ", path=" + edits;<a name="line.4862"></a>
-<span class="sourceLineNo">4863</span>      status.markComplete(msg);<a name="line.4863"></a>
-<span class="sourceLineNo">4864</span>      LOG.debug(msg);<a name="line.4864"></a>
-<span class="sourceLineNo">4865</span>      return currentEditSeqId;<a name="line.4865"></a>
-<span class="sourceLineNo">4866</span>    } finally {<a name="line.4866"></a>
-<span class="sourceLineNo">4867</span>      status.cleanup();<a name="line.4867"></a>
-<span class="sourceLineNo">4868</span>      if (reader != null) {<a name="line.4868"></a>
-<span class="sourceLineNo">4869</span>         reader.close();<a name="line.4869"></a>
-<span class="sourceLineNo">4870</span>      }<a name="line.4870"></a>
-<span class="sourceLineNo">4871</span>    }<a name="line.4871"></a>
-<span class="sourceLineNo">4872</span>  }<a name="line.4872"></a>
-<span class="sourceLineNo">4873</span><a name="line.4873"></a>
-<span class="sourceLineNo">4874</span>  /**<a name="line.4874"></a>
-<span class="sourceLineNo">4875</span>   * Call to complete a compaction. Its for the case where we find in the WAL a compaction<a name="line.4875"></a>
-<span class="sourceLineNo">4876</span>   * that was not finished.  We could find one recovering a WAL after a regionserver crash.<a name="line.4876"></a>
-<span class="sourceLineNo">4877</span>   * See HBASE-2331.<a name="line.4877"></a>
-<span class="sourceLineNo">4878</span>   */<a name="line.4878"></a>
-<span class="sourceLineNo">4879</span>  void replayWALCompactionMarker(CompactionDescriptor compaction, boolean pickCompactionFiles,<a name="line.4879"></a>
-<span class="sourceLineNo">4880</span>      boolean removeFiles, long replaySeqId)<a name="line.4880"></a>
-<span class="sourceLineNo">4881</span>      throws IOException {<a name="line.4881"></a>
-<span class="sourceLineNo">4882</span>    try {<a name="line.4882"></a>
-<span class="sourceLineNo">4883</span>      checkTargetRegion(compaction.getEncodedRegionName().toByteArray(),<a name="line.4883"></a>
-<span class="sourceLineNo">4884</span>        "Compaction marker from WAL ", compaction);<a name="line.4884"></a>
-<span class="sourceLineNo">4885</span>    } catch (WrongRegionException wre) {<a name="line.4885"></a>
-<span class="sourceLineNo">4886</span>      if (RegionReplicaUtil.isDefaultReplica(this.getRegionInfo())) {<a name="line.4886"></a>
-<span class="sourceLineNo">4887</span>        // skip the compaction marker since it is not for this region<a name="line.4887"></a>
-<span class="sourceLineNo">4888</span>        return;<a name="line.4888"></a>
-<span class="sourceLineNo">4889</span>      }<a name="line.4889"></a>
-<span class="sourceLineNo">4890</span>      throw wre;<a name="line.4890"></a>
-<span class="sourceLineNo">4891</span>    }<a name="line.4891"></a>
-<span class="sourceLineNo">4892</span><a name="line.4892"></a>
-<span class="sourceLineNo">4893</span>    synchronized (writestate) {<a name="line.4893"></a>
-<span class="sourceLineNo">4894</span>      if (replaySeqId &lt; lastReplayedOpenRegionSeqId) {<a name="line.4894"></a>
-<span class="sourceLineNo">4895</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4895"></a>
-<span class="sourceLineNo">4896</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4896"></a>
-<span class="sourceLineNo">4897</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4897"></a>
-<span class="sourceLineNo">4898</span>            + "lastReplayedOpenRegionSeqId of " + lastReplayedOpenRegionSeqId);<a name="line.4898"></a>
-<span class="sourceLineNo">4899</span>        return;<a name="line.4899"></a>
-<span class="sourceLineNo">4900</span>      }<a name="line.4900"></a>
-<span class="sourceLineNo">4901</span>      if (replaySeqId &lt; lastReplayedCompactionSeqId) {<a name="line.4901"></a>
-<span class="sourceLineNo">4902</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4902"></a>
-<span class="sourceLineNo">4903</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4903"></a>
-<span class="sourceLineNo">4904</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4904"></a>
-<span class="sourceLineNo">4905</span>            + "lastReplayedCompactionSeqId of " + lastReplayedCompactionSeqId);<a name="line.4905"></a>
-<span class="sourceLineNo">4906</span>        return;<a name="line.4906"></a>
-<span class="sourceLineNo">4907</span>      } else {<a name="line.4907"></a>
-<span class="sourceLineNo">4908</span>        lastReplayedCompactionSeqId = replaySeqId;<a name="line.4908"></a>
-<span c

<TRUNCATED>

[08/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html
new file mode 100644
index 0000000..e155c88
--- /dev/null
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html
@@ -0,0 +1,116 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> *<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
+<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
+<span class="sourceLineNo">012</span> *<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
+<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
+<span class="sourceLineNo">018</span> */<a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.regionserver;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.client.Durability;<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> * Thrown if Mutation's {@link Durability} is skip wal but table need replication.<a name="line.26"></a>
+<span class="sourceLineNo">027</span> */<a name="line.27"></a>
+<span class="sourceLineNo">028</span>@InterfaceAudience.Public<a name="line.28"></a>
+<span class="sourceLineNo">029</span>public class InvalidMutationDurabilityException extends DoNotRetryIOException {<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>  /**<a name="line.31"></a>
+<span class="sourceLineNo">032</span>   * default constructor<a name="line.32"></a>
+<span class="sourceLineNo">033</span>   */<a name="line.33"></a>
+<span class="sourceLineNo">034</span>  public InvalidMutationDurabilityException() {<a name="line.34"></a>
+<span class="sourceLineNo">035</span>    super();<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>  /**<a name="line.38"></a>
+<span class="sourceLineNo">039</span>   * @param message exception message<a name="line.39"></a>
+<span class="sourceLineNo">040</span>   */<a name="line.40"></a>
+<span class="sourceLineNo">041</span>  public InvalidMutationDurabilityException(String message) {<a name="line.41"></a>
+<span class="sourceLineNo">042</span>    super(message);<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>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/downloads.html
----------------------------------------------------------------------
diff --git a/downloads.html b/downloads.html
index de5a1c6..6f4831e 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <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" />
@@ -461,7 +461,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-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index 37abbac..31cf5c8 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -341,7 +341,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-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index eb2cfe3..6a9f662 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <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" />
@@ -421,7 +421,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-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index d090a7d..5a9eeb4 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <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" />
@@ -301,7 +301,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index a1798d2..844e929 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <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" />
@@ -298,7 +298,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index 9f8397a..d9ec2c4 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <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" />
@@ -501,7 +501,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index fd36bc4..cc51872 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <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" />
@@ -351,7 +351,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index 0718c6d..5e96338 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) Metrics
@@ -469,7 +469,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-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index faccd7a..382108d 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -450,7 +450,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-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index caf3f82..12c3263 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <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" />
@@ -450,7 +450,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index a0e99f1..e7a140c 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <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" />
@@ -385,7 +385,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index 505c004..c600e5e 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <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" />
@@ -779,7 +779,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-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index b75ed0e..1cacd6a 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <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" />
@@ -345,7 +345,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index 75eed1d..a28053d 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <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" />
@@ -315,7 +315,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index abc5089..07cbf0c 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <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" />
@@ -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-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 17c7060..900b567 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
 Running Apache HBase (TM) in pseudo-distributed mode
@@ -318,7 +318,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-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index fad6295..12a87ea 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -313,7 +313,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-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index f5a2083..d54e2a3 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <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" />
@@ -341,7 +341,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-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index f4a657b..5b99c93 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <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" />
@@ -309,7 +309,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index 485b5bd..91c06e2 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <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" />
@@ -343,7 +343,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-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index 2aea5ad..8eeeb45 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <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" />
@@ -530,7 +530,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-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index e7023d7..df48372 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <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" />
@@ -770,7 +770,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/testdevapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-frame.html b/testdevapidocs/allclasses-frame.html
index a75599a..e905d21 100644
--- a/testdevapidocs/allclasses-frame.html
+++ b/testdevapidocs/allclasses-frame.html
@@ -1347,6 +1347,7 @@
 <li><a href="org/apache/hadoop/hbase/TestIntegrationTestBase.html" title="class in org.apache.hadoop.hbase" target="classFrame">TestIntegrationTestBase</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestInterfaceAlign.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestInterfaceAlign</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestIntraRowPagination.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestIntraRowPagination</a></li>
+<li><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestInvalidMutationDurabilityException</a></li>
 <li><a href="org/apache/hadoop/hbase/filter/TestInvocationRecordFilter.html" title="class in org.apache.hadoop.hbase.filter" target="classFrame">TestInvocationRecordFilter</a></li>
 <li><a href="org/apache/hadoop/hbase/filter/TestInvocationRecordFilter.InvocationRecordFilter.html" title="class in org.apache.hadoop.hbase.filter" target="classFrame">TestInvocationRecordFilter.InvocationRecordFilter</a></li>
 <li><a href="org/apache/hadoop/hbase/TestIOFencing.html" title="class in org.apache.hadoop.hbase" target="classFrame">TestIOFencing</a></li>
@@ -2310,6 +2311,9 @@
 <li><a href="org/apache/hadoop/hbase/mapred/TestTableMapReduceUtil.ClassificatorRowReduce.html" title="class in org.apache.hadoop.hbase.mapred" target="classFrame">TestTableMapReduceUtil.ClassificatorRowReduce</a></li>
 <li><a href="org/apache/hadoop/hbase/TestTableName.html" title="class in org.apache.hadoop.hbase" target="classFrame">TestTableName</a></li>
 <li><a href="org/apache/hadoop/hbase/TestTableName.Names.html" title="class in org.apache.hadoop.hbase" target="classFrame">TestTableName.Names</a></li>
+<li><a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestTableOperationException</a></li>
+<li><a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor</a></li>
+<li><a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestTableOperationException.ThrowIOExceptionCoprocessor</a></li>
 <li><a href="org/apache/hadoop/hbase/mapred/TestTableOutputFormatConnectionExhaust.html" title="class in org.apache.hadoop.hbase.mapred" target="classFrame">TestTableOutputFormatConnectionExhaust</a></li>
 <li><a href="org/apache/hadoop/hbase/security/access/TestTablePermissions.html" title="class in org.apache.hadoop.hbase.security.access" target="classFrame">TestTablePermissions</a></li>
 <li><a href="org/apache/hadoop/hbase/quotas/TestTableQuotaViolationStore.html" title="class in org.apache.hadoop.hbase.quotas" target="classFrame">TestTableQuotaViolationStore</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/testdevapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-noframe.html b/testdevapidocs/allclasses-noframe.html
index 5a82881..9bff224 100644
--- a/testdevapidocs/allclasses-noframe.html
+++ b/testdevapidocs/allclasses-noframe.html
@@ -1347,6 +1347,7 @@
 <li><a href="org/apache/hadoop/hbase/TestIntegrationTestBase.html" title="class in org.apache.hadoop.hbase">TestIntegrationTestBase</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestInterfaceAlign.html" title="class in org.apache.hadoop.hbase.client">TestInterfaceAlign</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestIntraRowPagination.html" title="class in org.apache.hadoop.hbase.client">TestIntraRowPagination</a></li>
+<li><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></li>
 <li><a href="org/apache/hadoop/hbase/filter/TestInvocationRecordFilter.html" title="class in org.apache.hadoop.hbase.filter">TestInvocationRecordFilter</a></li>
 <li><a href="org/apache/hadoop/hbase/filter/TestInvocationRecordFilter.InvocationRecordFilter.html" title="class in org.apache.hadoop.hbase.filter">TestInvocationRecordFilter.InvocationRecordFilter</a></li>
 <li><a href="org/apache/hadoop/hbase/TestIOFencing.html" title="class in org.apache.hadoop.hbase">TestIOFencing</a></li>
@@ -2310,6 +2311,9 @@
 <li><a href="org/apache/hadoop/hbase/mapred/TestTableMapReduceUtil.ClassificatorRowReduce.html" title="class in org.apache.hadoop.hbase.mapred">TestTableMapReduceUtil.ClassificatorRowReduce</a></li>
 <li><a href="org/apache/hadoop/hbase/TestTableName.html" title="class in org.apache.hadoop.hbase">TestTableName</a></li>
 <li><a href="org/apache/hadoop/hbase/TestTableName.Names.html" title="class in org.apache.hadoop.hbase">TestTableName.Names</a></li>
+<li><a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></li>
+<li><a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor</a></li>
+<li><a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException.ThrowIOExceptionCoprocessor</a></li>
 <li><a href="org/apache/hadoop/hbase/mapred/TestTableOutputFormatConnectionExhaust.html" title="class in org.apache.hadoop.hbase.mapred">TestTableOutputFormatConnectionExhaust</a></li>
 <li><a href="org/apache/hadoop/hbase/security/access/TestTablePermissions.html" title="class in org.apache.hadoop.hbase.security.access">TestTablePermissions</a></li>
 <li><a href="org/apache/hadoop/hbase/quotas/TestTableQuotaViolationStore.html" title="class in org.apache.hadoop.hbase.quotas">TestTableQuotaViolationStore</a></li>


[21/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 da040ad..d6702a7 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
@@ -2957,7 +2957,7 @@
 <span class="sourceLineNo">2949</span>        if(family == null) {<a name="line.2949"></a>
 <span class="sourceLineNo">2950</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2950"></a>
 <span class="sourceLineNo">2951</span>        }<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>        checkFamily(family);<a name="line.2952"></a>
+<span class="sourceLineNo">2952</span>        checkFamily(family, delete.getDurability());<a name="line.2952"></a>
 <span class="sourceLineNo">2953</span>      }<a name="line.2953"></a>
 <span class="sourceLineNo">2954</span>    }<a name="line.2954"></a>
 <span class="sourceLineNo">2955</span>  }<a name="line.2955"></a>
@@ -3569,7 +3569,7 @@
 <span class="sourceLineNo">3561</span><a name="line.3561"></a>
 <span class="sourceLineNo">3562</span>    @Override<a name="line.3562"></a>
 <span class="sourceLineNo">3563</span>    public void checkAndPreparePut(Put p) throws IOException {<a name="line.3563"></a>
-<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet());<a name="line.3564"></a>
+<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet(), p.getDurability());<a name="line.3564"></a>
 <span class="sourceLineNo">3565</span>    }<a name="line.3565"></a>
 <span class="sourceLineNo">3566</span><a name="line.3566"></a>
 <span class="sourceLineNo">3567</span>    @Override<a name="line.3567"></a>
@@ -4462,4304 +4462,4307 @@
 <span class="sourceLineNo">4454</span>    store.add(cell, memstoreAccounting);<a name="line.4454"></a>
 <span class="sourceLineNo">4455</span>  }<a name="line.4455"></a>
 <span class="sourceLineNo">4456</span><a name="line.4456"></a>
-<span class="sourceLineNo">4457</span>  /**<a name="line.4457"></a>
-<span class="sourceLineNo">4458</span>   * Check the collection of families for validity.<a name="line.4458"></a>
-<span class="sourceLineNo">4459</span>   * @param families<a name="line.4459"></a>
-<span class="sourceLineNo">4460</span>   * @throws NoSuchColumnFamilyException<a name="line.4460"></a>
-<span class="sourceLineNo">4461</span>   */<a name="line.4461"></a>
-<span class="sourceLineNo">4462</span>  public void checkFamilies(Collection&lt;byte[]&gt; families) throws NoSuchColumnFamilyException {<a name="line.4462"></a>
-<span class="sourceLineNo">4463</span>    for (byte[] family : families) {<a name="line.4463"></a>
-<span class="sourceLineNo">4464</span>      checkFamily(family);<a name="line.4464"></a>
-<span class="sourceLineNo">4465</span>    }<a name="line.4465"></a>
-<span class="sourceLineNo">4466</span>  }<a name="line.4466"></a>
-<span class="sourceLineNo">4467</span><a name="line.4467"></a>
-<span class="sourceLineNo">4468</span>  /**<a name="line.4468"></a>
-<span class="sourceLineNo">4469</span>   * Check the collection of families for valid timestamps<a name="line.4469"></a>
-<span class="sourceLineNo">4470</span>   * @param familyMap<a name="line.4470"></a>
-<span class="sourceLineNo">4471</span>   * @param now current timestamp<a name="line.4471"></a>
-<span class="sourceLineNo">4472</span>   * @throws FailedSanityCheckException<a name="line.4472"></a>
-<span class="sourceLineNo">4473</span>   */<a name="line.4473"></a>
-<span class="sourceLineNo">4474</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4474"></a>
-<span class="sourceLineNo">4475</span>      throws FailedSanityCheckException {<a name="line.4475"></a>
-<span class="sourceLineNo">4476</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4476"></a>
-<span class="sourceLineNo">4477</span>      return;<a name="line.4477"></a>
-<span class="sourceLineNo">4478</span>    }<a name="line.4478"></a>
-<span class="sourceLineNo">4479</span>    long maxTs = now + timestampSlop;<a name="line.4479"></a>
-<span class="sourceLineNo">4480</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4480"></a>
-<span class="sourceLineNo">4481</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4481"></a>
-<span class="sourceLineNo">4482</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4482"></a>
-<span class="sourceLineNo">4483</span>      assert kvs instanceof RandomAccess;<a name="line.4483"></a>
-<span class="sourceLineNo">4484</span>      int listSize  = kvs.size();<a name="line.4484"></a>
-<span class="sourceLineNo">4485</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4485"></a>
-<span class="sourceLineNo">4486</span>        Cell cell = kvs.get(i);<a name="line.4486"></a>
-<span class="sourceLineNo">4487</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4487"></a>
-<span class="sourceLineNo">4488</span>        long ts = cell.getTimestamp();<a name="line.4488"></a>
-<span class="sourceLineNo">4489</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4489"></a>
-<span class="sourceLineNo">4490</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4490"></a>
-<span class="sourceLineNo">4491</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4491"></a>
-<span class="sourceLineNo">4492</span>        }<a name="line.4492"></a>
-<span class="sourceLineNo">4493</span>      }<a name="line.4493"></a>
+<span class="sourceLineNo">4457</span>  private void checkFamilies(Collection&lt;byte[]&gt; families, Durability durability)<a name="line.4457"></a>
+<span class="sourceLineNo">4458</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4458"></a>
+<span class="sourceLineNo">4459</span>    for (byte[] family : families) {<a name="line.4459"></a>
+<span class="sourceLineNo">4460</span>      checkFamily(family, durability);<a name="line.4460"></a>
+<span class="sourceLineNo">4461</span>    }<a name="line.4461"></a>
+<span class="sourceLineNo">4462</span>  }<a name="line.4462"></a>
+<span class="sourceLineNo">4463</span><a name="line.4463"></a>
+<span class="sourceLineNo">4464</span>  private void checkFamily(final byte[] family, Durability durability)<a name="line.4464"></a>
+<span class="sourceLineNo">4465</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4465"></a>
+<span class="sourceLineNo">4466</span>    checkFamily(family);<a name="line.4466"></a>
+<span class="sourceLineNo">4467</span>    if (durability.equals(Durability.SKIP_WAL)<a name="line.4467"></a>
+<span class="sourceLineNo">4468</span>        &amp;&amp; htableDescriptor.getColumnFamily(family).getScope()<a name="line.4468"></a>
+<span class="sourceLineNo">4469</span>        != HConstants.REPLICATION_SCOPE_LOCAL) {<a name="line.4469"></a>
+<span class="sourceLineNo">4470</span>      throw new InvalidMutationDurabilityException(<a name="line.4470"></a>
+<span class="sourceLineNo">4471</span>          "Mutation's durability is SKIP_WAL but table's column family " + Bytes.toString(family)<a name="line.4471"></a>
+<span class="sourceLineNo">4472</span>              + " need replication");<a name="line.4472"></a>
+<span class="sourceLineNo">4473</span>    }<a name="line.4473"></a>
+<span class="sourceLineNo">4474</span>  }<a name="line.4474"></a>
+<span class="sourceLineNo">4475</span><a name="line.4475"></a>
+<span class="sourceLineNo">4476</span>  void checkFamily(final byte[] family) throws NoSuchColumnFamilyException {<a name="line.4476"></a>
+<span class="sourceLineNo">4477</span>    if (!this.htableDescriptor.hasColumnFamily(family)) {<a name="line.4477"></a>
+<span class="sourceLineNo">4478</span>      throw new NoSuchColumnFamilyException(<a name="line.4478"></a>
+<span class="sourceLineNo">4479</span>          "Column family " + Bytes.toString(family) + " does not exist in region " + this<a name="line.4479"></a>
+<span class="sourceLineNo">4480</span>              + " in table " + this.htableDescriptor);<a name="line.4480"></a>
+<span class="sourceLineNo">4481</span>    }<a name="line.4481"></a>
+<span class="sourceLineNo">4482</span>  }<a name="line.4482"></a>
+<span class="sourceLineNo">4483</span><a name="line.4483"></a>
+<span class="sourceLineNo">4484</span>  /**<a name="line.4484"></a>
+<span class="sourceLineNo">4485</span>   * Check the collection of families for valid timestamps<a name="line.4485"></a>
+<span class="sourceLineNo">4486</span>   * @param familyMap<a name="line.4486"></a>
+<span class="sourceLineNo">4487</span>   * @param now current timestamp<a name="line.4487"></a>
+<span class="sourceLineNo">4488</span>   * @throws FailedSanityCheckException<a name="line.4488"></a>
+<span class="sourceLineNo">4489</span>   */<a name="line.4489"></a>
+<span class="sourceLineNo">4490</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4490"></a>
+<span class="sourceLineNo">4491</span>      throws FailedSanityCheckException {<a name="line.4491"></a>
+<span class="sourceLineNo">4492</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4492"></a>
+<span class="sourceLineNo">4493</span>      return;<a name="line.4493"></a>
 <span class="sourceLineNo">4494</span>    }<a name="line.4494"></a>
-<span class="sourceLineNo">4495</span>  }<a name="line.4495"></a>
-<span class="sourceLineNo">4496</span><a name="line.4496"></a>
-<span class="sourceLineNo">4497</span>  /*<a name="line.4497"></a>
-<span class="sourceLineNo">4498</span>   * @param size<a name="line.4498"></a>
-<span class="sourceLineNo">4499</span>   * @return True if size is over the flush threshold<a name="line.4499"></a>
-<span class="sourceLineNo">4500</span>   */<a name="line.4500"></a>
-<span class="sourceLineNo">4501</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4501"></a>
-<span class="sourceLineNo">4502</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4502"></a>
-<span class="sourceLineNo">4503</span>  }<a name="line.4503"></a>
-<span class="sourceLineNo">4504</span><a name="line.4504"></a>
-<span class="sourceLineNo">4505</span>  /**<a name="line.4505"></a>
-<span class="sourceLineNo">4506</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4506"></a>
-<span class="sourceLineNo">4507</span>   * the recovered edits back up into this region.<a name="line.4507"></a>
-<span class="sourceLineNo">4508</span>   *<a name="line.4508"></a>
-<span class="sourceLineNo">4509</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4509"></a>
-<span class="sourceLineNo">4510</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4510"></a>
-<span class="sourceLineNo">4511</span>   * reflected in the HFiles.)<a name="line.4511"></a>
-<span class="sourceLineNo">4512</span>   *<a name="line.4512"></a>
-<span class="sourceLineNo">4513</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4513"></a>
-<span class="sourceLineNo">4514</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4514"></a>
-<span class="sourceLineNo">4515</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4515"></a>
-<span class="sourceLineNo">4516</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4516"></a>
-<span class="sourceLineNo">4517</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4517"></a>
-<span class="sourceLineNo">4518</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4518"></a>
-<span class="sourceLineNo">4519</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4519"></a>
-<span class="sourceLineNo">4520</span>   * edits.<a name="line.4520"></a>
-<span class="sourceLineNo">4521</span>   *<a name="line.4521"></a>
-<span class="sourceLineNo">4522</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4522"></a>
-<span class="sourceLineNo">4523</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4523"></a>
-<span class="sourceLineNo">4524</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4524"></a>
-<span class="sourceLineNo">4525</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4525"></a>
-<span class="sourceLineNo">4526</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4526"></a>
-<span class="sourceLineNo">4527</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4527"></a>
-<span class="sourceLineNo">4528</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4528"></a>
-<span class="sourceLineNo">4529</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4529"></a>
-<span class="sourceLineNo">4530</span>   * make sense in a this single region context only -- until we online.<a name="line.4530"></a>
-<span class="sourceLineNo">4531</span>   *<a name="line.4531"></a>
-<span class="sourceLineNo">4532</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4532"></a>
-<span class="sourceLineNo">4533</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4533"></a>
-<span class="sourceLineNo">4534</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4534"></a>
-<span class="sourceLineNo">4535</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4535"></a>
-<span class="sourceLineNo">4536</span>   * @throws IOException<a name="line.4536"></a>
-<span class="sourceLineNo">4537</span>   */<a name="line.4537"></a>
-<span class="sourceLineNo">4538</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4538"></a>
-<span class="sourceLineNo">4539</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4539"></a>
-<span class="sourceLineNo">4540</span>      throws IOException {<a name="line.4540"></a>
-<span class="sourceLineNo">4541</span>    long minSeqIdForTheRegion = -1;<a name="line.4541"></a>
-<span class="sourceLineNo">4542</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4542"></a>
-<span class="sourceLineNo">4543</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4543"></a>
-<span class="sourceLineNo">4544</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4544"></a>
-<span class="sourceLineNo">4545</span>      }<a name="line.4545"></a>
-<span class="sourceLineNo">4546</span>    }<a name="line.4546"></a>
-<span class="sourceLineNo">4547</span>    long seqid = minSeqIdForTheRegion;<a name="line.4547"></a>
-<span class="sourceLineNo">4548</span><a name="line.4548"></a>
-<span class="sourceLineNo">4549</span>    FileSystem walFS = getWalFileSystem();<a name="line.4549"></a>
-<span class="sourceLineNo">4550</span>    FileSystem rootFS = getFilesystem();<a name="line.4550"></a>
-<span class="sourceLineNo">4551</span>    Path regionDir = getWALRegionDir();<a name="line.4551"></a>
-<span class="sourceLineNo">4552</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4552"></a>
-<span class="sourceLineNo">4553</span><a name="line.4553"></a>
-<span class="sourceLineNo">4554</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4554"></a>
-<span class="sourceLineNo">4555</span>    // under the root dir even if walDir is set.<a name="line.4555"></a>
-<span class="sourceLineNo">4556</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4556"></a>
-<span class="sourceLineNo">4557</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4557"></a>
-<span class="sourceLineNo">4558</span>      filesUnderRootDir =<a name="line.4558"></a>
-<span class="sourceLineNo">4559</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4559"></a>
-<span class="sourceLineNo">4560</span>      seqid = Math.max(seqid,<a name="line.4560"></a>
-<span class="sourceLineNo">4561</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4561"></a>
-<span class="sourceLineNo">4562</span>              defaultRegionDir));<a name="line.4562"></a>
-<span class="sourceLineNo">4563</span>    }<a name="line.4563"></a>
+<span class="sourceLineNo">4495</span>    long maxTs = now + timestampSlop;<a name="line.4495"></a>
+<span class="sourceLineNo">4496</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4496"></a>
+<span class="sourceLineNo">4497</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4497"></a>
+<span class="sourceLineNo">4498</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4498"></a>
+<span class="sourceLineNo">4499</span>      assert kvs instanceof RandomAccess;<a name="line.4499"></a>
+<span class="sourceLineNo">4500</span>      int listSize  = kvs.size();<a name="line.4500"></a>
+<span class="sourceLineNo">4501</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4501"></a>
+<span class="sourceLineNo">4502</span>        Cell cell = kvs.get(i);<a name="line.4502"></a>
+<span class="sourceLineNo">4503</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4503"></a>
+<span class="sourceLineNo">4504</span>        long ts = cell.getTimestamp();<a name="line.4504"></a>
+<span class="sourceLineNo">4505</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4505"></a>
+<span class="sourceLineNo">4506</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4506"></a>
+<span class="sourceLineNo">4507</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4507"></a>
+<span class="sourceLineNo">4508</span>        }<a name="line.4508"></a>
+<span class="sourceLineNo">4509</span>      }<a name="line.4509"></a>
+<span class="sourceLineNo">4510</span>    }<a name="line.4510"></a>
+<span class="sourceLineNo">4511</span>  }<a name="line.4511"></a>
+<span class="sourceLineNo">4512</span><a name="line.4512"></a>
+<span class="sourceLineNo">4513</span>  /*<a name="line.4513"></a>
+<span class="sourceLineNo">4514</span>   * @param size<a name="line.4514"></a>
+<span class="sourceLineNo">4515</span>   * @return True if size is over the flush threshold<a name="line.4515"></a>
+<span class="sourceLineNo">4516</span>   */<a name="line.4516"></a>
+<span class="sourceLineNo">4517</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4517"></a>
+<span class="sourceLineNo">4518</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4518"></a>
+<span class="sourceLineNo">4519</span>  }<a name="line.4519"></a>
+<span class="sourceLineNo">4520</span><a name="line.4520"></a>
+<span class="sourceLineNo">4521</span>  /**<a name="line.4521"></a>
+<span class="sourceLineNo">4522</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4522"></a>
+<span class="sourceLineNo">4523</span>   * the recovered edits back up into this region.<a name="line.4523"></a>
+<span class="sourceLineNo">4524</span>   *<a name="line.4524"></a>
+<span class="sourceLineNo">4525</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4525"></a>
+<span class="sourceLineNo">4526</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4526"></a>
+<span class="sourceLineNo">4527</span>   * reflected in the HFiles.)<a name="line.4527"></a>
+<span class="sourceLineNo">4528</span>   *<a name="line.4528"></a>
+<span class="sourceLineNo">4529</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4529"></a>
+<span class="sourceLineNo">4530</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4530"></a>
+<span class="sourceLineNo">4531</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4531"></a>
+<span class="sourceLineNo">4532</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4532"></a>
+<span class="sourceLineNo">4533</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4533"></a>
+<span class="sourceLineNo">4534</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4534"></a>
+<span class="sourceLineNo">4535</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4535"></a>
+<span class="sourceLineNo">4536</span>   * edits.<a name="line.4536"></a>
+<span class="sourceLineNo">4537</span>   *<a name="line.4537"></a>
+<span class="sourceLineNo">4538</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4538"></a>
+<span class="sourceLineNo">4539</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4539"></a>
+<span class="sourceLineNo">4540</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4540"></a>
+<span class="sourceLineNo">4541</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4541"></a>
+<span class="sourceLineNo">4542</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4542"></a>
+<span class="sourceLineNo">4543</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4543"></a>
+<span class="sourceLineNo">4544</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4544"></a>
+<span class="sourceLineNo">4545</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4545"></a>
+<span class="sourceLineNo">4546</span>   * make sense in a this single region context only -- until we online.<a name="line.4546"></a>
+<span class="sourceLineNo">4547</span>   *<a name="line.4547"></a>
+<span class="sourceLineNo">4548</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4548"></a>
+<span class="sourceLineNo">4549</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4549"></a>
+<span class="sourceLineNo">4550</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4550"></a>
+<span class="sourceLineNo">4551</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4551"></a>
+<span class="sourceLineNo">4552</span>   * @throws IOException<a name="line.4552"></a>
+<span class="sourceLineNo">4553</span>   */<a name="line.4553"></a>
+<span class="sourceLineNo">4554</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4554"></a>
+<span class="sourceLineNo">4555</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4555"></a>
+<span class="sourceLineNo">4556</span>      throws IOException {<a name="line.4556"></a>
+<span class="sourceLineNo">4557</span>    long minSeqIdForTheRegion = -1;<a name="line.4557"></a>
+<span class="sourceLineNo">4558</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4558"></a>
+<span class="sourceLineNo">4559</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4559"></a>
+<span class="sourceLineNo">4560</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4560"></a>
+<span class="sourceLineNo">4561</span>      }<a name="line.4561"></a>
+<span class="sourceLineNo">4562</span>    }<a name="line.4562"></a>
+<span class="sourceLineNo">4563</span>    long seqid = minSeqIdForTheRegion;<a name="line.4563"></a>
 <span class="sourceLineNo">4564</span><a name="line.4564"></a>
-<span class="sourceLineNo">4565</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4565"></a>
-<span class="sourceLineNo">4566</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4566"></a>
-<span class="sourceLineNo">4567</span>        files, reporter, regionDir));<a name="line.4567"></a>
-<span class="sourceLineNo">4568</span><a name="line.4568"></a>
-<span class="sourceLineNo">4569</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4569"></a>
-<span class="sourceLineNo">4570</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4570"></a>
-<span class="sourceLineNo">4571</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4571"></a>
-<span class="sourceLineNo">4572</span>    }<a name="line.4572"></a>
-<span class="sourceLineNo">4573</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4573"></a>
-<span class="sourceLineNo">4574</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4574"></a>
-<span class="sourceLineNo">4575</span>      // For debugging data loss issues!<a name="line.4575"></a>
-<span class="sourceLineNo">4576</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4576"></a>
-<span class="sourceLineNo">4577</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4577"></a>
-<span class="sourceLineNo">4578</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4578"></a>
-<span class="sourceLineNo">4579</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4579"></a>
-<span class="sourceLineNo">4580</span>      for (Path file: files) {<a name="line.4580"></a>
-<span class="sourceLineNo">4581</span>        fakeStoreFiles.add(<a name="line.4581"></a>
-<span class="sourceLineNo">4582</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4582"></a>
-<span class="sourceLineNo">4583</span>      }<a name="line.4583"></a>
-<span class="sourceLineNo">4584</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4584"></a>
-<span class="sourceLineNo">4585</span>    } else {<a name="line.4585"></a>
-<span class="sourceLineNo">4586</span>      if (filesUnderRootDir != null) {<a name="line.4586"></a>
-<span class="sourceLineNo">4587</span>        for (Path file : filesUnderRootDir) {<a name="line.4587"></a>
-<span class="sourceLineNo">4588</span>          if (!rootFS.delete(file, false)) {<a name="line.4588"></a>
-<span class="sourceLineNo">4589</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4589"></a>
-<span class="sourceLineNo">4590</span>          } else {<a name="line.4590"></a>
-<span class="sourceLineNo">4591</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4591"></a>
-<span class="sourceLineNo">4592</span>          }<a name="line.4592"></a>
-<span class="sourceLineNo">4593</span>        }<a name="line.4593"></a>
-<span class="sourceLineNo">4594</span>      }<a name="line.4594"></a>
-<span class="sourceLineNo">4595</span>      for (Path file: files) {<a name="line.4595"></a>
-<span class="sourceLineNo">4596</span>        if (!walFS.delete(file, false)) {<a name="line.4596"></a>
-<span class="sourceLineNo">4597</span>          LOG.error("Failed delete of " + file);<a name="line.4597"></a>
-<span class="sourceLineNo">4598</span>        } else {<a name="line.4598"></a>
-<span class="sourceLineNo">4599</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4599"></a>
-<span class="sourceLineNo">4600</span>        }<a name="line.4600"></a>
-<span class="sourceLineNo">4601</span>      }<a name="line.4601"></a>
-<span class="sourceLineNo">4602</span>    }<a name="line.4602"></a>
-<span class="sourceLineNo">4603</span>    return seqid;<a name="line.4603"></a>
-<span class="sourceLineNo">4604</span>  }<a name="line.4604"></a>
-<span class="sourceLineNo">4605</span><a name="line.4605"></a>
-<span class="sourceLineNo">4606</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4606"></a>
-<span class="sourceLineNo">4607</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4607"></a>
-<span class="sourceLineNo">4608</span>      throws IOException {<a name="line.4608"></a>
-<span class="sourceLineNo">4609</span>    long seqid = minSeqIdForTheRegion;<a name="line.4609"></a>
-<span class="sourceLineNo">4610</span>    if (LOG.isDebugEnabled()) {<a name="line.4610"></a>
-<span class="sourceLineNo">4611</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4611"></a>
-<span class="sourceLineNo">4612</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4612"></a>
-<span class="sourceLineNo">4613</span>    }<a name="line.4613"></a>
-<span class="sourceLineNo">4614</span><a name="line.4614"></a>
-<span class="sourceLineNo">4615</span>    if (files == null || files.isEmpty()) {<a name="line.4615"></a>
-<span class="sourceLineNo">4616</span>      return minSeqIdForTheRegion;<a name="line.4616"></a>
-<span class="sourceLineNo">4617</span>    }<a name="line.4617"></a>
-<span class="sourceLineNo">4618</span><a name="line.4618"></a>
-<span class="sourceLineNo">4619</span>    for (Path edits: files) {<a name="line.4619"></a>
-<span class="sourceLineNo">4620</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4620"></a>
-<span class="sourceLineNo">4621</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4621"></a>
-<span class="sourceLineNo">4622</span>        continue;<a name="line.4622"></a>
-<span class="sourceLineNo">4623</span>      }<a name="line.4623"></a>
-<span class="sourceLineNo">4624</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4624"></a>
-<span class="sourceLineNo">4625</span><a name="line.4625"></a>
-<span class="sourceLineNo">4626</span>      long maxSeqId;<a name="line.4626"></a>
-<span class="sourceLineNo">4627</span>      String fileName = edits.getName();<a name="line.4627"></a>
-<span class="sourceLineNo">4628</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4628"></a>
-<span class="sourceLineNo">4629</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4629"></a>
-<span class="sourceLineNo">4630</span>        if (LOG.isDebugEnabled()) {<a name="line.4630"></a>
-<span class="sourceLineNo">4631</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4631"></a>
-<span class="sourceLineNo">4632</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4632"></a>
-<span class="sourceLineNo">4633</span>              + ", skipped the whole file, path=" + edits;<a name="line.4633"></a>
-<span class="sourceLineNo">4634</span>          LOG.debug(msg);<a name="line.4634"></a>
-<span class="sourceLineNo">4635</span>        }<a name="line.4635"></a>
-<span class="sourceLineNo">4636</span>        continue;<a name="line.4636"></a>
-<span class="sourceLineNo">4637</span>      }<a name="line.4637"></a>
-<span class="sourceLineNo">4638</span><a name="line.4638"></a>
-<span class="sourceLineNo">4639</span>      try {<a name="line.4639"></a>
-<span class="sourceLineNo">4640</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4640"></a>
-<span class="sourceLineNo">4641</span>        // if seqId is greater<a name="line.4641"></a>
-<span class="sourceLineNo">4642</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4642"></a>
-<span class="sourceLineNo">4643</span>      } catch (IOException e) {<a name="line.4643"></a>
-<span class="sourceLineNo">4644</span>        boolean skipErrors = conf.getBoolean(<a name="line.4644"></a>
-<span class="sourceLineNo">4645</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4645"></a>
-<span class="sourceLineNo">4646</span>            conf.getBoolean(<a name="line.4646"></a>
-<span class="sourceLineNo">4647</span>                "hbase.skip.errors",<a name="line.4647"></a>
-<span class="sourceLineNo">4648</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4648"></a>
-<span class="sourceLineNo">4649</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4649"></a>
-<span class="sourceLineNo">4650</span>          LOG.warn(<a name="line.4650"></a>
-<span class="sourceLineNo">4651</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4651"></a>
-<span class="sourceLineNo">4652</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4652"></a>
-<span class="sourceLineNo">4653</span>        }<a name="line.4653"></a>
-<span class="sourceLineNo">4654</span>        if (skipErrors) {<a name="line.4654"></a>
-<span class="sourceLineNo">4655</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4655"></a>
-<span class="sourceLineNo">4656</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4656"></a>
-<span class="sourceLineNo">4657</span>              + "=true so continuing. Renamed " + edits +<a name="line.4657"></a>
-<span class="sourceLineNo">4658</span>              " as " + p, e);<a name="line.4658"></a>
-<span class="sourceLineNo">4659</span>        } else {<a name="line.4659"></a>
-<span class="sourceLineNo">4660</span>          throw e;<a name="line.4660"></a>
-<span class="sourceLineNo">4661</span>        }<a name="line.4661"></a>
-<span class="sourceLineNo">4662</span>      }<a name="line.4662"></a>
-<span class="sourceLineNo">4663</span>    }<a name="line.4663"></a>
-<span class="sourceLineNo">4664</span>    return seqid;<a name="line.4664"></a>
-<span class="sourceLineNo">4665</span>  }<a name="line.4665"></a>
-<span class="sourceLineNo">4666</span><a name="line.4666"></a>
-<span class="sourceLineNo">4667</span>  /*<a name="line.4667"></a>
-<span class="sourceLineNo">4668</span>   * @param edits File of recovered edits.<a name="line.4668"></a>
-<span class="sourceLineNo">4669</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4669"></a>
-<span class="sourceLineNo">4670</span>   * must be larger than this to be replayed for each store.<a name="line.4670"></a>
-<span class="sourceLineNo">4671</span>   * @param reporter<a name="line.4671"></a>
-<span class="sourceLineNo">4672</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4672"></a>
-<span class="sourceLineNo">4673</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4673"></a>
-<span class="sourceLineNo">4674</span>   * @throws IOException<a name="line.4674"></a>
-<span class="sourceLineNo">4675</span>   */<a name="line.4675"></a>
-<span class="sourceLineNo">4676</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4676"></a>
-<span class="sourceLineNo">4677</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4677"></a>
-<span class="sourceLineNo">4678</span>    throws IOException {<a name="line.4678"></a>
-<span class="sourceLineNo">4679</span>    String msg = "Replaying edits from " + edits;<a name="line.4679"></a>
-<span class="sourceLineNo">4680</span>    LOG.info(msg);<a name="line.4680"></a>
-<span class="sourceLineNo">4681</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4681"></a>
+<span class="sourceLineNo">4565</span>    FileSystem walFS = getWalFileSystem();<a name="line.4565"></a>
+<span class="sourceLineNo">4566</span>    FileSystem rootFS = getFilesystem();<a name="line.4566"></a>
+<span class="sourceLineNo">4567</span>    Path regionDir = getWALRegionDir();<a name="line.4567"></a>
+<span class="sourceLineNo">4568</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4568"></a>
+<span class="sourceLineNo">4569</span><a name="line.4569"></a>
+<span class="sourceLineNo">4570</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4570"></a>
+<span class="sourceLineNo">4571</span>    // under the root dir even if walDir is set.<a name="line.4571"></a>
+<span class="sourceLineNo">4572</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4572"></a>
+<span class="sourceLineNo">4573</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4573"></a>
+<span class="sourceLineNo">4574</span>      filesUnderRootDir =<a name="line.4574"></a>
+<span class="sourceLineNo">4575</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4575"></a>
+<span class="sourceLineNo">4576</span>      seqid = Math.max(seqid,<a name="line.4576"></a>
+<span class="sourceLineNo">4577</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4577"></a>
+<span class="sourceLineNo">4578</span>              defaultRegionDir));<a name="line.4578"></a>
+<span class="sourceLineNo">4579</span>    }<a name="line.4579"></a>
+<span class="sourceLineNo">4580</span><a name="line.4580"></a>
+<span class="sourceLineNo">4581</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4581"></a>
+<span class="sourceLineNo">4582</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4582"></a>
+<span class="sourceLineNo">4583</span>        files, reporter, regionDir));<a name="line.4583"></a>
+<span class="sourceLineNo">4584</span><a name="line.4584"></a>
+<span class="sourceLineNo">4585</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4585"></a>
+<span class="sourceLineNo">4586</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4586"></a>
+<span class="sourceLineNo">4587</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4587"></a>
+<span class="sourceLineNo">4588</span>    }<a name="line.4588"></a>
+<span class="sourceLineNo">4589</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4589"></a>
+<span class="sourceLineNo">4590</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4590"></a>
+<span class="sourceLineNo">4591</span>      // For debugging data loss issues!<a name="line.4591"></a>
+<span class="sourceLineNo">4592</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4592"></a>
+<span class="sourceLineNo">4593</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4593"></a>
+<span class="sourceLineNo">4594</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4594"></a>
+<span class="sourceLineNo">4595</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4595"></a>
+<span class="sourceLineNo">4596</span>      for (Path file: files) {<a name="line.4596"></a>
+<span class="sourceLineNo">4597</span>        fakeStoreFiles.add(<a name="line.4597"></a>
+<span class="sourceLineNo">4598</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4598"></a>
+<span class="sourceLineNo">4599</span>      }<a name="line.4599"></a>
+<span class="sourceLineNo">4600</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4600"></a>
+<span class="sourceLineNo">4601</span>    } else {<a name="line.4601"></a>
+<span class="sourceLineNo">4602</span>      if (filesUnderRootDir != null) {<a name="line.4602"></a>
+<span class="sourceLineNo">4603</span>        for (Path file : filesUnderRootDir) {<a name="line.4603"></a>
+<span class="sourceLineNo">4604</span>          if (!rootFS.delete(file, false)) {<a name="line.4604"></a>
+<span class="sourceLineNo">4605</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4605"></a>
+<span class="sourceLineNo">4606</span>          } else {<a name="line.4606"></a>
+<span class="sourceLineNo">4607</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4607"></a>
+<span class="sourceLineNo">4608</span>          }<a name="line.4608"></a>
+<span class="sourceLineNo">4609</span>        }<a name="line.4609"></a>
+<span class="sourceLineNo">4610</span>      }<a name="line.4610"></a>
+<span class="sourceLineNo">4611</span>      for (Path file: files) {<a name="line.4611"></a>
+<span class="sourceLineNo">4612</span>        if (!walFS.delete(file, false)) {<a name="line.4612"></a>
+<span class="sourceLineNo">4613</span>          LOG.error("Failed delete of " + file);<a name="line.4613"></a>
+<span class="sourceLineNo">4614</span>        } else {<a name="line.4614"></a>
+<span class="sourceLineNo">4615</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4615"></a>
+<span class="sourceLineNo">4616</span>        }<a name="line.4616"></a>
+<span class="sourceLineNo">4617</span>      }<a name="line.4617"></a>
+<span class="sourceLineNo">4618</span>    }<a name="line.4618"></a>
+<span class="sourceLineNo">4619</span>    return seqid;<a name="line.4619"></a>
+<span class="sourceLineNo">4620</span>  }<a name="line.4620"></a>
+<span class="sourceLineNo">4621</span><a name="line.4621"></a>
+<span class="sourceLineNo">4622</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4622"></a>
+<span class="sourceLineNo">4623</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4623"></a>
+<span class="sourceLineNo">4624</span>      throws IOException {<a name="line.4624"></a>
+<span class="sourceLineNo">4625</span>    long seqid = minSeqIdForTheRegion;<a name="line.4625"></a>
+<span class="sourceLineNo">4626</span>    if (LOG.isDebugEnabled()) {<a name="line.4626"></a>
+<span class="sourceLineNo">4627</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4627"></a>
+<span class="sourceLineNo">4628</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4628"></a>
+<span class="sourceLineNo">4629</span>    }<a name="line.4629"></a>
+<span class="sourceLineNo">4630</span><a name="line.4630"></a>
+<span class="sourceLineNo">4631</span>    if (files == null || files.isEmpty()) {<a name="line.4631"></a>
+<span class="sourceLineNo">4632</span>      return minSeqIdForTheRegion;<a name="line.4632"></a>
+<span class="sourceLineNo">4633</span>    }<a name="line.4633"></a>
+<span class="sourceLineNo">4634</span><a name="line.4634"></a>
+<span class="sourceLineNo">4635</span>    for (Path edits: files) {<a name="line.4635"></a>
+<span class="sourceLineNo">4636</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4636"></a>
+<span class="sourceLineNo">4637</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4637"></a>
+<span class="sourceLineNo">4638</span>        continue;<a name="line.4638"></a>
+<span class="sourceLineNo">4639</span>      }<a name="line.4639"></a>
+<span class="sourceLineNo">4640</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4640"></a>
+<span class="sourceLineNo">4641</span><a name="line.4641"></a>
+<span class="sourceLineNo">4642</span>      long maxSeqId;<a name="line.4642"></a>
+<span class="sourceLineNo">4643</span>      String fileName = edits.getName();<a name="line.4643"></a>
+<span class="sourceLineNo">4644</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4644"></a>
+<span class="sourceLineNo">4645</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4645"></a>
+<span class="sourceLineNo">4646</span>        if (LOG.isDebugEnabled()) {<a name="line.4646"></a>
+<span class="sourceLineNo">4647</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4647"></a>
+<span class="sourceLineNo">4648</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4648"></a>
+<span class="sourceLineNo">4649</span>              + ", skipped the whole file, path=" + edits;<a name="line.4649"></a>
+<span class="sourceLineNo">4650</span>          LOG.debug(msg);<a name="line.4650"></a>
+<span class="sourceLineNo">4651</span>        }<a name="line.4651"></a>
+<span class="sourceLineNo">4652</span>        continue;<a name="line.4652"></a>
+<span class="sourceLineNo">4653</span>      }<a name="line.4653"></a>
+<span class="sourceLineNo">4654</span><a name="line.4654"></a>
+<span class="sourceLineNo">4655</span>      try {<a name="line.4655"></a>
+<span class="sourceLineNo">4656</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4656"></a>
+<span class="sourceLineNo">4657</span>        // if seqId is greater<a name="line.4657"></a>
+<span class="sourceLineNo">4658</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4658"></a>
+<span class="sourceLineNo">4659</span>      } catch (IOException e) {<a name="line.4659"></a>
+<span class="sourceLineNo">4660</span>        boolean skipErrors = conf.getBoolean(<a name="line.4660"></a>
+<span class="sourceLineNo">4661</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4661"></a>
+<span class="sourceLineNo">4662</span>            conf.getBoolean(<a name="line.4662"></a>
+<span class="sourceLineNo">4663</span>                "hbase.skip.errors",<a name="line.4663"></a>
+<span class="sourceLineNo">4664</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4664"></a>
+<span class="sourceLineNo">4665</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4665"></a>
+<span class="sourceLineNo">4666</span>          LOG.warn(<a name="line.4666"></a>
+<span class="sourceLineNo">4667</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4667"></a>
+<span class="sourceLineNo">4668</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4668"></a>
+<span class="sourceLineNo">4669</span>        }<a name="line.4669"></a>
+<span class="sourceLineNo">4670</span>        if (skipErrors) {<a name="line.4670"></a>
+<span class="sourceLineNo">4671</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4671"></a>
+<span class="sourceLineNo">4672</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4672"></a>
+<span class="sourceLineNo">4673</span>              + "=true so continuing. Renamed " + edits +<a name="line.4673"></a>
+<span class="sourceLineNo">4674</span>              " as " + p, e);<a name="line.4674"></a>
+<span class="sourceLineNo">4675</span>        } else {<a name="line.4675"></a>
+<span class="sourceLineNo">4676</span>          throw e;<a name="line.4676"></a>
+<span class="sourceLineNo">4677</span>        }<a name="line.4677"></a>
+<span class="sourceLineNo">4678</span>      }<a name="line.4678"></a>
+<span class="sourceLineNo">4679</span>    }<a name="line.4679"></a>
+<span class="sourceLineNo">4680</span>    return seqid;<a name="line.4680"></a>
+<span class="sourceLineNo">4681</span>  }<a name="line.4681"></a>
 <span class="sourceLineNo">4682</span><a name="line.4682"></a>
-<span class="sourceLineNo">4683</span>    status.setStatus("Opening recovered edits");<a name="line.4683"></a>
-<span class="sourceLineNo">4684</span>    WAL.Reader reader = null;<a name="line.4684"></a>
-<span class="sourceLineNo">4685</span>    try {<a name="line.4685"></a>
-<span class="sourceLineNo">4686</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4686"></a>
-<span class="sourceLineNo">4687</span>      long currentEditSeqId = -1;<a name="line.4687"></a>
-<span class="sourceLineNo">4688</span>      long currentReplaySeqId = -1;<a name="line.4688"></a>
-<span class="sourceLineNo">4689</span>      long firstSeqIdInLog = -1;<a name="line.4689"></a>
-<span class="sourceLineNo">4690</span>      long skippedEdits = 0;<a name="line.4690"></a>
-<span class="sourceLineNo">4691</span>      long editsCount = 0;<a name="line.4691"></a>
-<span class="sourceLineNo">4692</span>      long intervalEdits = 0;<a name="line.4692"></a>
-<span class="sourceLineNo">4693</span>      WAL.Entry entry;<a name="line.4693"></a>
-<span class="sourceLineNo">4694</span>      HStore store = null;<a name="line.4694"></a>
-<span class="sourceLineNo">4695</span>      boolean reported_once = false;<a name="line.4695"></a>
-<span class="sourceLineNo">4696</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4696"></a>
-<span class="sourceLineNo">4697</span><a name="line.4697"></a>
-<span class="sourceLineNo">4698</span>      try {<a name="line.4698"></a>
-<span class="sourceLineNo">4699</span>        // How many edits seen before we check elapsed time<a name="line.4699"></a>
-<span class="sourceLineNo">4700</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4700"></a>
-<span class="sourceLineNo">4701</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4701"></a>
-<span class="sourceLineNo">4702</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4702"></a>
-<span class="sourceLineNo">4703</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4703"></a>
-<span class="sourceLineNo">4704</span><a name="line.4704"></a>
-<span class="sourceLineNo">4705</span>        if (coprocessorHost != null) {<a name="line.4705"></a>
-<span class="sourceLineNo">4706</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4706"></a>
-<span class="sourceLineNo">4707</span>        }<a name="line.4707"></a>
-<span class="sourceLineNo">4708</span><a name="line.4708"></a>
-<span class="sourceLineNo">4709</span>        while ((entry = reader.next()) != null) {<a name="line.4709"></a>
-<span class="sourceLineNo">4710</span>          WALKey key = entry.getKey();<a name="line.4710"></a>
-<span class="sourceLineNo">4711</span>          WALEdit val = entry.getEdit();<a name="line.4711"></a>
-<span class="sourceLineNo">4712</span><a name="line.4712"></a>
-<span class="sourceLineNo">4713</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4713"></a>
-<span class="sourceLineNo">4714</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4714"></a>
-<span class="sourceLineNo">4715</span>          }<a name="line.4715"></a>
-<span class="sourceLineNo">4716</span><a name="line.4716"></a>
-<span class="sourceLineNo">4717</span>          if (reporter != null) {<a name="line.4717"></a>
-<span class="sourceLineNo">4718</span>            intervalEdits += val.size();<a name="line.4718"></a>
-<span class="sourceLineNo">4719</span>            if (intervalEdits &gt;= interval) {<a name="line.4719"></a>
-<span class="sourceLineNo">4720</span>              // Number of edits interval reached<a name="line.4720"></a>
-<span class="sourceLineNo">4721</span>              intervalEdits = 0;<a name="line.4721"></a>
-<span class="sourceLineNo">4722</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4722"></a>
-<span class="sourceLineNo">4723</span>              if (lastReport + period &lt;= cur) {<a name="line.4723"></a>
-<span class="sourceLineNo">4724</span>                status.setStatus("Replaying edits..." +<a name="line.4724"></a>
-<span class="sourceLineNo">4725</span>                    " skipped=" + skippedEdits +<a name="line.4725"></a>
-<span class="sourceLineNo">4726</span>                    " edits=" + editsCount);<a name="line.4726"></a>
-<span class="sourceLineNo">4727</span>                // Timeout reached<a name="line.4727"></a>
-<span class="sourceLineNo">4728</span>                if(!reporter.progress()) {<a name="line.4728"></a>
-<span class="sourceLineNo">4729</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4729"></a>
-<span class="sourceLineNo">4730</span>                  LOG.warn(msg);<a name="line.4730"></a>
-<span class="sourceLineNo">4731</span>                  status.abort(msg);<a name="line.4731"></a>
-<span class="sourceLineNo">4732</span>                  throw new IOException(msg);<a name="line.4732"></a>
-<span class="sourceLineNo">4733</span>                }<a name="line.4733"></a>
-<span class="sourceLineNo">4734</span>                reported_once = true;<a name="line.4734"></a>
-<span class="sourceLineNo">4735</span>                lastReport = cur;<a name="line.4735"></a>
-<span class="sourceLineNo">4736</span>              }<a name="line.4736"></a>
-<span class="sourceLineNo">4737</span>            }<a name="line.4737"></a>
-<span class="sourceLineNo">4738</span>          }<a name="line.4738"></a>
-<span class="sourceLineNo">4739</span><a name="line.4739"></a>
-<span class="sourceLineNo">4740</span>          if (firstSeqIdInLog == -1) {<a name="line.4740"></a>
-<span class="sourceLineNo">4741</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4741"></a>
-<span class="sourceLineNo">4742</span>          }<a name="line.4742"></a>
-<span class="sourceLineNo">4743</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4743"></a>
-<span class="sourceLineNo">4744</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4744"></a>
-<span class="sourceLineNo">4745</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4745"></a>
-<span class="sourceLineNo">4746</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4746"></a>
-<span class="sourceLineNo">4747</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4747"></a>
-<span class="sourceLineNo">4748</span>                + "; edit=" + val);<a name="line.4748"></a>
-<span class="sourceLineNo">4749</span>          } else {<a name="line.4749"></a>
-<span class="sourceLineNo">4750</span>            currentEditSeqId = key.getSequenceId();<a name="line.4750"></a>
-<span class="sourceLineNo">4751</span>          }<a name="line.4751"></a>
-<span class="sourceLineNo">4752</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4752"></a>
-<span class="sourceLineNo">4753</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4753"></a>
-<span class="sourceLineNo">4754</span><a name="line.4754"></a>
-<span class="sourceLineNo">4755</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4755"></a>
-<span class="sourceLineNo">4756</span>          // instead of a KeyValue.<a name="line.4756"></a>
-<span class="sourceLineNo">4757</span>          if (coprocessorHost != null) {<a name="line.4757"></a>
-<span class="sourceLineNo">4758</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4758"></a>
-<span class="sourceLineNo">4759</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4759"></a>
-<span class="sourceLineNo">4760</span>              // if bypass this wal entry, ignore it ...<a name="line.4760"></a>
-<span class="sourceLineNo">4761</span>              continue;<a name="line.4761"></a>
-<span class="sourceLineNo">4762</span>            }<a name="line.4762"></a>
-<span class="sourceLineNo">4763</span>          }<a name="line.4763"></a>
-<span class="sourceLineNo">4764</span>          boolean checkRowWithinBoundary = false;<a name="line.4764"></a>
-<span class="sourceLineNo">4765</span>          // Check this edit is for this region.<a name="line.4765"></a>
-<span class="sourceLineNo">4766</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4766"></a>
-<span class="sourceLineNo">4767</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4767"></a>
-<span class="sourceLineNo">4768</span>            checkRowWithinBoundary = true;<a name="line.4768"></a>
-<span class="sourceLineNo">4769</span>          }<a name="line.4769"></a>
+<span class="sourceLineNo">4683</span>  /*<a name="line.4683"></a>
+<span class="sourceLineNo">4684</span>   * @param edits File of recovered edits.<a name="line.4684"></a>
+<span class="sourceLineNo">4685</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4685"></a>
+<span class="sourceLineNo">4686</span>   * must be larger than this to be replayed for each store.<a name="line.4686"></a>
+<span class="sourceLineNo">4687</span>   * @param reporter<a name="line.4687"></a>
+<span class="sourceLineNo">4688</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4688"></a>
+<span class="sourceLineNo">4689</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4689"></a>
+<span class="sourceLineNo">4690</span>   * @throws IOException<a name="line.4690"></a>
+<span class="sourceLineNo">4691</span>   */<a name="line.4691"></a>
+<span class="sourceLineNo">4692</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4692"></a>
+<span class="sourceLineNo">4693</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4693"></a>
+<span class="sourceLineNo">4694</span>    throws IOException {<a name="line.4694"></a>
+<span class="sourceLineNo">4695</span>    String msg = "Replaying edits from " + edits;<a name="line.4695"></a>
+<span class="sourceLineNo">4696</span>    LOG.info(msg);<a name="line.4696"></a>
+<span class="sourceLineNo">4697</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4697"></a>
+<span class="sourceLineNo">4698</span><a name="line.4698"></a>
+<span class="sourceLineNo">4699</span>    status.setStatus("Opening recovered edits");<a name="line.4699"></a>
+<span class="sourceLineNo">4700</span>    WAL.Reader reader = null;<a name="line.4700"></a>
+<span class="sourceLineNo">4701</span>    try {<a name="line.4701"></a>
+<span class="sourceLineNo">4702</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4702"></a>
+<span class="sourceLineNo">4703</span>      long currentEditSeqId = -1;<a name="line.4703"></a>
+<span class="sourceLineNo">4704</span>      long currentReplaySeqId = -1;<a name="line.4704"></a>
+<span class="sourceLineNo">4705</span>      long firstSeqIdInLog = -1;<a name="line.4705"></a>
+<span class="sourceLineNo">4706</span>      long skippedEdits = 0;<a name="line.4706"></a>
+<span class="sourceLineNo">4707</span>      long editsCount = 0;<a name="line.4707"></a>
+<span class="sourceLineNo">4708</span>      long intervalEdits = 0;<a name="line.4708"></a>
+<span class="sourceLineNo">4709</span>      WAL.Entry entry;<a name="line.4709"></a>
+<span class="sourceLineNo">4710</span>      HStore store = null;<a name="line.4710"></a>
+<span class="sourceLineNo">4711</span>      boolean reported_once = false;<a name="line.4711"></a>
+<span class="sourceLineNo">4712</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4712"></a>
+<span class="sourceLineNo">4713</span><a name="line.4713"></a>
+<span class="sourceLineNo">4714</span>      try {<a name="line.4714"></a>
+<span class="sourceLineNo">4715</span>        // How many edits seen before we check elapsed time<a name="line.4715"></a>
+<span class="sourceLineNo">4716</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4716"></a>
+<span class="sourceLineNo">4717</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4717"></a>
+<span class="sourceLineNo">4718</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4718"></a>
+<span class="sourceLineNo">4719</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4719"></a>
+<span class="sourceLineNo">4720</span><a name="line.4720"></a>
+<span class="sourceLineNo">4721</span>        if (coprocessorHost != null) {<a name="line.4721"></a>
+<span class="sourceLineNo">4722</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4722"></a>
+<span class="sourceLineNo">4723</span>        }<a name="line.4723"></a>
+<span class="sourceLineNo">4724</span><a name="line.4724"></a>
+<span class="sourceLineNo">4725</span>        while ((entry = reader.next()) != null) {<a name="line.4725"></a>
+<span class="sourceLineNo">4726</span>          WALKey key = entry.getKey();<a name="line.4726"></a>
+<span class="sourceLineNo">4727</span>          WALEdit val = entry.getEdit();<a name="line.4727"></a>
+<span class="sourceLineNo">4728</span><a name="line.4728"></a>
+<span class="sourceLineNo">4729</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4729"></a>
+<span class="sourceLineNo">4730</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4730"></a>
+<span class="sourceLineNo">4731</span>          }<a name="line.4731"></a>
+<span class="sourceLineNo">4732</span><a name="line.4732"></a>
+<span class="sourceLineNo">4733</span>          if (reporter != null) {<a name="line.4733"></a>
+<span class="sourceLineNo">4734</span>            intervalEdits += val.size();<a name="line.4734"></a>
+<span class="sourceLineNo">4735</span>            if (intervalEdits &gt;= interval) {<a name="line.4735"></a>
+<span class="sourceLineNo">4736</span>              // Number of edits interval reached<a name="line.4736"></a>
+<span class="sourceLineNo">4737</span>              intervalEdits = 0;<a name="line.4737"></a>
+<span class="sourceLineNo">4738</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4738"></a>
+<span class="sourceLineNo">4739</span>              if (lastReport + period &lt;= cur) {<a name="line.4739"></a>
+<span class="sourceLineNo">4740</span>                status.setStatus("Replaying edits..." +<a name="line.4740"></a>
+<span class="sourceLineNo">4741</span>                    " skipped=" + skippedEdits +<a name="line.4741"></a>
+<span class="sourceLineNo">4742</span>                    " edits=" + editsCount);<a name="line.4742"></a>
+<span class="sourceLineNo">4743</span>                // Timeout reached<a name="line.4743"></a>
+<span class="sourceLineNo">4744</span>                if(!reporter.progress()) {<a name="line.4744"></a>
+<span class="sourceLineNo">4745</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4745"></a>
+<span class="sourceLineNo">4746</span>                  LOG.warn(msg);<a name="line.4746"></a>
+<span class="sourceLineNo">4747</span>                  status.abort(msg);<a name="line.4747"></a>
+<span class="sourceLineNo">4748</span>                  throw new IOException(msg);<a name="line.4748"></a>
+<span class="sourceLineNo">4749</span>                }<a name="line.4749"></a>
+<span class="sourceLineNo">4750</span>                reported_once = true;<a name="line.4750"></a>
+<span class="sourceLineNo">4751</span>                lastReport = cur;<a name="line.4751"></a>
+<span class="sourceLineNo">4752</span>              }<a name="line.4752"></a>
+<span class="sourceLineNo">4753</span>            }<a name="line.4753"></a>
+<span class="sourceLineNo">4754</span>          }<a name="line.4754"></a>
+<span class="sourceLineNo">4755</span><a name="line.4755"></a>
+<span class="sourceLineNo">4756</span>          if (firstSeqIdInLog == -1) {<a name="line.4756"></a>
+<span class="sourceLineNo">4757</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4757"></a>
+<span class="sourceLineNo">4758</span>          }<a name="line.4758"></a>
+<span class="sourceLineNo">4759</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4759"></a>
+<span class="sourceLineNo">4760</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4760"></a>
+<span class="sourceLineNo">4761</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4761"></a>
+<span class="sourceLineNo">4762</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4762"></a>
+<span class="sourceLineNo">4763</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4763"></a>
+<span class="sourceLineNo">4764</span>                + "; edit=" + val);<a name="line.4764"></a>
+<span class="sourceLineNo">4765</span>          } else {<a name="line.4765"></a>
+<span class="sourceLineNo">4766</span>            currentEditSeqId = key.getSequenceId();<a name="line.4766"></a>
+<span class="sourceLineNo">4767</span>          }<a name="line.4767"></a>
+<span class="sourceLineNo">4768</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4768"></a>
+<span class="sourceLineNo">4769</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4769"></a>
 <span class="sourceLineNo">4770</span><a name="line.4770"></a>
-<span class="sourceLineNo">4771</span>          boolean flush = false;<a name="line.4771"></a>
-<span class="sourceLineNo">4772</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4772"></a>
-<span class="sourceLineNo">4773</span>          for (Cell cell: val.getCells()) {<a name="line.4773"></a>
-<span class="sourceLineNo">4774</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4774"></a>
-<span class="sourceLineNo">4775</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4775"></a>
-<span class="sourceLineNo">4776</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4776"></a>
-<span class="sourceLineNo">4777</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4777"></a>
-<span class="sourceLineNo">4778</span>              if (!checkRowWithinBoundary) {<a name="line.4778"></a>
-<span class="sourceLineNo">4779</span>                //this is a special edit, we should handle it<a name="line.4779"></a>
-<span class="sourceLineNo">4780</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4780"></a>
-<span class="sourceLineNo">4781</span>                if (compaction != null) {<a name="line.4781"></a>
-<span class="sourceLineNo">4782</span>                  //replay the compaction<a name="line.4782"></a>
-<span class="sourceLineNo">4783</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4783"></a>
-<span class="sourceLineNo">4784</span>                }<a name="line.4784"></a>
-<span class="sourceLineNo">4785</span>              }<a name="line.4785"></a>
-<span class="sourceLineNo">4786</span>              skippedEdits++;<a name="line.4786"></a>
-<span class="sourceLineNo">4787</span>              continue;<a name="line.4787"></a>
-<span class="sourceLineNo">4788</span>            }<a name="line.4788"></a>
-<span class="sourceLineNo">4789</span>            // Figure which store the edit is meant for.<a name="line.4789"></a>
-<span class="sourceLineNo">4790</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4790"></a>
-<span class="sourceLineNo">4791</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4791"></a>
-<span class="sourceLineNo">4792</span>              store = getStore(cell);<a name="line.4792"></a>
-<span class="sourceLineNo">4793</span>            }<a name="line.4793"></a>
-<span class="sourceLineNo">4794</span>            if (store == null) {<a name="line.4794"></a>
-<span class="sourceLineNo">4795</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4795"></a>
-<span class="sourceLineNo">4796</span>              // crash and redeploy?<a name="line.4796"></a>
-<span class="sourceLineNo">4797</span>              LOG.warn("No family for " + cell);<a name="line.4797"></a>
-<span class="sourceLineNo">4798</span>              skippedEdits++;<a name="line.4798"></a>
-<span class="sourceLineNo">4799</span>              continue;<a name="line.4799"></a>
-<span class="sourceLineNo">4800</span>            }<a name="line.4800"></a>
-<span class="sourceLineNo">4801</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4801"></a>
-<span class="sourceLineNo">4802</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4802"></a>
-<span class="sourceLineNo">4803</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4803"></a>
-<span class="sourceLineNo">4804</span>              skippedEdits++;<a name="line.4804"></a>
-<span class="sourceLineNo">4805</span>              continue;<a name="line.4805"></a>
-<span class="sourceLineNo">4806</span>            }<a name="line.4806"></a>
-<span class="sourceLineNo">4807</span>            // Now, figure if we should skip this edit.<a name="line.4807"></a>
-<span class="sourceLineNo">4808</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4808"></a>
-<span class="sourceLineNo">4809</span>                .getName())) {<a name="line.4809"></a>
-<span class="sourceLineNo">4810</span>              skippedEdits++;<a name="line.4810"></a>
-<span class="sourceLineNo">4811</span>              continue;<a name="line.4811"></a>
-<span class="sourceLineNo">4812</span>            }<a name="line.4812"></a>
-<span class="sourceLineNo">4813</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4813"></a>
-<span class="sourceLineNo">4814</span><a name="line.4814"></a>
-<span class="sourceLineNo">4815</span>            restoreEdit(store, cell, memStoreSizing);<a name="line.4815"></a>
-<span class="sourceLineNo">4816</span>            editsCount++;<a name="line.4816"></a>
-<span class="sourceLineNo">4817</span>          }<a name="line.4817"></a>
-<span class="sourceLineNo">4818</span>          MemStoreSize mss = memStoreSizing.getMemStoreSize();<a name="line.4818"></a>
-<span class="sourceLineNo">4819</span>          incMemStoreSize(mss);<a name="line.4819"></a>
-<span class="sourceLineNo">4820</span>          flush = isFlushSize(this.memStoreSizing.getMemStoreSize());<a name="line.4820"></a>
-<span class="sourceLineNo">4821</span>          if (flush) {<a name="line.4821"></a>
-<span class="sourceLineNo">4822</span>            internalFlushcache(null, currentEditSeqId, stores.values(), status, false,<a name="line.4822"></a>
-<span class="sourceLineNo">4823</span>              FlushLifeCycleTracker.DUMMY);<a name="line.4823"></a>
-<span class="sourceLineNo">4824</span>          }<a name="line.4824"></a>
-<span class="sourceLineNo">4825</span><a name="line.4825"></a>
-<span class="sourceLineNo">4826</span>          if (coprocessorHost != null) {<a name="line.4826"></a>
-<span class="sourceLineNo">4827</span>            coprocessorHost.postWALRestore(this.getRegionInfo(), key, val);<a name="line.4827"></a>
-<span class="sourceLineNo">4828</span>          }<a name="line.4828"></a>
-<span class="sourceLineNo">4829</span>        }<a name="line.4829"></a>
+<span class="sourceLineNo">4771</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4771"></a>
+<span class="sourceLineNo">4772</span>          // instead of a KeyValue.<a name="line.4772"></a>
+<span class="sourceLineNo">4773</span>          if (coprocessorHost != null) {<a name="line.4773"></a>
+<span class="sourceLineNo">4774</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4774"></a>
+<span class="sourceLineNo">4775</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4775"></a>
+<span class="sourceLineNo">4776</span>              // if bypass this wal entry, ignore it ...<a name="line.4776"></a>
+<span class="sourceLineNo">4777</span>              continue;<a name="line.4777"></a>
+<span class="sourceLineNo">4778</span>            }<a name="line.4778"></a>
+<span class="sourceLineNo">4779</span>          }<a name="line.4779"></a>
+<span class="sourceLineNo">4780</span>          boolean checkRowWithinBoundary = false;<a name="line.4780"></a>
+<span class="sourceLineNo">4781</span>          // Check this edit is for this region.<a name="line.4781"></a>
+<span class="sourceLineNo">4782</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4782"></a>
+<span class="sourceLineNo">4783</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4783"></a>
+<span class="sourceLineNo">4784</span>            checkRowWithinBoundary = true;<a name="line.4784"></a>
+<span class="sourceLineNo">4785</span>          }<a name="line.4785"></a>
+<span class="sourceLineNo">4786</span><a name="line.4786"></a>
+<span class="sourceLineNo">4787</span>          boolean flush = false;<a name="line.4787"></a>
+<span class="sourceLineNo">4788</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4788"></a>
+<span class="sourceLineNo">4789</span>          for (Cell cell: val.getCells()) {<a name="line.4789"></a>
+<span class="sourceLineNo">4790</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4790"></a>
+<span class="sourceLineNo">4791</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4791"></a>
+<span class="sourceLineNo">4792</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4792"></a>
+<span class="sourceLineNo">4793</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4793"></a>
+<span class="sourceLineNo">4794</span>              if (!checkRowWithinBoundary) {<a name="line.4794"></a>
+<span class="sourceLineNo">4795</span>                //this is a special edit, we should handle it<a name="line.4795"></a>
+<span class="sourceLineNo">4796</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4796"></a>
+<span class="sourceLineNo">4797</span>                if (compaction != null) {<a name="line.4797"></a>
+<span class="sourceLineNo">4798</span>                  //replay the compaction<a name="line.4798"></a>
+<span class="sourceLineNo">4799</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4799"></a>
+<span class="sourceLineNo">4800</span>                }<a name="line.4800"></a>
+<span class="sourceLineNo">4801</span>              }<a name="line.4801"></a>
+<span class="sourceLineNo">4802</span>              skippedEdits++;<a name="line.4802"></a>
+<span class="sourceLineNo">4803</span>              continue;<a name="line.4803"></a>
+<span class="sourceLineNo">4804</span>            }<a name="line.4804"></a>
+<span class="sourceLineNo">4805</span>            // Figure which store the edit is meant for.<a name="line.4805"></a>
+<span class="sourceLineNo">4806</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4806"></a>
+<span class="sourceLineNo">4807</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4807"></a>
+<span class="sourceLineNo">4808</span>              store = getStore(cell);<a name="line.4808"></a>
+<span class="sourceLineNo">4809</span>            }<a name="line.4809"></a>
+<span class="sourceLineNo">4810</span>            if (store == null) {<a name="line.4810"></a>
+<span class="sourceLineNo">4811</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4811"></a>
+<span class="sourceLineNo">4812</span>              // crash and redeploy?<a name="line.4812"></a>
+<span class="sourceLineNo">4813</span>              LOG.warn("No family for " + cell);<a name="line.4813"></a>
+<span class="sourceLineNo">4814</span>              skippedEdits++;<a name="line.4814"></a>
+<span class="sourceLineNo">4815</span>              continue;<a name="line.4815"></a>
+<span class="sourceLineNo">4816</span>            }<a name="line.4816"></a>
+<span class="sourceLineNo">4817</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4817"></a>
+<span class="sourceLineNo">4818</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4818"></a>
+<span class="sourceLineNo">4819</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4819"></a>
+<span class="sourceLineNo">4820</span>              skippedEdits++;<a name="line.4820"></a>
+<span class="sourceLineNo">4821</span>              continue;<a name="line.4821"></a>
+<span class="sourceLineNo">4822</span>            }<a name="line.4822"></a>
+<span class="sourceLineNo">4823</span>            // Now, figure if we should skip this edit.<a name="line.4823"></a>
+<span class="sourceLineNo">4824</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4824"></a>
+<span class="sourceLineNo">4825</span>                .getName())) {<a name="line.4825"></a>
+<span class="sourceLineNo">4826</span>              skippedEdits++;<a name="line.4826"></a>
+<span class="sourceLineNo">4827</span>              continue;<a name="line.4827"></a>
+<span class="sourceLineNo">4828</span>            }<a name="line.4828"></a>
+<span class="sourceLineNo">4829</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4829"></a>
 <span class="sourceLineNo">4830</span><a name="line.4830"></a>
-<span class="sourceLineNo">4831</span>        if (coprocessorHost != null) {<a name="line.4831"></a>
-<span class="sourceLineNo">4832</span>          coprocessorHost.postReplayWALs(this.getRegionInfo(), edits);<a name="line.4832"></a>
-<span class="sourceLineNo">4833</span>        }<a name="line.4833"></a>
-<span class="sourceLineNo">4834</span>      } catch (EOFException eof) {<a name="line.4834"></a>
-<span class="sourceLineNo">4835</span>        Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4835"></a>
-<span class="sourceLineNo">4836</span>        msg = "EnLongAddered EOF. Most likely due to Master failure during " +<a name="line.4836"></a>
-<span class="sourceLineNo">4837</span>            "wal splitting, so we have this data in another edit.  " +<a name="line.4837"></a>
-<span class="sourceLineNo">4838</span>            "Continuing, but renaming " + edits + " as " + p;<a name="line.4838"></a>
-<span class="sourceLineNo">4839</span>        LOG.warn(msg, eof);<a name="line.4839"></a>
-<span class="sourceLineNo">4840</span>        status.abort(msg);<a name="line.4840"></a>
-<span class="sourceLineNo">4841</span>      } catch (IOException ioe) {<a name="line.4841"></a>
-<span class="sourceLineNo">4842</span>        // If the IOE resulted from bad file format,<a name="line.4842"></a>
-<span class="sourceLineNo">4843</span>        // then this problem is idempotent and retrying won't help<a name="line.4843"></a>
-<span class="sourceLineNo">4844</span>        if (ioe.getCause() instanceof ParseException) {<a name="line.4844"></a>
-<span class="sourceLineNo">4845</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4845"></a>
-<span class="sourceLineNo">4846</span>          msg = "File corruption enLongAddered!  " +<a name="line.4846"></a>
-<span class="sourceLineNo">4847</span>              "Continuing, but renaming " + edits + " as " + p;<a name="line.4847"></a>
-<span class="sourceLineNo">4848</span>          LOG.warn(msg, ioe);<a name="line.4848"></a>
-<span class="sourceLineNo">4849</span>          status.setStatus(msg);<a name="line.4849"></a>
-<span class="sourceLineNo">4850</span>        } else {<a name="line.4850"></a>
-<span class="sourceLineNo">4851</span>          status.abort(StringUtils.stringifyException(ioe));<a name="line.4851"></a>
-<span class="sourceLineNo">4852</span>          // other IO errors may be transient (bad network connection,<a name="line.4852"></a>
-<span class="sourceLineNo">4853</span>          // checksum exception on one datanode, etc).  throw &amp; retry<a name="line.4853"></a>
-<span class="sourceLineNo">4854</span>          throw ioe;<a name="line.4854"></a>
-<span class="sourceLineNo">4855</span>        }<a name="line.4855"></a>
-<span class="sourceLineNo">4856</span>      }<a name="line.4856"></a>
-<span class="sourceLineNo">4857</span>      if (reporter != null &amp;&amp; !reported_once) {<a name="line.4857"></a>
-<span class="sourceLineNo">4858</span>        reporter.progress();<a name="line.4858"></a>
-<span class="sourceLineNo">4859</span>      }<a name="line.4859"></a>
-<span class="sourceLineNo">4860</span>      msg = "Applied " + editsCount + ", skipped " + skippedEdits +<a name="line.4860"></a>
-<span class="sourceLineNo">4861</span>        ", firstSequenceIdInLog=" + firstSeqIdInLog +<a name="line.4861"></a>
-<span class="sourceLineNo">4862</span>        ", maxSequenceIdInLog=" + currentEditSeqId + ", path=" + edits;<a name="line.4862"></a>
-<span class="sourceLineNo">4863</span>      status.markComplete(msg);<a name="line.4863"></a>
-<span class="sourceLineNo">4864</span>      LOG.debug(msg);<a name="line.4864"></a>
-<span class="sourceLineNo">4865</span>      return currentEditSeqId;<a name="line.4865"></a>
-<span class="sourceLineNo">4866</span>    } finally {<a name="line.4866"></a>
-<span class="sourceLineNo">4867</span>      status.cleanup();<a name="line.4867"></a>
-<span class="sourceLineNo">4868</span>      if (reader != null) {<a name="line.4868"></a>
-<span class="sourceLineNo">4869</span>         reader.close();<a name="line.4869"></a>
-<span class="sourceLineNo">4870</span>      }<a name="line.4870"></a>
-<span class="sourceLineNo">4871</span>    }<a name="line.4871"></a>
-<span class="sourceLineNo">4872</span>  }<a name="line.4872"></a>
-<span class="sourceLineNo">4873</span><a name="line.4873"></a>
-<span class="sourceLineNo">4874</span>  /**<a name="line.4874"></a>
-<span class="sourceLineNo">4875</span>   * Call to complete a compaction. Its for the case where we find in the WAL a compaction<a name="line.4875"></a>
-<span class="sourceLineNo">4876</span>   * that was not finished.  We could find one recovering a WAL after a regionserver crash.<a name="line.4876"></a>
-<span class="sourceLineNo">4877</span>   * See HBASE-2331.<a name="line.4877"></a>
-<span class="sourceLineNo">4878</span>   */<a name="line.4878"></a>
-<span class="sourceLineNo">4879</span>  void replayWALCompactionMarker(CompactionDescriptor compaction, boolean pickCompactionFiles,<a name="line.4879"></a>
-<span class="sourceLineNo">4880</span>      boolean removeFiles, long replaySeqId)<a name="line.4880"></a>
-<span class="sourceLineNo">4881</span>      throws IOException {<a name="line.4881"></a>
-<span class="sourceLineNo">4882</span>    try {<a name="line.4882"></a>
-<span class="sourceLineNo">4883</span>      checkTargetRegion(compaction.getEncodedRegionName().toByteArray(),<a name="line.4883"></a>
-<span class="sourceLineNo">4884</span>        "Compaction marker from WAL ", compaction);<a name="line.4884"></a>
-<span class="sourceLineNo">4885</span>    } catch (WrongRegionException wre) {<a name="line.4885"></a>
-<span class="sourceLineNo">4886</span>      if (RegionReplicaUtil.isDefaultReplica(this.getRegionInfo())) {<a name="line.4886"></a>
-<span class="sourceLineNo">4887</span>        // skip the compaction marker since it is not for this region<a name="line.4887"></a>
-<span class="sourceLineNo">4888</span>        return;<a name="line.4888"></a>
-<span class="sourceLineNo">4889</span>      }<a name="line.4889"></a>
-<span class="sourceLineNo">4890</span>      throw wre;<a name="line.4890"></a>
-<span class="sourceLineNo">4891</span>    }<a name="line.4891"></a>
-<span class="sourceLineNo">4892</span><a name="line.4892"></a>
-<span class="sourceLineNo">4893</span>    synchronized (writestate) {<a name="line.4893"></a>
-<span class="sourceLineNo">4894</span>      if (replaySeqId &lt; lastReplayedOpenRegionSeqId) {<a name="line.4894"></a>
-<span class="sourceLineNo">4895</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4895"></a>
-<span class="sourceLineNo">4896</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4896"></a>
-<span class="sourceLineNo">4897</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4897"></a>
-<span class="sourceLineNo">4898</span>            + "lastReplayedOpenRegionSeqId of " + lastReplayedOpenRegionSeqId);<a name="line.4898"></a>
-<span class="sourceLineNo">4899</span>        return;<a name="line.4899"></a>
-<span class="sourceLineNo">4900</span>      }<a name="line.4900"></a>
-<span class="sourceLineNo">4901</span>      if (replaySeqId &lt; lastReplayedCompactionSeqId) {<a name="line.4901"></a>
-<span class="sourceLineNo">4902</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4902"></a>
-<span class="sourceLineNo">4903</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4903"></a>
-<span class="sourceLineNo">4904</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4904"></a>
-<span class="sourceLineNo">4905</span>            + "lastReplayedCompactionSeqId of " + lastReplayedCompactionSeqId);<a name="line.4905"></a>
-<span class="sourceLineNo">4906</span>        return;<a name="line.4906"></a>
-<span class="sourceLineNo">4907</span>      } else {<a name="line.4907"></a>
-<span class="sourceLineNo">4908</span>        lastReplayedCompactionSeqId = replaySeqId;<a name="line.4908"></a

<TRUNCATED>

[34/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 61c47f9..f2a943d 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <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" />
@@ -291,10 +291,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>3800</td>
+<td>3803</td>
 <td>0</td>
 <td>0</td>
-<td>15098</td></tr></table></div>
+<td>15094</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -1372,7 +1372,7 @@
 <td><a href="#org.apache.hadoop.hbase.client.HTable.java">org/apache/hadoop/hbase/client/HTable.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>51</td></tr>
+<td>50</td></tr>
 <tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.HTableMultiplexer.java">org/apache/hadoop/hbase/client/HTableMultiplexer.java</a></td>
 <td>0</td>
@@ -6217,7 +6217,7 @@
 <td><a href="#org.apache.hadoop.hbase.regionserver.HRegion.java">org/apache/hadoop/hbase/regionserver/HRegion.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>212</td></tr>
+<td>209</td></tr>
 <tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.HRegionFileSystem.java">org/apache/hadoop/hbase/regionserver/HRegionFileSystem.java</a></td>
 <td>0</td>
@@ -9829,7 +9829,7 @@
 <li>caseIndent: <tt>&quot;2&quot;</tt></li>
 <li>basicOffset: <tt>&quot;2&quot;</tt></li>
 <li>lineWrappingIndentation: <tt>&quot;2&quot;</tt></li></ul></td>
-<td>4808</td>
+<td>4806</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td>javadoc</td>
@@ -9841,7 +9841,7 @@
 <tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#NonEmptyAtclauseDescription">NonEmptyAtclauseDescription</a></td>
-<td>3499</td>
+<td>3497</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td>misc</td>
@@ -24396,299 +24396,293 @@
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>491</td></tr>
+<td>508</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
-<td>indentation</td>
-<td>Indentation</td>
-<td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>523</td></tr>
-<tr class="a">
-<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>626</td></tr>
-<tr class="b">
+<td>611</td></tr>
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>656</td></tr>
-<tr class="a">
+<td>641</td></tr>
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>663</td></tr>
-<tr class="b">
-<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
-<td>annotation</td>
-<td>MissingDeprecated</td>
-<td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
-<td>692</td></tr>
+<td>648</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
-<td>699</td></tr>
+<td>677</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
-<td>706</td></tr>
+<td>684</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
-<td>735</td></tr>
+<td>691</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
-<td>743</td></tr>
+<td>720</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
-<td>750</td></tr>
+<td>728</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
-<td>indentation</td>
-<td>Indentation</td>
-<td>'new' has incorrect indentation level 4, expected level should be 6.</td>
-<td>800</td></tr>
+<td>annotation</td>
+<td>MissingDeprecated</td>
+<td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
+<td>735</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
-<td>'rpcControllerFactory' has incorrect indentation level 4, expected level should be 6.</td>
-<td>801</td></tr>
+<td>'new' has incorrect indentation level 4, expected level should be 6.</td>
+<td>785</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
-<td>'.' has incorrect indentation level 4, expected level should be 6.</td>
-<td>829</td></tr>
+<td>'rpcControllerFactory' has incorrect indentation level 4, expected level should be 6.</td>
+<td>786</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'.' has incorrect indentation level 4, expected level should be 6.</td>
-<td>830</td></tr>
+<td>814</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'.' has incorrect indentation level 4, expected level should be 6.</td>
-<td>831</td></tr>
+<td>815</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'.' has incorrect indentation level 4, expected level should be 6.</td>
-<td>832</td></tr>
+<td>816</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'.' has incorrect indentation level 4, expected level should be 6.</td>
-<td>833</td></tr>
+<td>817</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'.' has incorrect indentation level 4, expected level should be 6.</td>
-<td>835</td></tr>
+<td>818</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'.' has incorrect indentation level 4, expected level should be 6.</td>
-<td>836</td></tr>
+<td>820</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'.' has incorrect indentation level 4, expected level should be 6.</td>
-<td>837</td></tr>
+<td>821</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'.' has incorrect indentation level 4, expected level should be 6.</td>
-<td>838</td></tr>
+<td>822</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
+<td>indentation</td>
+<td>Indentation</td>
+<td>'.' has incorrect indentation level 4, expected level should be 6.</td>
+<td>823</td></tr>
+<tr class="b">
+<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
-<td>848</td></tr>
-<tr class="b">
+<td>833</td></tr>
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>852</td></tr>
-<tr class="a">
+<td>837</td></tr>
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
-<td>856</td></tr>
-<tr class="b">
+<td>841</td></tr>
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>872</td></tr>
-<tr class="a">
+<td>857</td></tr>
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>873</td></tr>
-<tr class="b">
+<td>858</td></tr>
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
+<td>1022</td></tr>
+<tr class="b">
+<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
+<td>annotation</td>
+<td>MissingDeprecated</td>
+<td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
 <td>1037</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
-<td>1052</td></tr>
+<td>1043</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
-<td>1058</td></tr>
+<td>1055</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
-<td>1070</td></tr>
+<td>1061</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
-<td>1076</td></tr>
+<td>1072</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
-<td>1087</td></tr>
+<td>1078</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
-<td>1093</td></tr>
+<td>1089</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
-<td>1104</td></tr>
+<td>1095</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
-<td>annotation</td>
-<td>MissingDeprecated</td>
-<td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
-<td>1110</td></tr>
-<tr class="a">
-<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1129</td></tr>
-<tr class="b">
+<td>1114</td></tr>
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1131</td></tr>
-<tr class="a">
+<td>1116</td></tr>
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child has incorrect indentation level 10, expected level should be one of the following: 12, 14.</td>
-<td>1132</td></tr>
-<tr class="b">
+<td>1117</td></tr>
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if rcurly' has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1133</td></tr>
-<tr class="a">
+<td>1118</td></tr>
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1134</td></tr>
-<tr class="b">
+<td>1119</td></tr>
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' has incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>1135</td></tr>
-<tr class="a">
+<td>1120</td></tr>
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
-<td>1165</td></tr>
-<tr class="b">
+<td>1150</td></tr>
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'=' has incorrect indentation level 4, expected level should be 6.</td>
-<td>1187</td></tr></table></div>
+<td>1172</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.HTableMultiplexer.java">org/apache/hadoop/hbase/client/HTableMultiplexer.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>141</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>142</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>152</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>153</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>
@@ -24697,19 +24691,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.ImmutableHColumnDescriptor.java">org/apache/hadoop/hbase/client/ImmutableHColumnDescriptor.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder.ModifyableColumnFamilyDescriptor' import.</td>
 <td>22</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
@@ -24718,13 +24712,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.ImmutableHRegionInfo.java">org/apache/hadoop/hbase/client/ImmutableHRegionInfo.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>annotation</td>
 <td>MissingDeprecated</td>
@@ -24733,31 +24727,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.ImmutableHTableDescriptor.java">org/apache/hadoop/hbase/client/ImmutableHTableDescriptor.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>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder.ModifyableColumnFamilyDescriptor' import.</td>
 <td>22</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>UnusedImports</td>
 <td>Unused import - org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder.ModifyableColumnFamilyDescriptor.</td>
 <td>22</td></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>
 <td>Wrong order for 'org.apache.hadoop.hbase.HColumnDescriptor' import.</td>
 <td>24</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
@@ -24766,13 +24760,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.Increment.java">org/apache/hadoop/hbase/client/Increment.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -24781,19 +24775,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.MasterCallable.java">org/apache/hadoop/hbase/client/MasterCallable.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 111).</td>
 <td>84</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>
@@ -24802,19 +24796,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.MasterCoprocessorRpcChannelImpl.java">org/apache/hadoop/hbase/client/MasterCoprocessorRpcChannelImpl.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>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.AsyncRpcRetryingCallerFactory.MasterRequestCallerBuilder' import.</td>
 <td>24</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -24823,13 +24817,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.MasterKeepAliveConnection.java">org/apache/hadoop/hbase/client/MasterKeepAliveConnection.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -24838,43 +24832,43 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.MetaCache.java">org/apache/hadoop/hbase/client/MetaCache.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>80</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>101</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>106</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>191</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>294</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>
@@ -24883,253 +24877,253 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.MetricsConnection.java">org/apache/hadoop/hbase/client/MetricsConnection.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>
 <td>Wrong order for 'java.util.concurrent.ConcurrentHashMap' import.</td>
 <td>31</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.Bytes' import.</td>
 <td>44</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>'case' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>445</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 8, expected level should be 10.</td>
 <td>447</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 8, expected level should be 10.</td>
 <td>448</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>'case' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>449</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 8, expected level should be 10.</td>
 <td>451</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>'switch' has incorrect indentation level 8, expected level should be 10.</td>
 <td>452</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>'case' child has incorrect indentation level 8, expected level should be 12.</td>
 <td>453</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 14.</td>
 <td>454</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 10, expected level should be 14.</td>
 <td>455</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>'case' child has incorrect indentation level 8, expected level should be 12.</td>
 <td>456</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 10, expected level should be 14.</td>
 <td>457</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 14.</td>
 <td>458</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>'case' child has incorrect indentation level 8, expected level should be 12.</td>
 <td>459</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 14.</td>
 <td>460</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 10, expected level should be 14.</td>
 <td>461</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>'case' child has incorrect indentation level 8, expected level should be 12.</td>
 <td>462</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 10, expected level should be 14.</td>
 <td>463</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 14.</td>
 <td>464</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>'case' child has incorrect indentation level 8, expected level should be 12.</td>
 <td>465</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 14.</td>
 <td>466</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>'switch rcurly' has incorrect indentation level 8, expected level should be 10.</td>
 <td>467</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>'case' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>468</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 8, expected level should be 10.</td>
 <td>470</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 8, expected level should be 10.</td>
 <td>471</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>'case' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>472</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 8, expected level should be 10.</td>
 <td>475</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>'case' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>476</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 8, expected level should be 10.</td>
 <td>479</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>'case' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>480</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 8, expected level should be 10.</td>
 <td>483</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>'case' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>484</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 8, expected level should be 10.</td>
 <td>487</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>'case' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>488</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 8, expected level should be 10.</td>
 <td>491</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>'case' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>492</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 8, expected level should be 10.</td>
 <td>494</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 8, expected level should be 10.</td>
 <td>495</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>'case' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>496</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>
@@ -25138,25 +25132,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.MultiAction.java">org/apache/hadoop/hbase/client/MultiAction.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>67</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>68</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -25165,19 +25159,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.MultiResponse.java">org/apache/hadoop/hbase/client/MultiResponse.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>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.Bytes' import.</td>
 <td>28</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>
@@ -25186,43 +25180,43 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.MultiServerCallable.java">org/apache/hadoop/hbase/client/MultiServerCallable.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hbase.thirdparty.com.google.protobuf.RpcController' import.</td>
 <td>40</td></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>
 <td>Wrong order for 'org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting' import.</td>
 <td>42</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>48</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>90</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>132</td></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>
@@ -25231,145 +25225,145 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.Mutation.java">org/apache/hadoop/hbase/client/Mutation.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>171</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>172</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>173</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>174</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>284</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>397</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>407</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>411</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>418</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>430</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>434</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>441</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>443</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
 <td>445</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>446</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>544</td></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>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>608</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>623</td></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>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>638</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>740</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>749</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>750</td></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>
@@ -25378,13 +25372,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.NoOpRetryableCallerInterceptor.java">org/apache/hadoop/hbase/client/NoOpRetryableCallerInterceptor.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>
@@ -25393,13 +25387,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.NoncedRegionServerCallable.java">org/apache/hadoop/hbase/client/NoncedRegionServerCallable.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>
@@ -25408,19 +25402,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.Operation.java">org/apache/hadoop/hbase/client/Operation.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>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.JsonMapper' import.</td>
 <td>25</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
@@ -25429,13 +25423,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor.java">org/apache/hadoop/hbase/client/PackagePrivateFieldAccessor.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
@@ -25444,85 +25438,85 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.PreemptiveFastFailInterceptor.java">org/apache/hadoop/hbase/client/PreemptiveFastFailInterceptor.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'java.io.IOException' import.</td>
 <td>24</td></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>
 <td>Wrong order for 'org.apache.hadoop.hbase.exceptions.ClientExceptionsUtil' import.</td>
 <td>36</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 105).</td>
 <td>78</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>144</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>147</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>184</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>220</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>252</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>280</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>281</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>282</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>283</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>
@@ -25531,61 +25525,61 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.Put.java">org/apache/hadoop/hbase/client/Put.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>68</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>69</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>70</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>99</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>100</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>101</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>102</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 108).</td>
 <td>221</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>
@@ -25594,67 +25588,67 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.Query.java">org/apache/hadoop/hbase/client/Query.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.yetus.audience.InterfaceAudience' import.</td>
 <td>23</td></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>
 <td>Wrong order for 'org.apache.hadoop.hbase.exceptions.DeserializationException' import.</td>
 <td>24</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hbase.thirdparty.com.google.common.collect.ArrayListMultimap' import.</td>
 <td>34</td></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>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.Bytes' import.</td>
 <td>36</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>70</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>80</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>84</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>140</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>173</td></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>
@@ -25663,37 +25657,37 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.QuotaStatusCalls.java">org/apache/hadoop/hbase/client/QuotaStatusCalls.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>
 <td>Wrong order for 'org.apache.hadoop.hbase.ipc.RpcControllerFactory' import.</td>
 <td>24</td></tr>
-<tr class="b">
+<tr class="a">
 <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>35</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
 <td>39</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 103).</td>
 <td>71</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -25702,529 +25696,529 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.RawAsyncHBaseAdmin.java">org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' has incorrect indentation level 10, expected level should be 22.</td>
 <td>501</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 24.</td>
 <td>502</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 24.</td>
 <td>503</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 rcurly' has incorrect indentation level 10, expected level should be 22.</td>
 <td>504</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' has incorrect indentation level 10, expected level should be 22.</td>
 <td>505</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 24.</td>
 <td>506</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 22.</td>
 <td>507</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>'else' child has incorrect indentation level 12, expected level should be 24.</td>
 <td>508</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>'else rcurly' has incorrect indentation level 10, expected level should be 22.</td>
 <td>509</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block rcurly' has incorrect indentation level 8, expected level should be 20.</td>
 <td>510</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 108).</td>
 <td>696</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 105).</td>
 <td>750</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 115).</td>
 <td>762</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 14, expected level should be 12.</td>
 <td>838</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 16, expected level should be 14.</td>
 <td>839</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 rcurly' has incorrect indentation level 14, expected level should be 12.</td>
 <td>840</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>'else' child has incorrect indentation level 16, expected level should be 14.</td>
 <td>841</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>'else rcurly' has incorrect indentation level 14, expected level should be 12.</td>
 <td>842</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
 <td>1055</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>1243</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>1249</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>'lambda arguments' has incorrect indentation level 8, expected level should be 6.</td>
 <td>1382</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' has incorrect indentation level 6, expected level should be 10.</td>
 <td>1384</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 8, expected level should be 12.</td>
 <td>1385</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 6, expected level should be 10.</td>
 <td>1386</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>'else' child has incorrect indentation level 8, expected level should be 12.</td>
 <td>1387</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>'else rcurly' has incorrect indentation level 6, expected level should be 10.</td>
 <td>1388</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block rcurly' has incorrect indentation level 4, expected level should be 8.</td>
 <td>1389</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' has incorrect indentation level 14, expected level should be 18.</td>
 <td>1408</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 16, expected level should be 20.</td>
 <td>1409</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 14, expected level should be 18.</td>
 <td>1410</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>'else' child has incorrect indentation level 16, expected level should be 20.</td>
 <td>1411</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>'else rcurly' has incorrect indentation level 14, expected level should be 18.</td>
 <td>1412</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block rcurly' has incorrect indentation level 12, expected level should be 16.</td>
 <td>1413</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 102).</td>
 <td>1431</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 14, expected level should be 18.</td>
 <td>1459</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 16, expected level should be 20.</td>
 <td>1460</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 rcurly' has incorrect indentation level 14, expected level should be 18.</td>
 <td>1461</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>'else' child has incorrect indentation level 16, expected level should be 20.</td>
 <td>1462</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>'else rcurly' has incorrect indentation level 14, expected level should be 18.</td>
 <td>1463</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 12, expected level should be 16.</td>
 <td>1464</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 103).</td>
 <td>1601</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 125).</td>
 <td>1623</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 114).</td>
 <td>1700</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' has incorrect indentation level 10, expected level should be 14.</td>
 <td>1750</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 16.</td>
 <td>1751</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 16.</td>
 <td>1752</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 rcurly' has incorrect indentation level 10, expected level should be 14.</td>
 <td>1753</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 10, expected level should be 14.</td>
 <td>1754</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>'else' child has incorrect indentation level 18, expected level should be 20.</td>
 <td>1770</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>'else' child has incorrect indentation level 18, expected level should be 20.</td>
 <td>1772</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>'else' child has incorrect indentation level 18, expected level should be 20.</td>
 <td>1773</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>'else rcurly' has incorrect indentation level 16, expected level should be 18.</td>
 <td>1775</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block rcurly' has incorrect indentation level 14, expected level should be 16.</td>
 <td>1776</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>1776</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 14.</td>
 <td>1784</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 12.</td>
 <td>1785</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
 <td>1811</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 14, expected level should be 16.</td>
 <td>1840</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 rcurly' has incorrect indentation level 12, expected level should be 14.</td>
 <td>1842</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>'else' child has incorrect indentation level 14, expected level should be 16.</td>
 <td>1843</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>'else rcurly' has incorrect indentation level 12, expected level should be 14.</td>
 <td>1854</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 10, expected level should be 12.</td>
 <td>1855</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>1855</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>'else' child has incorrect indentation level 8, expected level should be 10.</td>
 <td>1878</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 10, expected level should be 12.</td>
 <td>1881</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 8, expected level should be 10.</td>
 <td>1891</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>'else' child has incorrect indentation level 10, expected level should be 12.</td>
 <td>1893</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>'else' child has incorrect indentation level 10, expected level should be 12.</td>
 <td>1894</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>'else rcurly' has incorrect indentation level 8, expected level should be 10.</td>
 <td>1904</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 6, expected level should be 8.</td>
 <td>1905</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>1905</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>'else rcurly' has incorrect indentation level 6, expected level should be 8.</td>
 <td>1906</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block rcurly' has incorrect indentation level 4, expected level should be 6.</td>
 <td>1907</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>1907</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
 <td>1940</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
 <td>2212</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 103).</td>
 <td>2216</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
 <td>2239</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>2249</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>2290</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 106).</td>
 <td>2781</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 16, expected level should be 14.</td>
 <td>2841</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 103).</td>
 <td>2868</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 104).</td>
 <td>2965</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 121).</td>
 <td>2990</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -26233,37 +26227,37 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.RegionAdminServiceCallable.java">org/apache/hadoop/hbase/client/RegionAdminServiceCallable.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>
 <td>Wrong order for 'org.apache.hadoop.hbase.ipc.HBaseRpcController' import.</td>
 <td>30</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.Bytes' import.</td>
 <td>34</td></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>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>190</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>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>
@@ -26272,31 +26266,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.RegionCoprocessorRpcChannel.java">org/apache/hadoop/hbase/client/RegionCoprocessorRpcChannel.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>
 <td>Wrong order for 'org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils' import.</td>
 <td>27</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'com.google.protobuf.Descriptors' import.</td>
 <td>31</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>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>72</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>
@@ -26305,13 +26299,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.RegionCoprocessorRpcChannelImpl.java">org/apache/hadoop/hbase/client/RegionCoprocessorRpcChannelImpl.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -26320,19 +26314,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.RegionCoprocessorServiceExec.java">org/apache/hadoop/hbase/client/RegionCoprocessorServiceExec.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.Bytes' import.</td>
 <td>23</td></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>
@@ -26341,349 +26335,349 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.RegionInfo.java">org/apache/hadoop/hbase/client/RegionInfo.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child has incorrect indentation level 12, expected level should be 10.</td>
 <td>122</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 10.</td>
 <td>126</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>140</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>142</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>144</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block rcurly' has incorrect indentation level 2, expected level should be 4.</td>
 <td>147</td></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>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>152</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>223</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>224</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>226</td></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>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>227</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>228</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>234</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>276</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>284</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>318</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>320</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>'.' has incorrect indentation level 6, expected level should be 8.</td>
 <td>333</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>341</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>343</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>347</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>352</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>353</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>354</td></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>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>356</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>360</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>371</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>375</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>384</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>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>388</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>406</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>407</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>428</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>452</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>466</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>480</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>483</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>496</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>510</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>513</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method call' child has incorrect indentation level 8, expected level should be 10.</td>
 <td>565</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-cla

<TRUNCATED>

[23/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 da040ad..d6702a7 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
@@ -2957,7 +2957,7 @@
 <span class="sourceLineNo">2949</span>        if(family == null) {<a name="line.2949"></a>
 <span class="sourceLineNo">2950</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2950"></a>
 <span class="sourceLineNo">2951</span>        }<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>        checkFamily(family);<a name="line.2952"></a>
+<span class="sourceLineNo">2952</span>        checkFamily(family, delete.getDurability());<a name="line.2952"></a>
 <span class="sourceLineNo">2953</span>      }<a name="line.2953"></a>
 <span class="sourceLineNo">2954</span>    }<a name="line.2954"></a>
 <span class="sourceLineNo">2955</span>  }<a name="line.2955"></a>
@@ -3569,7 +3569,7 @@
 <span class="sourceLineNo">3561</span><a name="line.3561"></a>
 <span class="sourceLineNo">3562</span>    @Override<a name="line.3562"></a>
 <span class="sourceLineNo">3563</span>    public void checkAndPreparePut(Put p) throws IOException {<a name="line.3563"></a>
-<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet());<a name="line.3564"></a>
+<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet(), p.getDurability());<a name="line.3564"></a>
 <span class="sourceLineNo">3565</span>    }<a name="line.3565"></a>
 <span class="sourceLineNo">3566</span><a name="line.3566"></a>
 <span class="sourceLineNo">3567</span>    @Override<a name="line.3567"></a>
@@ -4462,4304 +4462,4307 @@
 <span class="sourceLineNo">4454</span>    store.add(cell, memstoreAccounting);<a name="line.4454"></a>
 <span class="sourceLineNo">4455</span>  }<a name="line.4455"></a>
 <span class="sourceLineNo">4456</span><a name="line.4456"></a>
-<span class="sourceLineNo">4457</span>  /**<a name="line.4457"></a>
-<span class="sourceLineNo">4458</span>   * Check the collection of families for validity.<a name="line.4458"></a>
-<span class="sourceLineNo">4459</span>   * @param families<a name="line.4459"></a>
-<span class="sourceLineNo">4460</span>   * @throws NoSuchColumnFamilyException<a name="line.4460"></a>
-<span class="sourceLineNo">4461</span>   */<a name="line.4461"></a>
-<span class="sourceLineNo">4462</span>  public void checkFamilies(Collection&lt;byte[]&gt; families) throws NoSuchColumnFamilyException {<a name="line.4462"></a>
-<span class="sourceLineNo">4463</span>    for (byte[] family : families) {<a name="line.4463"></a>
-<span class="sourceLineNo">4464</span>      checkFamily(family);<a name="line.4464"></a>
-<span class="sourceLineNo">4465</span>    }<a name="line.4465"></a>
-<span class="sourceLineNo">4466</span>  }<a name="line.4466"></a>
-<span class="sourceLineNo">4467</span><a name="line.4467"></a>
-<span class="sourceLineNo">4468</span>  /**<a name="line.4468"></a>
-<span class="sourceLineNo">4469</span>   * Check the collection of families for valid timestamps<a name="line.4469"></a>
-<span class="sourceLineNo">4470</span>   * @param familyMap<a name="line.4470"></a>
-<span class="sourceLineNo">4471</span>   * @param now current timestamp<a name="line.4471"></a>
-<span class="sourceLineNo">4472</span>   * @throws FailedSanityCheckException<a name="line.4472"></a>
-<span class="sourceLineNo">4473</span>   */<a name="line.4473"></a>
-<span class="sourceLineNo">4474</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4474"></a>
-<span class="sourceLineNo">4475</span>      throws FailedSanityCheckException {<a name="line.4475"></a>
-<span class="sourceLineNo">4476</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4476"></a>
-<span class="sourceLineNo">4477</span>      return;<a name="line.4477"></a>
-<span class="sourceLineNo">4478</span>    }<a name="line.4478"></a>
-<span class="sourceLineNo">4479</span>    long maxTs = now + timestampSlop;<a name="line.4479"></a>
-<span class="sourceLineNo">4480</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4480"></a>
-<span class="sourceLineNo">4481</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4481"></a>
-<span class="sourceLineNo">4482</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4482"></a>
-<span class="sourceLineNo">4483</span>      assert kvs instanceof RandomAccess;<a name="line.4483"></a>
-<span class="sourceLineNo">4484</span>      int listSize  = kvs.size();<a name="line.4484"></a>
-<span class="sourceLineNo">4485</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4485"></a>
-<span class="sourceLineNo">4486</span>        Cell cell = kvs.get(i);<a name="line.4486"></a>
-<span class="sourceLineNo">4487</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4487"></a>
-<span class="sourceLineNo">4488</span>        long ts = cell.getTimestamp();<a name="line.4488"></a>
-<span class="sourceLineNo">4489</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4489"></a>
-<span class="sourceLineNo">4490</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4490"></a>
-<span class="sourceLineNo">4491</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4491"></a>
-<span class="sourceLineNo">4492</span>        }<a name="line.4492"></a>
-<span class="sourceLineNo">4493</span>      }<a name="line.4493"></a>
+<span class="sourceLineNo">4457</span>  private void checkFamilies(Collection&lt;byte[]&gt; families, Durability durability)<a name="line.4457"></a>
+<span class="sourceLineNo">4458</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4458"></a>
+<span class="sourceLineNo">4459</span>    for (byte[] family : families) {<a name="line.4459"></a>
+<span class="sourceLineNo">4460</span>      checkFamily(family, durability);<a name="line.4460"></a>
+<span class="sourceLineNo">4461</span>    }<a name="line.4461"></a>
+<span class="sourceLineNo">4462</span>  }<a name="line.4462"></a>
+<span class="sourceLineNo">4463</span><a name="line.4463"></a>
+<span class="sourceLineNo">4464</span>  private void checkFamily(final byte[] family, Durability durability)<a name="line.4464"></a>
+<span class="sourceLineNo">4465</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4465"></a>
+<span class="sourceLineNo">4466</span>    checkFamily(family);<a name="line.4466"></a>
+<span class="sourceLineNo">4467</span>    if (durability.equals(Durability.SKIP_WAL)<a name="line.4467"></a>
+<span class="sourceLineNo">4468</span>        &amp;&amp; htableDescriptor.getColumnFamily(family).getScope()<a name="line.4468"></a>
+<span class="sourceLineNo">4469</span>        != HConstants.REPLICATION_SCOPE_LOCAL) {<a name="line.4469"></a>
+<span class="sourceLineNo">4470</span>      throw new InvalidMutationDurabilityException(<a name="line.4470"></a>
+<span class="sourceLineNo">4471</span>          "Mutation's durability is SKIP_WAL but table's column family " + Bytes.toString(family)<a name="line.4471"></a>
+<span class="sourceLineNo">4472</span>              + " need replication");<a name="line.4472"></a>
+<span class="sourceLineNo">4473</span>    }<a name="line.4473"></a>
+<span class="sourceLineNo">4474</span>  }<a name="line.4474"></a>
+<span class="sourceLineNo">4475</span><a name="line.4475"></a>
+<span class="sourceLineNo">4476</span>  void checkFamily(final byte[] family) throws NoSuchColumnFamilyException {<a name="line.4476"></a>
+<span class="sourceLineNo">4477</span>    if (!this.htableDescriptor.hasColumnFamily(family)) {<a name="line.4477"></a>
+<span class="sourceLineNo">4478</span>      throw new NoSuchColumnFamilyException(<a name="line.4478"></a>
+<span class="sourceLineNo">4479</span>          "Column family " + Bytes.toString(family) + " does not exist in region " + this<a name="line.4479"></a>
+<span class="sourceLineNo">4480</span>              + " in table " + this.htableDescriptor);<a name="line.4480"></a>
+<span class="sourceLineNo">4481</span>    }<a name="line.4481"></a>
+<span class="sourceLineNo">4482</span>  }<a name="line.4482"></a>
+<span class="sourceLineNo">4483</span><a name="line.4483"></a>
+<span class="sourceLineNo">4484</span>  /**<a name="line.4484"></a>
+<span class="sourceLineNo">4485</span>   * Check the collection of families for valid timestamps<a name="line.4485"></a>
+<span class="sourceLineNo">4486</span>   * @param familyMap<a name="line.4486"></a>
+<span class="sourceLineNo">4487</span>   * @param now current timestamp<a name="line.4487"></a>
+<span class="sourceLineNo">4488</span>   * @throws FailedSanityCheckException<a name="line.4488"></a>
+<span class="sourceLineNo">4489</span>   */<a name="line.4489"></a>
+<span class="sourceLineNo">4490</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4490"></a>
+<span class="sourceLineNo">4491</span>      throws FailedSanityCheckException {<a name="line.4491"></a>
+<span class="sourceLineNo">4492</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4492"></a>
+<span class="sourceLineNo">4493</span>      return;<a name="line.4493"></a>
 <span class="sourceLineNo">4494</span>    }<a name="line.4494"></a>
-<span class="sourceLineNo">4495</span>  }<a name="line.4495"></a>
-<span class="sourceLineNo">4496</span><a name="line.4496"></a>
-<span class="sourceLineNo">4497</span>  /*<a name="line.4497"></a>
-<span class="sourceLineNo">4498</span>   * @param size<a name="line.4498"></a>
-<span class="sourceLineNo">4499</span>   * @return True if size is over the flush threshold<a name="line.4499"></a>
-<span class="sourceLineNo">4500</span>   */<a name="line.4500"></a>
-<span class="sourceLineNo">4501</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4501"></a>
-<span class="sourceLineNo">4502</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4502"></a>
-<span class="sourceLineNo">4503</span>  }<a name="line.4503"></a>
-<span class="sourceLineNo">4504</span><a name="line.4504"></a>
-<span class="sourceLineNo">4505</span>  /**<a name="line.4505"></a>
-<span class="sourceLineNo">4506</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4506"></a>
-<span class="sourceLineNo">4507</span>   * the recovered edits back up into this region.<a name="line.4507"></a>
-<span class="sourceLineNo">4508</span>   *<a name="line.4508"></a>
-<span class="sourceLineNo">4509</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4509"></a>
-<span class="sourceLineNo">4510</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4510"></a>
-<span class="sourceLineNo">4511</span>   * reflected in the HFiles.)<a name="line.4511"></a>
-<span class="sourceLineNo">4512</span>   *<a name="line.4512"></a>
-<span class="sourceLineNo">4513</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4513"></a>
-<span class="sourceLineNo">4514</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4514"></a>
-<span class="sourceLineNo">4515</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4515"></a>
-<span class="sourceLineNo">4516</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4516"></a>
-<span class="sourceLineNo">4517</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4517"></a>
-<span class="sourceLineNo">4518</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4518"></a>
-<span class="sourceLineNo">4519</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4519"></a>
-<span class="sourceLineNo">4520</span>   * edits.<a name="line.4520"></a>
-<span class="sourceLineNo">4521</span>   *<a name="line.4521"></a>
-<span class="sourceLineNo">4522</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4522"></a>
-<span class="sourceLineNo">4523</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4523"></a>
-<span class="sourceLineNo">4524</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4524"></a>
-<span class="sourceLineNo">4525</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4525"></a>
-<span class="sourceLineNo">4526</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4526"></a>
-<span class="sourceLineNo">4527</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4527"></a>
-<span class="sourceLineNo">4528</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4528"></a>
-<span class="sourceLineNo">4529</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4529"></a>
-<span class="sourceLineNo">4530</span>   * make sense in a this single region context only -- until we online.<a name="line.4530"></a>
-<span class="sourceLineNo">4531</span>   *<a name="line.4531"></a>
-<span class="sourceLineNo">4532</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4532"></a>
-<span class="sourceLineNo">4533</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4533"></a>
-<span class="sourceLineNo">4534</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4534"></a>
-<span class="sourceLineNo">4535</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4535"></a>
-<span class="sourceLineNo">4536</span>   * @throws IOException<a name="line.4536"></a>
-<span class="sourceLineNo">4537</span>   */<a name="line.4537"></a>
-<span class="sourceLineNo">4538</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4538"></a>
-<span class="sourceLineNo">4539</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4539"></a>
-<span class="sourceLineNo">4540</span>      throws IOException {<a name="line.4540"></a>
-<span class="sourceLineNo">4541</span>    long minSeqIdForTheRegion = -1;<a name="line.4541"></a>
-<span class="sourceLineNo">4542</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4542"></a>
-<span class="sourceLineNo">4543</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4543"></a>
-<span class="sourceLineNo">4544</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4544"></a>
-<span class="sourceLineNo">4545</span>      }<a name="line.4545"></a>
-<span class="sourceLineNo">4546</span>    }<a name="line.4546"></a>
-<span class="sourceLineNo">4547</span>    long seqid = minSeqIdForTheRegion;<a name="line.4547"></a>
-<span class="sourceLineNo">4548</span><a name="line.4548"></a>
-<span class="sourceLineNo">4549</span>    FileSystem walFS = getWalFileSystem();<a name="line.4549"></a>
-<span class="sourceLineNo">4550</span>    FileSystem rootFS = getFilesystem();<a name="line.4550"></a>
-<span class="sourceLineNo">4551</span>    Path regionDir = getWALRegionDir();<a name="line.4551"></a>
-<span class="sourceLineNo">4552</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4552"></a>
-<span class="sourceLineNo">4553</span><a name="line.4553"></a>
-<span class="sourceLineNo">4554</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4554"></a>
-<span class="sourceLineNo">4555</span>    // under the root dir even if walDir is set.<a name="line.4555"></a>
-<span class="sourceLineNo">4556</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4556"></a>
-<span class="sourceLineNo">4557</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4557"></a>
-<span class="sourceLineNo">4558</span>      filesUnderRootDir =<a name="line.4558"></a>
-<span class="sourceLineNo">4559</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4559"></a>
-<span class="sourceLineNo">4560</span>      seqid = Math.max(seqid,<a name="line.4560"></a>
-<span class="sourceLineNo">4561</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4561"></a>
-<span class="sourceLineNo">4562</span>              defaultRegionDir));<a name="line.4562"></a>
-<span class="sourceLineNo">4563</span>    }<a name="line.4563"></a>
+<span class="sourceLineNo">4495</span>    long maxTs = now + timestampSlop;<a name="line.4495"></a>
+<span class="sourceLineNo">4496</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4496"></a>
+<span class="sourceLineNo">4497</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4497"></a>
+<span class="sourceLineNo">4498</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4498"></a>
+<span class="sourceLineNo">4499</span>      assert kvs instanceof RandomAccess;<a name="line.4499"></a>
+<span class="sourceLineNo">4500</span>      int listSize  = kvs.size();<a name="line.4500"></a>
+<span class="sourceLineNo">4501</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4501"></a>
+<span class="sourceLineNo">4502</span>        Cell cell = kvs.get(i);<a name="line.4502"></a>
+<span class="sourceLineNo">4503</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4503"></a>
+<span class="sourceLineNo">4504</span>        long ts = cell.getTimestamp();<a name="line.4504"></a>
+<span class="sourceLineNo">4505</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4505"></a>
+<span class="sourceLineNo">4506</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4506"></a>
+<span class="sourceLineNo">4507</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4507"></a>
+<span class="sourceLineNo">4508</span>        }<a name="line.4508"></a>
+<span class="sourceLineNo">4509</span>      }<a name="line.4509"></a>
+<span class="sourceLineNo">4510</span>    }<a name="line.4510"></a>
+<span class="sourceLineNo">4511</span>  }<a name="line.4511"></a>
+<span class="sourceLineNo">4512</span><a name="line.4512"></a>
+<span class="sourceLineNo">4513</span>  /*<a name="line.4513"></a>
+<span class="sourceLineNo">4514</span>   * @param size<a name="line.4514"></a>
+<span class="sourceLineNo">4515</span>   * @return True if size is over the flush threshold<a name="line.4515"></a>
+<span class="sourceLineNo">4516</span>   */<a name="line.4516"></a>
+<span class="sourceLineNo">4517</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4517"></a>
+<span class="sourceLineNo">4518</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4518"></a>
+<span class="sourceLineNo">4519</span>  }<a name="line.4519"></a>
+<span class="sourceLineNo">4520</span><a name="line.4520"></a>
+<span class="sourceLineNo">4521</span>  /**<a name="line.4521"></a>
+<span class="sourceLineNo">4522</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4522"></a>
+<span class="sourceLineNo">4523</span>   * the recovered edits back up into this region.<a name="line.4523"></a>
+<span class="sourceLineNo">4524</span>   *<a name="line.4524"></a>
+<span class="sourceLineNo">4525</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4525"></a>
+<span class="sourceLineNo">4526</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4526"></a>
+<span class="sourceLineNo">4527</span>   * reflected in the HFiles.)<a name="line.4527"></a>
+<span class="sourceLineNo">4528</span>   *<a name="line.4528"></a>
+<span class="sourceLineNo">4529</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4529"></a>
+<span class="sourceLineNo">4530</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4530"></a>
+<span class="sourceLineNo">4531</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4531"></a>
+<span class="sourceLineNo">4532</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4532"></a>
+<span class="sourceLineNo">4533</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4533"></a>
+<span class="sourceLineNo">4534</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4534"></a>
+<span class="sourceLineNo">4535</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4535"></a>
+<span class="sourceLineNo">4536</span>   * edits.<a name="line.4536"></a>
+<span class="sourceLineNo">4537</span>   *<a name="line.4537"></a>
+<span class="sourceLineNo">4538</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4538"></a>
+<span class="sourceLineNo">4539</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4539"></a>
+<span class="sourceLineNo">4540</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4540"></a>
+<span class="sourceLineNo">4541</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4541"></a>
+<span class="sourceLineNo">4542</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4542"></a>
+<span class="sourceLineNo">4543</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4543"></a>
+<span class="sourceLineNo">4544</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4544"></a>
+<span class="sourceLineNo">4545</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4545"></a>
+<span class="sourceLineNo">4546</span>   * make sense in a this single region context only -- until we online.<a name="line.4546"></a>
+<span class="sourceLineNo">4547</span>   *<a name="line.4547"></a>
+<span class="sourceLineNo">4548</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4548"></a>
+<span class="sourceLineNo">4549</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4549"></a>
+<span class="sourceLineNo">4550</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4550"></a>
+<span class="sourceLineNo">4551</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4551"></a>
+<span class="sourceLineNo">4552</span>   * @throws IOException<a name="line.4552"></a>
+<span class="sourceLineNo">4553</span>   */<a name="line.4553"></a>
+<span class="sourceLineNo">4554</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4554"></a>
+<span class="sourceLineNo">4555</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4555"></a>
+<span class="sourceLineNo">4556</span>      throws IOException {<a name="line.4556"></a>
+<span class="sourceLineNo">4557</span>    long minSeqIdForTheRegion = -1;<a name="line.4557"></a>
+<span class="sourceLineNo">4558</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4558"></a>
+<span class="sourceLineNo">4559</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4559"></a>
+<span class="sourceLineNo">4560</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4560"></a>
+<span class="sourceLineNo">4561</span>      }<a name="line.4561"></a>
+<span class="sourceLineNo">4562</span>    }<a name="line.4562"></a>
+<span class="sourceLineNo">4563</span>    long seqid = minSeqIdForTheRegion;<a name="line.4563"></a>
 <span class="sourceLineNo">4564</span><a name="line.4564"></a>
-<span class="sourceLineNo">4565</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4565"></a>
-<span class="sourceLineNo">4566</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4566"></a>
-<span class="sourceLineNo">4567</span>        files, reporter, regionDir));<a name="line.4567"></a>
-<span class="sourceLineNo">4568</span><a name="line.4568"></a>
-<span class="sourceLineNo">4569</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4569"></a>
-<span class="sourceLineNo">4570</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4570"></a>
-<span class="sourceLineNo">4571</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4571"></a>
-<span class="sourceLineNo">4572</span>    }<a name="line.4572"></a>
-<span class="sourceLineNo">4573</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4573"></a>
-<span class="sourceLineNo">4574</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4574"></a>
-<span class="sourceLineNo">4575</span>      // For debugging data loss issues!<a name="line.4575"></a>
-<span class="sourceLineNo">4576</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4576"></a>
-<span class="sourceLineNo">4577</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4577"></a>
-<span class="sourceLineNo">4578</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4578"></a>
-<span class="sourceLineNo">4579</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4579"></a>
-<span class="sourceLineNo">4580</span>      for (Path file: files) {<a name="line.4580"></a>
-<span class="sourceLineNo">4581</span>        fakeStoreFiles.add(<a name="line.4581"></a>
-<span class="sourceLineNo">4582</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4582"></a>
-<span class="sourceLineNo">4583</span>      }<a name="line.4583"></a>
-<span class="sourceLineNo">4584</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4584"></a>
-<span class="sourceLineNo">4585</span>    } else {<a name="line.4585"></a>
-<span class="sourceLineNo">4586</span>      if (filesUnderRootDir != null) {<a name="line.4586"></a>
-<span class="sourceLineNo">4587</span>        for (Path file : filesUnderRootDir) {<a name="line.4587"></a>
-<span class="sourceLineNo">4588</span>          if (!rootFS.delete(file, false)) {<a name="line.4588"></a>
-<span class="sourceLineNo">4589</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4589"></a>
-<span class="sourceLineNo">4590</span>          } else {<a name="line.4590"></a>
-<span class="sourceLineNo">4591</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4591"></a>
-<span class="sourceLineNo">4592</span>          }<a name="line.4592"></a>
-<span class="sourceLineNo">4593</span>        }<a name="line.4593"></a>
-<span class="sourceLineNo">4594</span>      }<a name="line.4594"></a>
-<span class="sourceLineNo">4595</span>      for (Path file: files) {<a name="line.4595"></a>
-<span class="sourceLineNo">4596</span>        if (!walFS.delete(file, false)) {<a name="line.4596"></a>
-<span class="sourceLineNo">4597</span>          LOG.error("Failed delete of " + file);<a name="line.4597"></a>
-<span class="sourceLineNo">4598</span>        } else {<a name="line.4598"></a>
-<span class="sourceLineNo">4599</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4599"></a>
-<span class="sourceLineNo">4600</span>        }<a name="line.4600"></a>
-<span class="sourceLineNo">4601</span>      }<a name="line.4601"></a>
-<span class="sourceLineNo">4602</span>    }<a name="line.4602"></a>
-<span class="sourceLineNo">4603</span>    return seqid;<a name="line.4603"></a>
-<span class="sourceLineNo">4604</span>  }<a name="line.4604"></a>
-<span class="sourceLineNo">4605</span><a name="line.4605"></a>
-<span class="sourceLineNo">4606</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4606"></a>
-<span class="sourceLineNo">4607</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4607"></a>
-<span class="sourceLineNo">4608</span>      throws IOException {<a name="line.4608"></a>
-<span class="sourceLineNo">4609</span>    long seqid = minSeqIdForTheRegion;<a name="line.4609"></a>
-<span class="sourceLineNo">4610</span>    if (LOG.isDebugEnabled()) {<a name="line.4610"></a>
-<span class="sourceLineNo">4611</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4611"></a>
-<span class="sourceLineNo">4612</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4612"></a>
-<span class="sourceLineNo">4613</span>    }<a name="line.4613"></a>
-<span class="sourceLineNo">4614</span><a name="line.4614"></a>
-<span class="sourceLineNo">4615</span>    if (files == null || files.isEmpty()) {<a name="line.4615"></a>
-<span class="sourceLineNo">4616</span>      return minSeqIdForTheRegion;<a name="line.4616"></a>
-<span class="sourceLineNo">4617</span>    }<a name="line.4617"></a>
-<span class="sourceLineNo">4618</span><a name="line.4618"></a>
-<span class="sourceLineNo">4619</span>    for (Path edits: files) {<a name="line.4619"></a>
-<span class="sourceLineNo">4620</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4620"></a>
-<span class="sourceLineNo">4621</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4621"></a>
-<span class="sourceLineNo">4622</span>        continue;<a name="line.4622"></a>
-<span class="sourceLineNo">4623</span>      }<a name="line.4623"></a>
-<span class="sourceLineNo">4624</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4624"></a>
-<span class="sourceLineNo">4625</span><a name="line.4625"></a>
-<span class="sourceLineNo">4626</span>      long maxSeqId;<a name="line.4626"></a>
-<span class="sourceLineNo">4627</span>      String fileName = edits.getName();<a name="line.4627"></a>
-<span class="sourceLineNo">4628</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4628"></a>
-<span class="sourceLineNo">4629</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4629"></a>
-<span class="sourceLineNo">4630</span>        if (LOG.isDebugEnabled()) {<a name="line.4630"></a>
-<span class="sourceLineNo">4631</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4631"></a>
-<span class="sourceLineNo">4632</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4632"></a>
-<span class="sourceLineNo">4633</span>              + ", skipped the whole file, path=" + edits;<a name="line.4633"></a>
-<span class="sourceLineNo">4634</span>          LOG.debug(msg);<a name="line.4634"></a>
-<span class="sourceLineNo">4635</span>        }<a name="line.4635"></a>
-<span class="sourceLineNo">4636</span>        continue;<a name="line.4636"></a>
-<span class="sourceLineNo">4637</span>      }<a name="line.4637"></a>
-<span class="sourceLineNo">4638</span><a name="line.4638"></a>
-<span class="sourceLineNo">4639</span>      try {<a name="line.4639"></a>
-<span class="sourceLineNo">4640</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4640"></a>
-<span class="sourceLineNo">4641</span>        // if seqId is greater<a name="line.4641"></a>
-<span class="sourceLineNo">4642</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4642"></a>
-<span class="sourceLineNo">4643</span>      } catch (IOException e) {<a name="line.4643"></a>
-<span class="sourceLineNo">4644</span>        boolean skipErrors = conf.getBoolean(<a name="line.4644"></a>
-<span class="sourceLineNo">4645</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4645"></a>
-<span class="sourceLineNo">4646</span>            conf.getBoolean(<a name="line.4646"></a>
-<span class="sourceLineNo">4647</span>                "hbase.skip.errors",<a name="line.4647"></a>
-<span class="sourceLineNo">4648</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4648"></a>
-<span class="sourceLineNo">4649</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4649"></a>
-<span class="sourceLineNo">4650</span>          LOG.warn(<a name="line.4650"></a>
-<span class="sourceLineNo">4651</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4651"></a>
-<span class="sourceLineNo">4652</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4652"></a>
-<span class="sourceLineNo">4653</span>        }<a name="line.4653"></a>
-<span class="sourceLineNo">4654</span>        if (skipErrors) {<a name="line.4654"></a>
-<span class="sourceLineNo">4655</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4655"></a>
-<span class="sourceLineNo">4656</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4656"></a>
-<span class="sourceLineNo">4657</span>              + "=true so continuing. Renamed " + edits +<a name="line.4657"></a>
-<span class="sourceLineNo">4658</span>              " as " + p, e);<a name="line.4658"></a>
-<span class="sourceLineNo">4659</span>        } else {<a name="line.4659"></a>
-<span class="sourceLineNo">4660</span>          throw e;<a name="line.4660"></a>
-<span class="sourceLineNo">4661</span>        }<a name="line.4661"></a>
-<span class="sourceLineNo">4662</span>      }<a name="line.4662"></a>
-<span class="sourceLineNo">4663</span>    }<a name="line.4663"></a>
-<span class="sourceLineNo">4664</span>    return seqid;<a name="line.4664"></a>
-<span class="sourceLineNo">4665</span>  }<a name="line.4665"></a>
-<span class="sourceLineNo">4666</span><a name="line.4666"></a>
-<span class="sourceLineNo">4667</span>  /*<a name="line.4667"></a>
-<span class="sourceLineNo">4668</span>   * @param edits File of recovered edits.<a name="line.4668"></a>
-<span class="sourceLineNo">4669</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4669"></a>
-<span class="sourceLineNo">4670</span>   * must be larger than this to be replayed for each store.<a name="line.4670"></a>
-<span class="sourceLineNo">4671</span>   * @param reporter<a name="line.4671"></a>
-<span class="sourceLineNo">4672</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4672"></a>
-<span class="sourceLineNo">4673</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4673"></a>
-<span class="sourceLineNo">4674</span>   * @throws IOException<a name="line.4674"></a>
-<span class="sourceLineNo">4675</span>   */<a name="line.4675"></a>
-<span class="sourceLineNo">4676</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4676"></a>
-<span class="sourceLineNo">4677</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4677"></a>
-<span class="sourceLineNo">4678</span>    throws IOException {<a name="line.4678"></a>
-<span class="sourceLineNo">4679</span>    String msg = "Replaying edits from " + edits;<a name="line.4679"></a>
-<span class="sourceLineNo">4680</span>    LOG.info(msg);<a name="line.4680"></a>
-<span class="sourceLineNo">4681</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4681"></a>
+<span class="sourceLineNo">4565</span>    FileSystem walFS = getWalFileSystem();<a name="line.4565"></a>
+<span class="sourceLineNo">4566</span>    FileSystem rootFS = getFilesystem();<a name="line.4566"></a>
+<span class="sourceLineNo">4567</span>    Path regionDir = getWALRegionDir();<a name="line.4567"></a>
+<span class="sourceLineNo">4568</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4568"></a>
+<span class="sourceLineNo">4569</span><a name="line.4569"></a>
+<span class="sourceLineNo">4570</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4570"></a>
+<span class="sourceLineNo">4571</span>    // under the root dir even if walDir is set.<a name="line.4571"></a>
+<span class="sourceLineNo">4572</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4572"></a>
+<span class="sourceLineNo">4573</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4573"></a>
+<span class="sourceLineNo">4574</span>      filesUnderRootDir =<a name="line.4574"></a>
+<span class="sourceLineNo">4575</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4575"></a>
+<span class="sourceLineNo">4576</span>      seqid = Math.max(seqid,<a name="line.4576"></a>
+<span class="sourceLineNo">4577</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4577"></a>
+<span class="sourceLineNo">4578</span>              defaultRegionDir));<a name="line.4578"></a>
+<span class="sourceLineNo">4579</span>    }<a name="line.4579"></a>
+<span class="sourceLineNo">4580</span><a name="line.4580"></a>
+<span class="sourceLineNo">4581</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4581"></a>
+<span class="sourceLineNo">4582</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4582"></a>
+<span class="sourceLineNo">4583</span>        files, reporter, regionDir));<a name="line.4583"></a>
+<span class="sourceLineNo">4584</span><a name="line.4584"></a>
+<span class="sourceLineNo">4585</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4585"></a>
+<span class="sourceLineNo">4586</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4586"></a>
+<span class="sourceLineNo">4587</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4587"></a>
+<span class="sourceLineNo">4588</span>    }<a name="line.4588"></a>
+<span class="sourceLineNo">4589</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4589"></a>
+<span class="sourceLineNo">4590</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4590"></a>
+<span class="sourceLineNo">4591</span>      // For debugging data loss issues!<a name="line.4591"></a>
+<span class="sourceLineNo">4592</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4592"></a>
+<span class="sourceLineNo">4593</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4593"></a>
+<span class="sourceLineNo">4594</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4594"></a>
+<span class="sourceLineNo">4595</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4595"></a>
+<span class="sourceLineNo">4596</span>      for (Path file: files) {<a name="line.4596"></a>
+<span class="sourceLineNo">4597</span>        fakeStoreFiles.add(<a name="line.4597"></a>
+<span class="sourceLineNo">4598</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4598"></a>
+<span class="sourceLineNo">4599</span>      }<a name="line.4599"></a>
+<span class="sourceLineNo">4600</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4600"></a>
+<span class="sourceLineNo">4601</span>    } else {<a name="line.4601"></a>
+<span class="sourceLineNo">4602</span>      if (filesUnderRootDir != null) {<a name="line.4602"></a>
+<span class="sourceLineNo">4603</span>        for (Path file : filesUnderRootDir) {<a name="line.4603"></a>
+<span class="sourceLineNo">4604</span>          if (!rootFS.delete(file, false)) {<a name="line.4604"></a>
+<span class="sourceLineNo">4605</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4605"></a>
+<span class="sourceLineNo">4606</span>          } else {<a name="line.4606"></a>
+<span class="sourceLineNo">4607</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4607"></a>
+<span class="sourceLineNo">4608</span>          }<a name="line.4608"></a>
+<span class="sourceLineNo">4609</span>        }<a name="line.4609"></a>
+<span class="sourceLineNo">4610</span>      }<a name="line.4610"></a>
+<span class="sourceLineNo">4611</span>      for (Path file: files) {<a name="line.4611"></a>
+<span class="sourceLineNo">4612</span>        if (!walFS.delete(file, false)) {<a name="line.4612"></a>
+<span class="sourceLineNo">4613</span>          LOG.error("Failed delete of " + file);<a name="line.4613"></a>
+<span class="sourceLineNo">4614</span>        } else {<a name="line.4614"></a>
+<span class="sourceLineNo">4615</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4615"></a>
+<span class="sourceLineNo">4616</span>        }<a name="line.4616"></a>
+<span class="sourceLineNo">4617</span>      }<a name="line.4617"></a>
+<span class="sourceLineNo">4618</span>    }<a name="line.4618"></a>
+<span class="sourceLineNo">4619</span>    return seqid;<a name="line.4619"></a>
+<span class="sourceLineNo">4620</span>  }<a name="line.4620"></a>
+<span class="sourceLineNo">4621</span><a name="line.4621"></a>
+<span class="sourceLineNo">4622</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4622"></a>
+<span class="sourceLineNo">4623</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4623"></a>
+<span class="sourceLineNo">4624</span>      throws IOException {<a name="line.4624"></a>
+<span class="sourceLineNo">4625</span>    long seqid = minSeqIdForTheRegion;<a name="line.4625"></a>
+<span class="sourceLineNo">4626</span>    if (LOG.isDebugEnabled()) {<a name="line.4626"></a>
+<span class="sourceLineNo">4627</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4627"></a>
+<span class="sourceLineNo">4628</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4628"></a>
+<span class="sourceLineNo">4629</span>    }<a name="line.4629"></a>
+<span class="sourceLineNo">4630</span><a name="line.4630"></a>
+<span class="sourceLineNo">4631</span>    if (files == null || files.isEmpty()) {<a name="line.4631"></a>
+<span class="sourceLineNo">4632</span>      return minSeqIdForTheRegion;<a name="line.4632"></a>
+<span class="sourceLineNo">4633</span>    }<a name="line.4633"></a>
+<span class="sourceLineNo">4634</span><a name="line.4634"></a>
+<span class="sourceLineNo">4635</span>    for (Path edits: files) {<a name="line.4635"></a>
+<span class="sourceLineNo">4636</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4636"></a>
+<span class="sourceLineNo">4637</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4637"></a>
+<span class="sourceLineNo">4638</span>        continue;<a name="line.4638"></a>
+<span class="sourceLineNo">4639</span>      }<a name="line.4639"></a>
+<span class="sourceLineNo">4640</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4640"></a>
+<span class="sourceLineNo">4641</span><a name="line.4641"></a>
+<span class="sourceLineNo">4642</span>      long maxSeqId;<a name="line.4642"></a>
+<span class="sourceLineNo">4643</span>      String fileName = edits.getName();<a name="line.4643"></a>
+<span class="sourceLineNo">4644</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4644"></a>
+<span class="sourceLineNo">4645</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4645"></a>
+<span class="sourceLineNo">4646</span>        if (LOG.isDebugEnabled()) {<a name="line.4646"></a>
+<span class="sourceLineNo">4647</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4647"></a>
+<span class="sourceLineNo">4648</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4648"></a>
+<span class="sourceLineNo">4649</span>              + ", skipped the whole file, path=" + edits;<a name="line.4649"></a>
+<span class="sourceLineNo">4650</span>          LOG.debug(msg);<a name="line.4650"></a>
+<span class="sourceLineNo">4651</span>        }<a name="line.4651"></a>
+<span class="sourceLineNo">4652</span>        continue;<a name="line.4652"></a>
+<span class="sourceLineNo">4653</span>      }<a name="line.4653"></a>
+<span class="sourceLineNo">4654</span><a name="line.4654"></a>
+<span class="sourceLineNo">4655</span>      try {<a name="line.4655"></a>
+<span class="sourceLineNo">4656</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4656"></a>
+<span class="sourceLineNo">4657</span>        // if seqId is greater<a name="line.4657"></a>
+<span class="sourceLineNo">4658</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4658"></a>
+<span class="sourceLineNo">4659</span>      } catch (IOException e) {<a name="line.4659"></a>
+<span class="sourceLineNo">4660</span>        boolean skipErrors = conf.getBoolean(<a name="line.4660"></a>
+<span class="sourceLineNo">4661</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4661"></a>
+<span class="sourceLineNo">4662</span>            conf.getBoolean(<a name="line.4662"></a>
+<span class="sourceLineNo">4663</span>                "hbase.skip.errors",<a name="line.4663"></a>
+<span class="sourceLineNo">4664</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4664"></a>
+<span class="sourceLineNo">4665</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4665"></a>
+<span class="sourceLineNo">4666</span>          LOG.warn(<a name="line.4666"></a>
+<span class="sourceLineNo">4667</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4667"></a>
+<span class="sourceLineNo">4668</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4668"></a>
+<span class="sourceLineNo">4669</span>        }<a name="line.4669"></a>
+<span class="sourceLineNo">4670</span>        if (skipErrors) {<a name="line.4670"></a>
+<span class="sourceLineNo">4671</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4671"></a>
+<span class="sourceLineNo">4672</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4672"></a>
+<span class="sourceLineNo">4673</span>              + "=true so continuing. Renamed " + edits +<a name="line.4673"></a>
+<span class="sourceLineNo">4674</span>              " as " + p, e);<a name="line.4674"></a>
+<span class="sourceLineNo">4675</span>        } else {<a name="line.4675"></a>
+<span class="sourceLineNo">4676</span>          throw e;<a name="line.4676"></a>
+<span class="sourceLineNo">4677</span>        }<a name="line.4677"></a>
+<span class="sourceLineNo">4678</span>      }<a name="line.4678"></a>
+<span class="sourceLineNo">4679</span>    }<a name="line.4679"></a>
+<span class="sourceLineNo">4680</span>    return seqid;<a name="line.4680"></a>
+<span class="sourceLineNo">4681</span>  }<a name="line.4681"></a>
 <span class="sourceLineNo">4682</span><a name="line.4682"></a>
-<span class="sourceLineNo">4683</span>    status.setStatus("Opening recovered edits");<a name="line.4683"></a>
-<span class="sourceLineNo">4684</span>    WAL.Reader reader = null;<a name="line.4684"></a>
-<span class="sourceLineNo">4685</span>    try {<a name="line.4685"></a>
-<span class="sourceLineNo">4686</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4686"></a>
-<span class="sourceLineNo">4687</span>      long currentEditSeqId = -1;<a name="line.4687"></a>
-<span class="sourceLineNo">4688</span>      long currentReplaySeqId = -1;<a name="line.4688"></a>
-<span class="sourceLineNo">4689</span>      long firstSeqIdInLog = -1;<a name="line.4689"></a>
-<span class="sourceLineNo">4690</span>      long skippedEdits = 0;<a name="line.4690"></a>
-<span class="sourceLineNo">4691</span>      long editsCount = 0;<a name="line.4691"></a>
-<span class="sourceLineNo">4692</span>      long intervalEdits = 0;<a name="line.4692"></a>
-<span class="sourceLineNo">4693</span>      WAL.Entry entry;<a name="line.4693"></a>
-<span class="sourceLineNo">4694</span>      HStore store = null;<a name="line.4694"></a>
-<span class="sourceLineNo">4695</span>      boolean reported_once = false;<a name="line.4695"></a>
-<span class="sourceLineNo">4696</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4696"></a>
-<span class="sourceLineNo">4697</span><a name="line.4697"></a>
-<span class="sourceLineNo">4698</span>      try {<a name="line.4698"></a>
-<span class="sourceLineNo">4699</span>        // How many edits seen before we check elapsed time<a name="line.4699"></a>
-<span class="sourceLineNo">4700</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4700"></a>
-<span class="sourceLineNo">4701</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4701"></a>
-<span class="sourceLineNo">4702</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4702"></a>
-<span class="sourceLineNo">4703</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4703"></a>
-<span class="sourceLineNo">4704</span><a name="line.4704"></a>
-<span class="sourceLineNo">4705</span>        if (coprocessorHost != null) {<a name="line.4705"></a>
-<span class="sourceLineNo">4706</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4706"></a>
-<span class="sourceLineNo">4707</span>        }<a name="line.4707"></a>
-<span class="sourceLineNo">4708</span><a name="line.4708"></a>
-<span class="sourceLineNo">4709</span>        while ((entry = reader.next()) != null) {<a name="line.4709"></a>
-<span class="sourceLineNo">4710</span>          WALKey key = entry.getKey();<a name="line.4710"></a>
-<span class="sourceLineNo">4711</span>          WALEdit val = entry.getEdit();<a name="line.4711"></a>
-<span class="sourceLineNo">4712</span><a name="line.4712"></a>
-<span class="sourceLineNo">4713</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4713"></a>
-<span class="sourceLineNo">4714</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4714"></a>
-<span class="sourceLineNo">4715</span>          }<a name="line.4715"></a>
-<span class="sourceLineNo">4716</span><a name="line.4716"></a>
-<span class="sourceLineNo">4717</span>          if (reporter != null) {<a name="line.4717"></a>
-<span class="sourceLineNo">4718</span>            intervalEdits += val.size();<a name="line.4718"></a>
-<span class="sourceLineNo">4719</span>            if (intervalEdits &gt;= interval) {<a name="line.4719"></a>
-<span class="sourceLineNo">4720</span>              // Number of edits interval reached<a name="line.4720"></a>
-<span class="sourceLineNo">4721</span>              intervalEdits = 0;<a name="line.4721"></a>
-<span class="sourceLineNo">4722</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4722"></a>
-<span class="sourceLineNo">4723</span>              if (lastReport + period &lt;= cur) {<a name="line.4723"></a>
-<span class="sourceLineNo">4724</span>                status.setStatus("Replaying edits..." +<a name="line.4724"></a>
-<span class="sourceLineNo">4725</span>                    " skipped=" + skippedEdits +<a name="line.4725"></a>
-<span class="sourceLineNo">4726</span>                    " edits=" + editsCount);<a name="line.4726"></a>
-<span class="sourceLineNo">4727</span>                // Timeout reached<a name="line.4727"></a>
-<span class="sourceLineNo">4728</span>                if(!reporter.progress()) {<a name="line.4728"></a>
-<span class="sourceLineNo">4729</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4729"></a>
-<span class="sourceLineNo">4730</span>                  LOG.warn(msg);<a name="line.4730"></a>
-<span class="sourceLineNo">4731</span>                  status.abort(msg);<a name="line.4731"></a>
-<span class="sourceLineNo">4732</span>                  throw new IOException(msg);<a name="line.4732"></a>
-<span class="sourceLineNo">4733</span>                }<a name="line.4733"></a>
-<span class="sourceLineNo">4734</span>                reported_once = true;<a name="line.4734"></a>
-<span class="sourceLineNo">4735</span>                lastReport = cur;<a name="line.4735"></a>
-<span class="sourceLineNo">4736</span>              }<a name="line.4736"></a>
-<span class="sourceLineNo">4737</span>            }<a name="line.4737"></a>
-<span class="sourceLineNo">4738</span>          }<a name="line.4738"></a>
-<span class="sourceLineNo">4739</span><a name="line.4739"></a>
-<span class="sourceLineNo">4740</span>          if (firstSeqIdInLog == -1) {<a name="line.4740"></a>
-<span class="sourceLineNo">4741</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4741"></a>
-<span class="sourceLineNo">4742</span>          }<a name="line.4742"></a>
-<span class="sourceLineNo">4743</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4743"></a>
-<span class="sourceLineNo">4744</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4744"></a>
-<span class="sourceLineNo">4745</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4745"></a>
-<span class="sourceLineNo">4746</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4746"></a>
-<span class="sourceLineNo">4747</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4747"></a>
-<span class="sourceLineNo">4748</span>                + "; edit=" + val);<a name="line.4748"></a>
-<span class="sourceLineNo">4749</span>          } else {<a name="line.4749"></a>
-<span class="sourceLineNo">4750</span>            currentEditSeqId = key.getSequenceId();<a name="line.4750"></a>
-<span class="sourceLineNo">4751</span>          }<a name="line.4751"></a>
-<span class="sourceLineNo">4752</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4752"></a>
-<span class="sourceLineNo">4753</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4753"></a>
-<span class="sourceLineNo">4754</span><a name="line.4754"></a>
-<span class="sourceLineNo">4755</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4755"></a>
-<span class="sourceLineNo">4756</span>          // instead of a KeyValue.<a name="line.4756"></a>
-<span class="sourceLineNo">4757</span>          if (coprocessorHost != null) {<a name="line.4757"></a>
-<span class="sourceLineNo">4758</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4758"></a>
-<span class="sourceLineNo">4759</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4759"></a>
-<span class="sourceLineNo">4760</span>              // if bypass this wal entry, ignore it ...<a name="line.4760"></a>
-<span class="sourceLineNo">4761</span>              continue;<a name="line.4761"></a>
-<span class="sourceLineNo">4762</span>            }<a name="line.4762"></a>
-<span class="sourceLineNo">4763</span>          }<a name="line.4763"></a>
-<span class="sourceLineNo">4764</span>          boolean checkRowWithinBoundary = false;<a name="line.4764"></a>
-<span class="sourceLineNo">4765</span>          // Check this edit is for this region.<a name="line.4765"></a>
-<span class="sourceLineNo">4766</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4766"></a>
-<span class="sourceLineNo">4767</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4767"></a>
-<span class="sourceLineNo">4768</span>            checkRowWithinBoundary = true;<a name="line.4768"></a>
-<span class="sourceLineNo">4769</span>          }<a name="line.4769"></a>
+<span class="sourceLineNo">4683</span>  /*<a name="line.4683"></a>
+<span class="sourceLineNo">4684</span>   * @param edits File of recovered edits.<a name="line.4684"></a>
+<span class="sourceLineNo">4685</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4685"></a>
+<span class="sourceLineNo">4686</span>   * must be larger than this to be replayed for each store.<a name="line.4686"></a>
+<span class="sourceLineNo">4687</span>   * @param reporter<a name="line.4687"></a>
+<span class="sourceLineNo">4688</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4688"></a>
+<span class="sourceLineNo">4689</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4689"></a>
+<span class="sourceLineNo">4690</span>   * @throws IOException<a name="line.4690"></a>
+<span class="sourceLineNo">4691</span>   */<a name="line.4691"></a>
+<span class="sourceLineNo">4692</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4692"></a>
+<span class="sourceLineNo">4693</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4693"></a>
+<span class="sourceLineNo">4694</span>    throws IOException {<a name="line.4694"></a>
+<span class="sourceLineNo">4695</span>    String msg = "Replaying edits from " + edits;<a name="line.4695"></a>
+<span class="sourceLineNo">4696</span>    LOG.info(msg);<a name="line.4696"></a>
+<span class="sourceLineNo">4697</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4697"></a>
+<span class="sourceLineNo">4698</span><a name="line.4698"></a>
+<span class="sourceLineNo">4699</span>    status.setStatus("Opening recovered edits");<a name="line.4699"></a>
+<span class="sourceLineNo">4700</span>    WAL.Reader reader = null;<a name="line.4700"></a>
+<span class="sourceLineNo">4701</span>    try {<a name="line.4701"></a>
+<span class="sourceLineNo">4702</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4702"></a>
+<span class="sourceLineNo">4703</span>      long currentEditSeqId = -1;<a name="line.4703"></a>
+<span class="sourceLineNo">4704</span>      long currentReplaySeqId = -1;<a name="line.4704"></a>
+<span class="sourceLineNo">4705</span>      long firstSeqIdInLog = -1;<a name="line.4705"></a>
+<span class="sourceLineNo">4706</span>      long skippedEdits = 0;<a name="line.4706"></a>
+<span class="sourceLineNo">4707</span>      long editsCount = 0;<a name="line.4707"></a>
+<span class="sourceLineNo">4708</span>      long intervalEdits = 0;<a name="line.4708"></a>
+<span class="sourceLineNo">4709</span>      WAL.Entry entry;<a name="line.4709"></a>
+<span class="sourceLineNo">4710</span>      HStore store = null;<a name="line.4710"></a>
+<span class="sourceLineNo">4711</span>      boolean reported_once = false;<a name="line.4711"></a>
+<span class="sourceLineNo">4712</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4712"></a>
+<span class="sourceLineNo">4713</span><a name="line.4713"></a>
+<span class="sourceLineNo">4714</span>      try {<a name="line.4714"></a>
+<span class="sourceLineNo">4715</span>        // How many edits seen before we check elapsed time<a name="line.4715"></a>
+<span class="sourceLineNo">4716</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4716"></a>
+<span class="sourceLineNo">4717</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4717"></a>
+<span class="sourceLineNo">4718</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4718"></a>
+<span class="sourceLineNo">4719</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4719"></a>
+<span class="sourceLineNo">4720</span><a name="line.4720"></a>
+<span class="sourceLineNo">4721</span>        if (coprocessorHost != null) {<a name="line.4721"></a>
+<span class="sourceLineNo">4722</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4722"></a>
+<span class="sourceLineNo">4723</span>        }<a name="line.4723"></a>
+<span class="sourceLineNo">4724</span><a name="line.4724"></a>
+<span class="sourceLineNo">4725</span>        while ((entry = reader.next()) != null) {<a name="line.4725"></a>
+<span class="sourceLineNo">4726</span>          WALKey key = entry.getKey();<a name="line.4726"></a>
+<span class="sourceLineNo">4727</span>          WALEdit val = entry.getEdit();<a name="line.4727"></a>
+<span class="sourceLineNo">4728</span><a name="line.4728"></a>
+<span class="sourceLineNo">4729</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4729"></a>
+<span class="sourceLineNo">4730</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4730"></a>
+<span class="sourceLineNo">4731</span>          }<a name="line.4731"></a>
+<span class="sourceLineNo">4732</span><a name="line.4732"></a>
+<span class="sourceLineNo">4733</span>          if (reporter != null) {<a name="line.4733"></a>
+<span class="sourceLineNo">4734</span>            intervalEdits += val.size();<a name="line.4734"></a>
+<span class="sourceLineNo">4735</span>            if (intervalEdits &gt;= interval) {<a name="line.4735"></a>
+<span class="sourceLineNo">4736</span>              // Number of edits interval reached<a name="line.4736"></a>
+<span class="sourceLineNo">4737</span>              intervalEdits = 0;<a name="line.4737"></a>
+<span class="sourceLineNo">4738</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4738"></a>
+<span class="sourceLineNo">4739</span>              if (lastReport + period &lt;= cur) {<a name="line.4739"></a>
+<span class="sourceLineNo">4740</span>                status.setStatus("Replaying edits..." +<a name="line.4740"></a>
+<span class="sourceLineNo">4741</span>                    " skipped=" + skippedEdits +<a name="line.4741"></a>
+<span class="sourceLineNo">4742</span>                    " edits=" + editsCount);<a name="line.4742"></a>
+<span class="sourceLineNo">4743</span>                // Timeout reached<a name="line.4743"></a>
+<span class="sourceLineNo">4744</span>                if(!reporter.progress()) {<a name="line.4744"></a>
+<span class="sourceLineNo">4745</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4745"></a>
+<span class="sourceLineNo">4746</span>                  LOG.warn(msg);<a name="line.4746"></a>
+<span class="sourceLineNo">4747</span>                  status.abort(msg);<a name="line.4747"></a>
+<span class="sourceLineNo">4748</span>                  throw new IOException(msg);<a name="line.4748"></a>
+<span class="sourceLineNo">4749</span>                }<a name="line.4749"></a>
+<span class="sourceLineNo">4750</span>                reported_once = true;<a name="line.4750"></a>
+<span class="sourceLineNo">4751</span>                lastReport = cur;<a name="line.4751"></a>
+<span class="sourceLineNo">4752</span>              }<a name="line.4752"></a>
+<span class="sourceLineNo">4753</span>            }<a name="line.4753"></a>
+<span class="sourceLineNo">4754</span>          }<a name="line.4754"></a>
+<span class="sourceLineNo">4755</span><a name="line.4755"></a>
+<span class="sourceLineNo">4756</span>          if (firstSeqIdInLog == -1) {<a name="line.4756"></a>
+<span class="sourceLineNo">4757</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4757"></a>
+<span class="sourceLineNo">4758</span>          }<a name="line.4758"></a>
+<span class="sourceLineNo">4759</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4759"></a>
+<span class="sourceLineNo">4760</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4760"></a>
+<span class="sourceLineNo">4761</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4761"></a>
+<span class="sourceLineNo">4762</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4762"></a>
+<span class="sourceLineNo">4763</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4763"></a>
+<span class="sourceLineNo">4764</span>                + "; edit=" + val);<a name="line.4764"></a>
+<span class="sourceLineNo">4765</span>          } else {<a name="line.4765"></a>
+<span class="sourceLineNo">4766</span>            currentEditSeqId = key.getSequenceId();<a name="line.4766"></a>
+<span class="sourceLineNo">4767</span>          }<a name="line.4767"></a>
+<span class="sourceLineNo">4768</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4768"></a>
+<span class="sourceLineNo">4769</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4769"></a>
 <span class="sourceLineNo">4770</span><a name="line.4770"></a>
-<span class="sourceLineNo">4771</span>          boolean flush = false;<a name="line.4771"></a>
-<span class="sourceLineNo">4772</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4772"></a>
-<span class="sourceLineNo">4773</span>          for (Cell cell: val.getCells()) {<a name="line.4773"></a>
-<span class="sourceLineNo">4774</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4774"></a>
-<span class="sourceLineNo">4775</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4775"></a>
-<span class="sourceLineNo">4776</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4776"></a>
-<span class="sourceLineNo">4777</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4777"></a>
-<span class="sourceLineNo">4778</span>              if (!checkRowWithinBoundary) {<a name="line.4778"></a>
-<span class="sourceLineNo">4779</span>                //this is a special edit, we should handle it<a name="line.4779"></a>
-<span class="sourceLineNo">4780</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4780"></a>
-<span class="sourceLineNo">4781</span>                if (compaction != null) {<a name="line.4781"></a>
-<span class="sourceLineNo">4782</span>                  //replay the compaction<a name="line.4782"></a>
-<span class="sourceLineNo">4783</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4783"></a>
-<span class="sourceLineNo">4784</span>                }<a name="line.4784"></a>
-<span class="sourceLineNo">4785</span>              }<a name="line.4785"></a>
-<span class="sourceLineNo">4786</span>              skippedEdits++;<a name="line.4786"></a>
-<span class="sourceLineNo">4787</span>              continue;<a name="line.4787"></a>
-<span class="sourceLineNo">4788</span>            }<a name="line.4788"></a>
-<span class="sourceLineNo">4789</span>            // Figure which store the edit is meant for.<a name="line.4789"></a>
-<span class="sourceLineNo">4790</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4790"></a>
-<span class="sourceLineNo">4791</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4791"></a>
-<span class="sourceLineNo">4792</span>              store = getStore(cell);<a name="line.4792"></a>
-<span class="sourceLineNo">4793</span>            }<a name="line.4793"></a>
-<span class="sourceLineNo">4794</span>            if (store == null) {<a name="line.4794"></a>
-<span class="sourceLineNo">4795</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4795"></a>
-<span class="sourceLineNo">4796</span>              // crash and redeploy?<a name="line.4796"></a>
-<span class="sourceLineNo">4797</span>              LOG.warn("No family for " + cell);<a name="line.4797"></a>
-<span class="sourceLineNo">4798</span>              skippedEdits++;<a name="line.4798"></a>
-<span class="sourceLineNo">4799</span>              continue;<a name="line.4799"></a>
-<span class="sourceLineNo">4800</span>            }<a name="line.4800"></a>
-<span class="sourceLineNo">4801</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4801"></a>
-<span class="sourceLineNo">4802</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4802"></a>
-<span class="sourceLineNo">4803</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4803"></a>
-<span class="sourceLineNo">4804</span>              skippedEdits++;<a name="line.4804"></a>
-<span class="sourceLineNo">4805</span>              continue;<a name="line.4805"></a>
-<span class="sourceLineNo">4806</span>            }<a name="line.4806"></a>
-<span class="sourceLineNo">4807</span>            // Now, figure if we should skip this edit.<a name="line.4807"></a>
-<span class="sourceLineNo">4808</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4808"></a>
-<span class="sourceLineNo">4809</span>                .getName())) {<a name="line.4809"></a>
-<span class="sourceLineNo">4810</span>              skippedEdits++;<a name="line.4810"></a>
-<span class="sourceLineNo">4811</span>              continue;<a name="line.4811"></a>
-<span class="sourceLineNo">4812</span>            }<a name="line.4812"></a>
-<span class="sourceLineNo">4813</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4813"></a>
-<span class="sourceLineNo">4814</span><a name="line.4814"></a>
-<span class="sourceLineNo">4815</span>            restoreEdit(store, cell, memStoreSizing);<a name="line.4815"></a>
-<span class="sourceLineNo">4816</span>            editsCount++;<a name="line.4816"></a>
-<span class="sourceLineNo">4817</span>          }<a name="line.4817"></a>
-<span class="sourceLineNo">4818</span>          MemStoreSize mss = memStoreSizing.getMemStoreSize();<a name="line.4818"></a>
-<span class="sourceLineNo">4819</span>          incMemStoreSize(mss);<a name="line.4819"></a>
-<span class="sourceLineNo">4820</span>          flush = isFlushSize(this.memStoreSizing.getMemStoreSize());<a name="line.4820"></a>
-<span class="sourceLineNo">4821</span>          if (flush) {<a name="line.4821"></a>
-<span class="sourceLineNo">4822</span>            internalFlushcache(null, currentEditSeqId, stores.values(), status, false,<a name="line.4822"></a>
-<span class="sourceLineNo">4823</span>              FlushLifeCycleTracker.DUMMY);<a name="line.4823"></a>
-<span class="sourceLineNo">4824</span>          }<a name="line.4824"></a>
-<span class="sourceLineNo">4825</span><a name="line.4825"></a>
-<span class="sourceLineNo">4826</span>          if (coprocessorHost != null) {<a name="line.4826"></a>
-<span class="sourceLineNo">4827</span>            coprocessorHost.postWALRestore(this.getRegionInfo(), key, val);<a name="line.4827"></a>
-<span class="sourceLineNo">4828</span>          }<a name="line.4828"></a>
-<span class="sourceLineNo">4829</span>        }<a name="line.4829"></a>
+<span class="sourceLineNo">4771</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4771"></a>
+<span class="sourceLineNo">4772</span>          // instead of a KeyValue.<a name="line.4772"></a>
+<span class="sourceLineNo">4773</span>          if (coprocessorHost != null) {<a name="line.4773"></a>
+<span class="sourceLineNo">4774</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4774"></a>
+<span class="sourceLineNo">4775</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4775"></a>
+<span class="sourceLineNo">4776</span>              // if bypass this wal entry, ignore it ...<a name="line.4776"></a>
+<span class="sourceLineNo">4777</span>              continue;<a name="line.4777"></a>
+<span class="sourceLineNo">4778</span>            }<a name="line.4778"></a>
+<span class="sourceLineNo">4779</span>          }<a name="line.4779"></a>
+<span class="sourceLineNo">4780</span>          boolean checkRowWithinBoundary = false;<a name="line.4780"></a>
+<span class="sourceLineNo">4781</span>          // Check this edit is for this region.<a name="line.4781"></a>
+<span class="sourceLineNo">4782</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4782"></a>
+<span class="sourceLineNo">4783</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4783"></a>
+<span class="sourceLineNo">4784</span>            checkRowWithinBoundary = true;<a name="line.4784"></a>
+<span class="sourceLineNo">4785</span>          }<a name="line.4785"></a>
+<span class="sourceLineNo">4786</span><a name="line.4786"></a>
+<span class="sourceLineNo">4787</span>          boolean flush = false;<a name="line.4787"></a>
+<span class="sourceLineNo">4788</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4788"></a>
+<span class="sourceLineNo">4789</span>          for (Cell cell: val.getCells()) {<a name="line.4789"></a>
+<span class="sourceLineNo">4790</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4790"></a>
+<span class="sourceLineNo">4791</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4791"></a>
+<span class="sourceLineNo">4792</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4792"></a>
+<span class="sourceLineNo">4793</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4793"></a>
+<span class="sourceLineNo">4794</span>              if (!checkRowWithinBoundary) {<a name="line.4794"></a>
+<span class="sourceLineNo">4795</span>                //this is a special edit, we should handle it<a name="line.4795"></a>
+<span class="sourceLineNo">4796</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4796"></a>
+<span class="sourceLineNo">4797</span>                if (compaction != null) {<a name="line.4797"></a>
+<span class="sourceLineNo">4798</span>                  //replay the compaction<a name="line.4798"></a>
+<span class="sourceLineNo">4799</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4799"></a>
+<span class="sourceLineNo">4800</span>                }<a name="line.4800"></a>
+<span class="sourceLineNo">4801</span>              }<a name="line.4801"></a>
+<span class="sourceLineNo">4802</span>              skippedEdits++;<a name="line.4802"></a>
+<span class="sourceLineNo">4803</span>              continue;<a name="line.4803"></a>
+<span class="sourceLineNo">4804</span>            }<a name="line.4804"></a>
+<span class="sourceLineNo">4805</span>            // Figure which store the edit is meant for.<a name="line.4805"></a>
+<span class="sourceLineNo">4806</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4806"></a>
+<span class="sourceLineNo">4807</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4807"></a>
+<span class="sourceLineNo">4808</span>              store = getStore(cell);<a name="line.4808"></a>
+<span class="sourceLineNo">4809</span>            }<a name="line.4809"></a>
+<span class="sourceLineNo">4810</span>            if (store == null) {<a name="line.4810"></a>
+<span class="sourceLineNo">4811</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4811"></a>
+<span class="sourceLineNo">4812</span>              // crash and redeploy?<a name="line.4812"></a>
+<span class="sourceLineNo">4813</span>              LOG.warn("No family for " + cell);<a name="line.4813"></a>
+<span class="sourceLineNo">4814</span>              skippedEdits++;<a name="line.4814"></a>
+<span class="sourceLineNo">4815</span>              continue;<a name="line.4815"></a>
+<span class="sourceLineNo">4816</span>            }<a name="line.4816"></a>
+<span class="sourceLineNo">4817</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4817"></a>
+<span class="sourceLineNo">4818</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4818"></a>
+<span class="sourceLineNo">4819</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4819"></a>
+<span class="sourceLineNo">4820</span>              skippedEdits++;<a name="line.4820"></a>
+<span class="sourceLineNo">4821</span>              continue;<a name="line.4821"></a>
+<span class="sourceLineNo">4822</span>            }<a name="line.4822"></a>
+<span class="sourceLineNo">4823</span>            // Now, figure if we should skip this edit.<a name="line.4823"></a>
+<span class="sourceLineNo">4824</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4824"></a>
+<span class="sourceLineNo">4825</span>                .getName())) {<a name="line.4825"></a>
+<span class="sourceLineNo">4826</span>              skippedEdits++;<a name="line.4826"></a>
+<span class="sourceLineNo">4827</span>              continue;<a name="line.4827"></a>
+<span class="sourceLineNo">4828</span>            }<a name="line.4828"></a>
+<span class="sourceLineNo">4829</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4829"></a>
 <span class="sourceLineNo">4830</span><a name="line.4830"></a>
-<span class="sourceLineNo">4831</span>        if (coprocessorHost != null) {<a name="line.4831"></a>
-<span class="sourceLineNo">4832</span>          coprocessorHost.postReplayWALs(this.getRegionInfo(), edits);<a name="line.4832"></a>
-<span class="sourceLineNo">4833</span>        }<a name="line.4833"></a>
-<span class="sourceLineNo">4834</span>      } catch (EOFException eof) {<a name="line.4834"></a>
-<span class="sourceLineNo">4835</span>        Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4835"></a>
-<span class="sourceLineNo">4836</span>        msg = "EnLongAddered EOF. Most likely due to Master failure during " +<a name="line.4836"></a>
-<span class="sourceLineNo">4837</span>            "wal splitting, so we have this data in another edit.  " +<a name="line.4837"></a>
-<span class="sourceLineNo">4838</span>            "Continuing, but renaming " + edits + " as " + p;<a name="line.4838"></a>
-<span class="sourceLineNo">4839</span>        LOG.warn(msg, eof);<a name="line.4839"></a>
-<span class="sourceLineNo">4840</span>        status.abort(msg);<a name="line.4840"></a>
-<span class="sourceLineNo">4841</span>      } catch (IOException ioe) {<a name="line.4841"></a>
-<span class="sourceLineNo">4842</span>        // If the IOE resulted from bad file format,<a name="line.4842"></a>
-<span class="sourceLineNo">4843</span>        // then this problem is idempotent and retrying won't help<a name="line.4843"></a>
-<span class="sourceLineNo">4844</span>        if (ioe.getCause() instanceof ParseException) {<a name="line.4844"></a>
-<span class="sourceLineNo">4845</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4845"></a>
-<span class="sourceLineNo">4846</span>          msg = "File corruption enLongAddered!  " +<a name="line.4846"></a>
-<span class="sourceLineNo">4847</span>              "Continuing, but renaming " + edits + " as " + p;<a name="line.4847"></a>
-<span class="sourceLineNo">4848</span>          LOG.warn(msg, ioe);<a name="line.4848"></a>
-<span class="sourceLineNo">4849</span>          status.setStatus(msg);<a name="line.4849"></a>
-<span class="sourceLineNo">4850</span>        } else {<a name="line.4850"></a>
-<span class="sourceLineNo">4851</span>          status.abort(StringUtils.stringifyException(ioe));<a name="line.4851"></a>
-<span class="sourceLineNo">4852</span>          // other IO errors may be transient (bad network connection,<a name="line.4852"></a>
-<span class="sourceLineNo">4853</span>          // checksum exception on one datanode, etc).  throw &amp; retry<a name="line.4853"></a>
-<span class="sourceLineNo">4854</span>          throw ioe;<a name="line.4854"></a>
-<span class="sourceLineNo">4855</span>        }<a name="line.4855"></a>
-<span class="sourceLineNo">4856</span>      }<a name="line.4856"></a>
-<span class="sourceLineNo">4857</span>      if (reporter != null &amp;&amp; !reported_once) {<a name="line.4857"></a>
-<span class="sourceLineNo">4858</span>        reporter.progress();<a name="line.4858"></a>
-<span class="sourceLineNo">4859</span>      }<a name="line.4859"></a>
-<span class="sourceLineNo">4860</span>      msg = "Applied " + editsCount + ", skipped " + skippedEdits +<a name="line.4860"></a>
-<span class="sourceLineNo">4861</span>        ", firstSequenceIdInLog=" + firstSeqIdInLog +<a name="line.4861"></a>
-<span class="sourceLineNo">4862</span>        ", maxSequenceIdInLog=" + currentEditSeqId + ", path=" + edits;<a name="line.4862"></a>
-<span class="sourceLineNo">4863</span>      status.markComplete(msg);<a name="line.4863"></a>
-<span class="sourceLineNo">4864</span>      LOG.debug(msg);<a name="line.4864"></a>
-<span class="sourceLineNo">4865</span>      return currentEditSeqId;<a name="line.4865"></a>
-<span class="sourceLineNo">4866</span>    } finally {<a name="line.4866"></a>
-<span class="sourceLineNo">4867</span>      status.cleanup();<a name="line.4867"></a>
-<span class="sourceLineNo">4868</span>      if (reader != null) {<a name="line.4868"></a>
-<span class="sourceLineNo">4869</span>         reader.close();<a name="line.4869"></a>
-<span class="sourceLineNo">4870</span>      }<a name="line.4870"></a>
-<span class="sourceLineNo">4871</span>    }<a name="line.4871"></a>
-<span class="sourceLineNo">4872</span>  }<a name="line.4872"></a>
-<span class="sourceLineNo">4873</span><a name="line.4873"></a>
-<span class="sourceLineNo">4874</span>  /**<a name="line.4874"></a>
-<span class="sourceLineNo">4875</span>   * Call to complete a compaction. Its for the case where we find in the WAL a compaction<a name="line.4875"></a>
-<span class="sourceLineNo">4876</span>   * that was not finished.  We could find one recovering a WAL after a regionserver crash.<a name="line.4876"></a>
-<span class="sourceLineNo">4877</span>   * See HBASE-2331.<a name="line.4877"></a>
-<span class="sourceLineNo">4878</span>   */<a name="line.4878"></a>
-<span class="sourceLineNo">4879</span>  void replayWALCompactionMarker(CompactionDescriptor compaction, boolean pickCompactionFiles,<a name="line.4879"></a>
-<span class="sourceLineNo">4880</span>      boolean removeFiles, long replaySeqId)<a name="line.4880"></a>
-<span class="sourceLineNo">4881</span>      throws IOException {<a name="line.4881"></a>
-<span class="sourceLineNo">4882</span>    try {<a name="line.4882"></a>
-<span class="sourceLineNo">4883</span>      checkTargetRegion(compaction.getEncodedRegionName().toByteArray(),<a name="line.4883"></a>
-<span class="sourceLineNo">4884</span>        "Compaction marker from WAL ", compaction);<a name="line.4884"></a>
-<span class="sourceLineNo">4885</span>    } catch (WrongRegionException wre) {<a name="line.4885"></a>
-<span class="sourceLineNo">4886</span>      if (RegionReplicaUtil.isDefaultReplica(this.getRegionInfo())) {<a name="line.4886"></a>
-<span class="sourceLineNo">4887</span>        // skip the compaction marker since it is not for this region<a name="line.4887"></a>
-<span class="sourceLineNo">4888</span>        return;<a name="line.4888"></a>
-<span class="sourceLineNo">4889</span>      }<a name="line.4889"></a>
-<span class="sourceLineNo">4890</span>      throw wre;<a name="line.4890"></a>
-<span class="sourceLineNo">4891</span>    }<a name="line.4891"></a>
-<span class="sourceLineNo">4892</span><a name="line.4892"></a>
-<span class="sourceLineNo">4893</span>    synchronized (writestate) {<a name="line.4893"></a>
-<span class="sourceLineNo">4894</span>      if (replaySeqId &lt; lastReplayedOpenRegionSeqId) {<a name="line.4894"></a>
-<span class="sourceLineNo">4895</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4895"></a>
-<span class="sourceLineNo">4896</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4896"></a>
-<span class="sourceLineNo">4897</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4897"></a>
-<span class="sourceLineNo">4898</span>            + "lastReplayedOpenRegionSeqId of " + lastReplayedOpenRegionSeqId);<a name="line.4898"></a>
-<span class="sourceLineNo">4899</span>        return;<a name="line.4899"></a>
-<span class="sourceLineNo">4900</span>      }<a name="line.4900"></a>
-<span class="sourceLineNo">4901</span>      if (replaySeqId &lt; lastReplayedCompactionSeqId) {<a name="line.4901"></a>
-<span class="sourceLineNo">4902</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4902"></a>
-<span class="sourceLineNo">4903</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4903"></a>
-<span class="sourceLineNo">4904</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4904"></a>
-<span class="sourceLineNo">4905</span>            + "lastReplayedCompactionSeqId of " + lastReplayedCompactionSeqId);<a name="line.4905"></a>
-<span class="sourceLineNo">4906</span>        return;<a name="line.4906"></a>
-<span class="sourceLineNo">4907</span>      } else {<a name="line.4907"></a>
-<span class="sourceLineNo">4908</span>        lastReplayedCompactionSeqId = repla

<TRUNCATED>

[31/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html
index ff9739c..b6e9056 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.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":9,"i13":9};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":9,"i13":9,"i14":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";
@@ -328,13 +328,21 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/P
 <td class="colFirst"><code>private static <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.PeerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">PeerProcedureInterface.PeerOperationType</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html#toPeerOperationType-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationType-">toPeerOperationType</a></span>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationType&nbsp;type)</code>&nbsp;</td>
 </tr>
+<tr id="i14" class="altColor">
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html#waitInitialized-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">waitInitialized</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
+<div class="block">The <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#doAcquireLock-TEnvironment-org.apache.hadoop.hbase.procedure2.store.ProcedureStore-"><code>Procedure.doAcquireLock(Object, ProcedureStore)</code></a> will be split into two steps, first, it will
+ call us to determine whether we need to wait for initialization, second, it will call
+ <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#acquireLock-TEnvironment-"><code>Procedure.acquireLock(Object)</code></a> to actually handle the lock for this procedure.</div>
+</td>
+</tr>
 </table>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#acquireLock-TEnvironment-">acquireLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#addStackIndex-int-">addStackIndex</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#afterReplay-TEnvironment-">afterReplay</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#beforeReplay-TEnvironment-">beforeReplay</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#bypass-TEnvironment-">bypass</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#compareTo-org.apache.hadoop.hbase.procedure2.Procedure-">compareTo</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#completionCleanup-TEnvironment-">completionCleanup</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#doExecute-TEnvironment-">doExecute</a>, 
 <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#doRollback-TEnvironment-">doRollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#elapsedTime--">elapsedTime</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getChildrenLatch--">getChildrenLatch</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getException--">getException</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getLastUpdate--">getLastUpdate</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getNonceKey--">getNonceKey</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getOwner--">getOwner</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getParentProcId--">getParentProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcedureMetrics-
 TEnvironment-">getProcedureMetrics</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcId--">getProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcIdHashCode-long-">getProcIdHashCode</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcName--">getProcName</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getResult--">getResult</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getRootProcedureId-java.util.Map-org.apache.hadoop.hbase.procedure2.Procedure-">getRootProcedureId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getRootProcId--">getRootProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getStackIndexes--">getStackIndexes</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getState--">getState</a>,
  <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getSubmittedTime--">getSubmittedTime</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getTimeout--">getTimeout</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getTimeoutTimestamp--">getTimeoutTimestamp</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasChildren--">hasChildren</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasException--">hasException</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasLock--">hasLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasOwner--">hasOwner</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasParent--">hasParent</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasTimeout--">hasTimeout</a>, <a href="
 ../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#haveSameParent-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.procedure2.Procedure-">haveSameParent</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#holdLock-TEnvironment-">holdLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#incChildrenLatch--">incChildrenLatch</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isBypass--">isBypass</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isFailed--">isFailed</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isFinished--">isFinished</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isInitializing--">isInitializing</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isLockedWhenLoading--">isLockedWhenLoading</a>, <a href="../../
 ../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isRunnable--">isRunnable</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isSuccess--">isSuccess</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isWaiting--">isWaiting</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#releaseLock-TEnvironment-">releaseLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#removeStackIndex--">removeStackIndex</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setAbortFailure-java.lang.String-java.lang.String-">setAbortFailure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setChildrenLatch-int-">setChildrenLatch</a>, <a href="../../../../../../org/apa
 che/hadoop/hbase/procedure2/Procedure.html#setFailure-org.apache.hadoop.hbase.procedure2.RemoteProcedureException-">setFailure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setFailure-java.lang.String-java.lang.Throwable-">setFailure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setLastUpdate-long-">setLastUpdate</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setNonceKey-org.apache.hadoop.hbase.util.NonceKey-">setNonceKey</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setOwner-java.lang.String-">setOwner</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setOwner-org.apache.hadoop.hbase.security.User-">setOwner</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setParentProcId-long-">setParentProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#se
 tProcId-long-">setProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setResult-byte:A-">setResult</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setRootProcId-long-">setRootProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setStackIndexes-java.util.List-">setStackIndexes</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setState-org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.ProcedureState-">setState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setSubmittedTime-long-">setSubmittedTime</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setTimeout-int-">setTimeout</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setTimeoutFailure-TEnvironment-">setTimeoutFailure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedur
 e2/Procedure.html#shouldWaitClientAck-TEnvironment-">shouldWaitClientAck</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#skipPersistence--">skipPersistence</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toString--">toString</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringClass--">toStringClass</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringClassDetails-java.lang.StringBuilder-">toStringClassDetails</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringDetails--">toStringDetails</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringSimpleSB--">toStringSimpleSB</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringState-java.lang.StringBuilder-">toStringState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Pr
 ocedure.html#updateMetricsOnFinish-TEnvironment-long-boolean-">updateMetricsOnFinish</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#updateMetricsOnSubmit-TEnvironment-">updateMetricsOnSubmit</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#updateTimestamp--">updateTimestamp</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#waitInitialized-TEnvironment-">waitInitialized</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#wasExecuted--">wasExecuted</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#acquireLock-TEnvironment-">acquireLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#addStackIndex-int-">addStackIndex</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#afterReplay-TEnvironment-">afterReplay</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#beforeReplay-TEnvironment-">beforeReplay</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#bypass-TEnvironment-">bypass</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#compareTo-org.apache.hadoop.hbase.procedure2.Procedure-">compareTo</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#completionCleanup-TEnvironment-">completionCleanup</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#doExecute-TEnvironment-">doExecute</a>, 
 <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#doRollback-TEnvironment-">doRollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#elapsedTime--">elapsedTime</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getChildrenLatch--">getChildrenLatch</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getException--">getException</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getLastUpdate--">getLastUpdate</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getNonceKey--">getNonceKey</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getOwner--">getOwner</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getParentProcId--">getParentProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcedureMetrics-
 TEnvironment-">getProcedureMetrics</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcId--">getProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcIdHashCode-long-">getProcIdHashCode</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcName--">getProcName</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getResult--">getResult</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getRootProcedureId-java.util.Map-org.apache.hadoop.hbase.procedure2.Procedure-">getRootProcedureId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getRootProcId--">getRootProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getStackIndexes--">getStackIndexes</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getState--">getState</a>,
  <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getSubmittedTime--">getSubmittedTime</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getTimeout--">getTimeout</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getTimeoutTimestamp--">getTimeoutTimestamp</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasChildren--">hasChildren</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasException--">hasException</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasLock--">hasLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasOwner--">hasOwner</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasParent--">hasParent</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasTimeout--">hasTimeout</a>, <a href="
 ../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#haveSameParent-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.procedure2.Procedure-">haveSameParent</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#holdLock-TEnvironment-">holdLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#incChildrenLatch--">incChildrenLatch</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isBypass--">isBypass</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isFailed--">isFailed</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isFinished--">isFinished</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isInitializing--">isInitializing</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isLockedWhenLoading--">isLockedWhenLoading</a>, <a href="../../
 ../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isRunnable--">isRunnable</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isSuccess--">isSuccess</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isWaiting--">isWaiting</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#releaseLock-TEnvironment-">releaseLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#removeStackIndex--">removeStackIndex</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setAbortFailure-java.lang.String-java.lang.String-">setAbortFailure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setChildrenLatch-int-">setChildrenLatch</a>, <a href="../../../../../../org/apa
 che/hadoop/hbase/procedure2/Procedure.html#setFailure-org.apache.hadoop.hbase.procedure2.RemoteProcedureException-">setFailure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setFailure-java.lang.String-java.lang.Throwable-">setFailure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setLastUpdate-long-">setLastUpdate</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setNonceKey-org.apache.hadoop.hbase.util.NonceKey-">setNonceKey</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setOwner-java.lang.String-">setOwner</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setOwner-org.apache.hadoop.hbase.security.User-">setOwner</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setParentProcId-long-">setParentProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#se
 tProcId-long-">setProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setResult-byte:A-">setResult</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setRootProcId-long-">setRootProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setStackIndexes-java.util.List-">setStackIndexes</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setState-org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.ProcedureState-">setState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setSubmittedTime-long-">setSubmittedTime</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setTimeout-int-">setTimeout</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setTimeoutFailure-TEnvironment-">setTimeoutFailure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedur
 e2/Procedure.html#shouldWaitClientAck-TEnvironment-">shouldWaitClientAck</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#skipPersistence--">skipPersistence</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toString--">toString</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringClass--">toStringClass</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringClassDetails-java.lang.StringBuilder-">toStringClassDetails</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringDetails--">toStringDetails</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringSimpleSB--">toStringSimpleSB</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringState-java.lang.StringBuilder-">toStringState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Pr
 ocedure.html#updateMetricsOnFinish-TEnvironment-long-boolean-">updateMetricsOnFinish</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#updateMetricsOnSubmit-TEnvironment-">updateMetricsOnSubmit</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#updateTimestamp--">updateTimestamp</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#wasExecuted--">wasExecuted</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -677,13 +685,38 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/P
 </dl>
 </li>
 </ul>
+<a name="waitInitialized-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>waitInitialized</h4>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html#line.209">waitInitialized</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#waitInitialized-TEnvironment-">Procedure</a></code></span></div>
+<div class="block">The <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#doAcquireLock-TEnvironment-org.apache.hadoop.hbase.procedure2.store.ProcedureStore-"><code>Procedure.doAcquireLock(Object, ProcedureStore)</code></a> will be split into two steps, first, it will
+ call us to determine whether we need to wait for initialization, second, it will call
+ <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#acquireLock-TEnvironment-"><code>Procedure.acquireLock(Object)</code></a> to actually handle the lock for this procedure.
+ <p/>
+ This is because that when master restarts, we need to restore the lock state for all the
+ procedures to not break the semantic if <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#holdLock-TEnvironment-"><code>Procedure.holdLock(Object)</code></a> is true. But the
+ <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html" title="class in org.apache.hadoop.hbase.procedure2"><code>ProcedureExecutor</code></a> will be started before the master finish initialization(as it is part
+ of the initialization!), so we need to split the code into two steps, and when restore, we just
+ restore the lock part and ignore the waitInitialized part. Otherwise there will be dead lock.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#waitInitialized-TEnvironment-">waitInitialized</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&gt;</code></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true means we need to wait until the environment has been initialized, otherwise true.</dd>
+</dl>
+</li>
+</ul>
 <a name="serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>serializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html#line.209">serializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html#line.214">serializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
 <div class="block">The user-level code of the procedure may have some state to
@@ -705,7 +738,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/P
 <ul class="blockListLast">
 <li class="blockList">
 <h4>deserializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html#line.216">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html#line.221">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
 <div class="block">Called on store load to allow the user to decode the previously serialized

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
index 7b435d2..4b549da 100644
--- a/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
@@ -127,8 +127,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.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.State.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">MonitoredTask.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.TaskFilter.TaskType.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">TaskMonitor.TaskFilter.TaskType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.State.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">MonitoredTask.State</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 3d2e424..e65f920 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/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/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/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/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/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/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/Cell.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Cell.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Size.Unit.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Size.Unit</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/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/HConstants.OperationStatusCode.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HConstants.OperationStatusCode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompareOperator</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/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/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/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/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/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/ClusterMetrics.Option.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterMetrics.Option</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 1e0d504..2120dc2 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/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.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/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">StateMachineProcedure.Flow</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">Procedure.LockState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">RootProcedureState.State</span></a></li>
+<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>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html b/devapidocs/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html
index b7eabfd..f7b9c91 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.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};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -251,90 +251,82 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr id="i9" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#getOrCreateNodeNoGrowOrMerge-long-">getOrCreateNodeNoGrowOrMerge</a></span>(long&nbsp;procId)</code>&nbsp;</td>
-</tr>
-<tr id="i10" class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#getOrCreateNodeWithGrowOrMerge-long-">getOrCreateNodeWithGrowOrMerge</a></span>(long&nbsp;procId)</code>&nbsp;</td>
-</tr>
-<tr id="i11" class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#growNode-org.apache.hadoop.hbase.procedure2.store.BitSetNode-long-">growNode</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a>&nbsp;node,
         long&nbsp;procId)</code>
 <div class="block">Grows <code>node</code> to contain <code>procId</code> and updates the map.</div>
 </td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#insert-org.apache.hadoop.hbase.procedure2.store.BitSetNode-long-">insert</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a>&nbsp;node,
       long&nbsp;procId)</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#insert-long-">insert</a></span>(long&nbsp;procId)</code>&nbsp;</td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#insert-long:A-">insert</a></span>(long[]&nbsp;procIds)</code>&nbsp;</td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#insert-long-long:A-">insert</a></span>(long&nbsp;procId,
       long[]&nbsp;subProcIds)</code>&nbsp;</td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#isAllModified--">isAllModified</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html" title="enum in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.DeleteState</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#isDeleted-long-">isDeleted</a></span>(long&nbsp;procId)</code>
 <div class="block">If <a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#partial"><code>partial</code></a> is false, returns state from the bitmap.</div>
 </td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#isEmpty--">isEmpty</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#isModified-long-">isModified</a></span>(long&nbsp;procId)</code>&nbsp;</td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#isPartial--">isPartial</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#lookupClosestNode-org.apache.hadoop.hbase.procedure2.store.BitSetNode-long-">lookupClosestNode</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a>&nbsp;node,
                  long&nbsp;procId)</code>
 <div class="block">lookup the node containing the specified procId.</div>
 </td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i20" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#mergeNodes-org.apache.hadoop.hbase.procedure2.store.BitSetNode-org.apache.hadoop.hbase.procedure2.store.BitSetNode-">mergeNodes</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a>&nbsp;leftNode,
           <a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a>&nbsp;rightNode)</code>
 <div class="block">Merges <code>leftNode</code> & <code>rightNode</code> and updates the map.</div>
 </td>
 </tr>
-<tr id="i23" class="rowColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#reset--">reset</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i24" class="altColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#resetModified--">resetModified</a></span>()</code>
 <div class="block">Clears the list of updated procedure ids.</div>
 </td>
 </tr>
-<tr id="i25" class="rowColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#resetTo-org.apache.hadoop.hbase.procedure2.store.ProcedureStoreTracker-">resetTo</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker</a>&nbsp;tracker)</code>
 <div class="block">Resets internal state to same as given <code>tracker</code>.</div>
 </td>
 </tr>
-<tr id="i26" class="altColor">
+<tr id="i24" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#resetTo-org.apache.hadoop.hbase.procedure2.store.ProcedureStoreTracker-boolean-">resetTo</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker</a>&nbsp;tracker,
        boolean&nbsp;resetDelete)</code>
@@ -342,58 +334,58 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
  to the modified flag if <code>resetDelete</code> is true.</div>
 </td>
 </tr>
-<tr id="i27" class="rowColor">
+<tr id="i25" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#resetToProto-org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.ProcedureStoreTracker-">resetToProto</a></span>(org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.ProcedureStoreTracker&nbsp;trackerProtoBuf)</code>&nbsp;</td>
 </tr>
-<tr id="i28" class="altColor">
+<tr id="i26" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#setDeleted-long-boolean-">setDeleted</a></span>(long&nbsp;procId,
           boolean&nbsp;isDeleted)</code>
 <div class="block">This method is used when restarting where we need to rebuild the ProcedureStoreTracker.</div>
 </td>
 </tr>
-<tr id="i29" class="rowColor">
+<tr id="i27" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#setDeletedIfDeletedByThem-org.apache.hadoop.hbase.procedure2.store.ProcedureStoreTracker-">setDeletedIfDeletedByThem</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker</a>&nbsp;tracker)</code>
 <div class="block">For the global tracker, we will use this method to build the holdingCleanupTracker, as the
  modified flags will be cleared after rolling so we only need to test the deleted flags.</div>
 </td>
 </tr>
-<tr id="i30" class="altColor">
+<tr id="i28" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#setDeletedIfModified-long...-">setDeletedIfModified</a></span>(long...&nbsp;procId)</code>
 <div class="block">Set the given bit for the procId to delete if it was modified before.</div>
 </td>
 </tr>
-<tr id="i31" class="rowColor">
+<tr id="i29" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#setDeletedIfModifiedInBoth-org.apache.hadoop.hbase.procedure2.store.ProcedureStoreTracker-">setDeletedIfModifiedInBoth</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker</a>&nbsp;tracker)</code>
 <div class="block">Similar with <a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#setDeletedIfModified-long...-"><code>setDeletedIfModified(long...)</code></a>, but here the <code>procId</code> are given by
  the <code>tracker</code>.</div>
 </td>
 </tr>
-<tr id="i32" class="altColor">
+<tr id="i30" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#setDeleteIf-org.apache.hadoop.hbase.procedure2.store.ProcedureStoreTracker-java.util.function.BiFunction-">setDeleteIf</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker</a>&nbsp;tracker,
            <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/BiFunction.html?is-external=true" title="class or interface in java.util.function">BiFunction</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</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>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;func)</code>&nbsp;</td>
 </tr>
-<tr id="i33" class="rowColor">
+<tr id="i31" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#setKeepDeletes-boolean-">setKeepDeletes</a></span>(boolean&nbsp;keepDeletes)</code>&nbsp;</td>
 </tr>
-<tr id="i34" class="altColor">
+<tr id="i32" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#setMinMaxModifiedProcIds-long-long-">setMinMaxModifiedProcIds</a></span>(long&nbsp;min,
                         long&nbsp;max)</code>
 <div class="block">Will be called when restarting where we need to rebuild the ProcedureStoreTracker.</div>
 </td>
 </tr>
-<tr id="i35" class="rowColor">
+<tr id="i33" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#setPartialFlag-boolean-">setPartialFlag</a></span>(boolean&nbsp;isPartial)</code>&nbsp;</td>
 </tr>
-<tr id="i36" class="altColor">
+<tr id="i34" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.ProcedureStoreTracker</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#toProto--">toProto</a></span>()</code>
 <div class="block">Builds
@@ -401,16 +393,16 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
  protocol buffer from current state.</div>
 </td>
 </tr>
-<tr id="i37" class="rowColor">
+<tr id="i35" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#trackProcIds-long-">trackProcIds</a></span>(long&nbsp;procId)</code>&nbsp;</td>
 </tr>
-<tr id="i38" class="altColor">
+<tr id="i36" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#update-org.apache.hadoop.hbase.procedure2.store.BitSetNode-long-">update</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a>&nbsp;node,
       long&nbsp;procId)</code>&nbsp;</td>
 </tr>
-<tr id="i39" class="rowColor">
+<tr id="i37" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#update-long-">update</a></span>(long&nbsp;procId)</code>&nbsp;</td>
 </tr>
@@ -888,31 +880,13 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.378">getOrCreateNode</a>(long&nbsp;procId)</pre>
 </li>
 </ul>
-<a name="getOrCreateNodeNoGrowOrMerge-long-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getOrCreateNodeNoGrowOrMerge</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.384">getOrCreateNodeNoGrowOrMerge</a>(long&nbsp;procId)</pre>
-</li>
-</ul>
-<a name="getOrCreateNodeWithGrowOrMerge-long-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getOrCreateNodeWithGrowOrMerge</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.396">getOrCreateNodeWithGrowOrMerge</a>(long&nbsp;procId)</pre>
-</li>
-</ul>
 <a name="growNode-org.apache.hadoop.hbase.procedure2.store.BitSetNode-long-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>growNode</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.452">growNode</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a>&nbsp;node,
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.434">growNode</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a>&nbsp;node,
                             long&nbsp;procId)</pre>
 <div class="block">Grows <code>node</code> to contain <code>procId</code> and updates the map.</div>
 <dl>
@@ -927,7 +901,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>mergeNodes</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.462">mergeNodes</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a>&nbsp;leftNode,
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.444">mergeNodes</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a>&nbsp;leftNode,
                               <a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a>&nbsp;rightNode)</pre>
 <div class="block">Merges <code>leftNode</code> & <code>rightNode</code> and updates the map.</div>
 </li>
@@ -938,7 +912,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>dump</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.469">dump</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.451">dump</a>()</pre>
 </li>
 </ul>
 <a name="toProto--">
@@ -947,7 +921,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toProto</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.ProcedureStoreTracker&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.487">toProto</a>()
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.ProcedureStoreTracker&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.469">toProto</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">Builds
  org.apache.hadoop.hbase.protobuf.generated.ProcedureProtos.ProcedureStoreTracker

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/org/apache/hadoop/hbase/procedure2/store/class-use/BitSetNode.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/store/class-use/BitSetNode.html b/devapidocs/org/apache/hadoop/hbase/procedure2/store/class-use/BitSetNode.html
index 5b580b9..a97cba4 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/store/class-use/BitSetNode.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/store/class-use/BitSetNode.html
@@ -126,14 +126,6 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ProcedureStoreTracker.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#getOrCreateNodeNoGrowOrMerge-long-">getOrCreateNodeNoGrowOrMerge</a></span>(long&nbsp;procId)</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ProcedureStoreTracker.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#getOrCreateNodeWithGrowOrMerge-long-">getOrCreateNodeWithGrowOrMerge</a></span>(long&nbsp;procId)</code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a></code></td>
 <td class="colLast"><span class="typeNameLabel">ProcedureStoreTracker.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#growNode-org.apache.hadoop.hbase.procedure2.store.BitSetNode-long-">growNode</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a>&nbsp;node,
         long&nbsp;procId)</code>
 <div class="block">Grows <code>node</code> to contain <code>procId</code> and updates the map.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 a50d2ca..d95ec9c 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/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/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/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/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/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/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/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/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaScope</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 d276e2f..1ae252b 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.6067">HRegion.BulkLoadListener</a></pre>
+<pre>public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.6083">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.6075">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.6091">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.6084">doneBulkLoad</a>(byte[]&nbsp;family,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html#line.6100">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.6092">failedBulkLoad</a>(byte[]&nbsp;family,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html#line.6108">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>


[35/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index 791c82d..60f4e49 100644
--- a/book.html
+++ b/book.html
@@ -342,21 +342,20 @@
 <ul class="sectlevel1">
 <li><a href="#appendix_contributing_to_documentation">Appendix A: Contributing to Documentation</a></li>
 <li><a href="#faq">Appendix B: FAQ</a></li>
-<li><a href="#hbck.in.depth">Appendix C: hbck In Depth</a></li>
-<li><a href="#appendix_acl_matrix">Appendix D: Access Control Matrix</a></li>
-<li><a href="#compression">Appendix E: Compression and Data Block Encoding In HBase</a></li>
-<li><a href="#sql">Appendix F: SQL over HBase</a></li>
-<li><a href="#ycsb">Appendix G: YCSB</a></li>
-<li><a href="#_hfile_format_2">Appendix H: HFile format</a></li>
-<li><a href="#other.info">Appendix I: Other Information About HBase</a></li>
-<li><a href="#hbase.history">Appendix J: HBase History</a></li>
-<li><a href="#asf">Appendix K: HBase and the Apache Software Foundation</a></li>
-<li><a href="#orca">Appendix L: Apache HBase Orca</a></li>
-<li><a href="#tracing">Appendix M: Enabling Dapper-like Tracing in HBase</a></li>
+<li><a href="#appendix_acl_matrix">Appendix C: Access Control Matrix</a></li>
+<li><a href="#compression">Appendix D: Compression and Data Block Encoding In HBase</a></li>
+<li><a href="#sql">Appendix E: SQL over HBase</a></li>
+<li><a href="#ycsb">Appendix F: YCSB</a></li>
+<li><a href="#_hfile_format_2">Appendix G: HFile format</a></li>
+<li><a href="#other.info">Appendix H: Other Information About HBase</a></li>
+<li><a href="#hbase.history">Appendix I: HBase History</a></li>
+<li><a href="#asf">Appendix J: HBase and the Apache Software Foundation</a></li>
+<li><a href="#orca">Appendix K: Apache HBase Orca</a></li>
+<li><a href="#tracing">Appendix L: Enabling Dapper-like Tracing in HBase</a></li>
 <li><a href="#tracing.client.modifications">200. Client Modifications</a></li>
 <li><a href="#tracing.client.shell">201. Tracing from HBase Shell</a></li>
-<li><a href="#hbase.rpc">Appendix N: 0.95 RPC Specification</a></li>
-<li><a href="#_known_incompatibilities_among_hbase_versions">Appendix O: Known Incompatibilities Among HBase Versions</a></li>
+<li><a href="#hbase.rpc">Appendix M: 0.95 RPC Specification</a></li>
+<li><a href="#_known_incompatibilities_among_hbase_versions">Appendix N: Known Incompatibilities Among HBase Versions</a></li>
 <li><a href="#_hbase_2_0_incompatible_changes">202. HBase 2.0 Incompatible Changes</a></li>
 </ul>
 </li>
@@ -6775,7 +6774,10 @@ Quitting...</code></pre>
 <p>You <strong>must not</strong> use an HBase 1.x version of HBCK against an HBase 2.0+ cluster. HBCK is strongly tied to the HBase server version. Using the HBCK tool from an earlier release against an HBase 2.0+ cluster will destructively alter said cluster in unrecoverable ways.</p>
 </div>
 <div class="paragraph">
-<p>As of HBase 2.0, HBCK is a read-only tool that can report the status of some non-public system internals. You should not rely on the format nor content of these internals to remain consistent across HBase releases.</p>
+<p>As of HBase 2.0, HBCK (A.K.A <em>HBCK1</em> or <em>hbck1</em>) is a read-only tool that can report the status of some non-public system internals. You should not rely on the format nor content of these internals to remain consistent across HBase releases.</p>
+</div>
+<div class="paragraph">
+<p>To read about HBCK&#8217;s replacement, see <a href="#HBCK2">HBase <code>HBCK2</code></a> in <a href="#ops_mgt">Apache HBase Operational Management</a>.</p>
 </div>
 <div id="upgrade2.0.removed.configs" class="paragraph">
 <div class="title">Configuration settings no longer in HBase 2.0+</div>
@@ -26954,7 +26956,8 @@ Options:
 Commands:
 Some commands take arguments. Pass no args or -h for usage.
   shell           Run the HBase shell
-  hbck            Run the hbase 'fsck' tool
+  hbck            Run the HBase 'fsck' tool. Defaults read-only hbck1.
+                  Pass '-j /path/to/HBCK2.jar' to run hbase-2.x HBCK2.
   snapshot        Tool for managing snapshots
   wal             Write-ahead-log analyzer
   hfile           Store file analyzer
@@ -27399,25 +27402,52 @@ Note that this command is in a different package than the others.</p>
 <div class="sect2">
 <h3 id="hbck"><a class="anchor" href="#hbck"></a>149.5. HBase <code>hbck</code></h3>
 <div class="paragraph">
-<p>To run <code>hbck</code> against your HBase cluster run <code>$./bin/hbase hbck</code>. At the end of the command&#8217;s output it prints <code>OK</code> or <code>INCONSISTENCY</code>.
-If your cluster reports inconsistencies, pass <code>-details</code> to see more detail emitted.
-If inconsistencies, run <code>hbck</code> a few times because the inconsistency may be transient (e.g. cluster is starting up or a region is splitting).
- Passing <code>-fix</code> may correct the inconsistency (This is an experimental feature).</p>
+<p>The <code>hbck</code> tool that shipped with hbase-1.x has been made read-only in hbase-2.x. It is not able to repair
+hbase-2.x clusters as hbase internals have changed. Nor should its assessments in read-only mode be
+trusted as it does not understand hbase-2.x operation.</p>
+</div>
+<div class="paragraph">
+<p>A new tool, <a href="#HBCK2">HBase <code>HBCK2</code></a>, described in the next section, replaces <code>hbck</code>.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="HBCK2"><a class="anchor" href="#HBCK2"></a>149.6. HBase <code>HBCK2</code></h3>
+<div class="paragraph">
+<p><code>HBCK2</code> is the successor to <a href="#hbck">HBase <code>hbck</code></a>, the hbase-1.x fix tool (A.K.A <code>hbck1</code>). Use it in place of <code>hbck1</code>
+making repairs against hbase-2.x installs.</p>
+</div>
+<div class="paragraph">
+<p><code>HBCK2</code> does not ship as part of hbase. It can be found as a subproject of the companion
+<a href="https://github.com/apache/hbase-operator-tools">hbase-operator-tools</a> repository at
+<a href="https://github.com/apache/hbase-operator-tools/tree/master/hbase-hbck2">Apache HBase HBCK2 Tool</a>.
+<code>HBCK2</code> was moved out of hbase so it could evolve at a cadence apart from that of hbase core.</p>
+</div>
+<div class="paragraph">
+<p>See the [<a href="https://github.com/apache/hbase-operator-tools/tree/master/hbase-hbck2" class="bare">https://github.com/apache/hbase-operator-tools/tree/master/hbase-hbck2</a>](HBCK2) Home Page
+for how <code>HBCK2</code> differs from <code>hbck1</code>, and for how to build and use it.</p>
 </div>
 <div class="paragraph">
-<p>For more information, see <a href="#hbck.in.depth">hbck In Depth</a>.</p>
+<p>Once built, you can run <code>HBCK2</code> as follows:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><span class="error">$</span> hbase hbck -j /path/to/HBCK2.jar</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This will generate <code>HBCK2</code> usage describing commands and options.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="hfile_tool2"><a class="anchor" href="#hfile_tool2"></a>149.6. HFile Tool</h3>
+<h3 id="hfile_tool2"><a class="anchor" href="#hfile_tool2"></a>149.7. HFile Tool</h3>
 <div class="paragraph">
 <p>See <a href="#hfile_tool">HFile Tool</a>.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_wal_tools"><a class="anchor" href="#_wal_tools"></a>149.7. WAL Tools</h3>
+<h3 id="_wal_tools"><a class="anchor" href="#_wal_tools"></a>149.8. WAL Tools</h3>
 <div class="sect3">
-<h4 id="hlog_tool"><a class="anchor" href="#hlog_tool"></a>149.7.1. FSHLog tool</h4>
+<h4 id="hlog_tool"><a class="anchor" href="#hlog_tool"></a>149.8.1. FSHLog tool</h4>
 <div class="paragraph">
 <p>The main method on <code>FSHLog</code> offers manual split and dump facilities.
 Pass it WALs or the product of a split, the content of the <em>recovered.edits</em>.
@@ -27478,13 +27508,13 @@ In those versions, you can print the contents of a WAL using the same configurat
 </div>
 </div>
 <div class="sect2">
-<h3 id="compression.tool"><a class="anchor" href="#compression.tool"></a>149.8. Compression Tool</h3>
+<h3 id="compression.tool"><a class="anchor" href="#compression.tool"></a>149.9. Compression Tool</h3>
 <div class="paragraph">
 <p>See <a href="#compression.test">compression.test</a>.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="copy.table"><a class="anchor" href="#copy.table"></a>149.9. CopyTable</h3>
+<h3 id="copy.table"><a class="anchor" href="#copy.table"></a>149.10. CopyTable</h3>
 <div class="paragraph">
 <p>CopyTable is a utility that can copy part or of all of a table, either to the same cluster or another cluster.
 The target table must first exist.
@@ -27566,7 +27596,7 @@ For performance consider the following general options:
 </div>
 </div>
 <div class="sect2">
-<h3 id="export"><a class="anchor" href="#export"></a>149.10. Export</h3>
+<h3 id="export"><a class="anchor" href="#export"></a>149.11. Export</h3>
 <div class="paragraph">
 <p>Export is a utility that will dump the contents of table to HDFS in a sequence file.
 The Export can be run via a Coprocessor Endpoint or MapReduce. Invoke via:</p>
@@ -27682,7 +27712,7 @@ specifying column families and applying filters during the export.
 </div>
 </div>
 <div class="sect2">
-<h3 id="import"><a class="anchor" href="#import"></a>149.11. Import</h3>
+<h3 id="import"><a class="anchor" href="#import"></a>149.12. Import</h3>
 <div class="paragraph">
 <p>Import is a utility that will load data that has been exported back into HBase.
 Invoke via:</p>
@@ -27714,7 +27744,7 @@ To see usage instructions, run the command with no options.
 </div>
 </div>
 <div class="sect2">
-<h3 id="importtsv"><a class="anchor" href="#importtsv"></a>149.12. ImportTsv</h3>
+<h3 id="importtsv"><a class="anchor" href="#importtsv"></a>149.13. ImportTsv</h3>
 <div class="paragraph">
 <p>ImportTsv is a utility that will load data in TSV format into HBase.
 It has two distinct usages: loading data from TSV format in HDFS into HBase via Puts, and preparing StoreFiles to be loaded via the <code>completebulkload</code>.</p>
@@ -27739,7 +27769,7 @@ It has two distinct usages: loading data from TSV format in HDFS into HBase via
 <p>These generated StoreFiles can be loaded into HBase via <a href="#completebulkload">completebulkload</a>.</p>
 </div>
 <div class="sect3">
-<h4 id="importtsv.options"><a class="anchor" href="#importtsv.options"></a>149.12.1. ImportTsv Options</h4>
+<h4 id="importtsv.options"><a class="anchor" href="#importtsv.options"></a>149.13.1. ImportTsv Options</h4>
 <div class="paragraph">
 <p>Running <code>ImportTsv</code> with no arguments prints brief usage information:</p>
 </div>
@@ -27771,7 +27801,7 @@ Other options that may be specified with -D include:
 </div>
 </div>
 <div class="sect3">
-<h4 id="importtsv.example"><a class="anchor" href="#importtsv.example"></a>149.12.2. ImportTsv Example</h4>
+<h4 id="importtsv.example"><a class="anchor" href="#importtsv.example"></a>149.13.2. ImportTsv Example</h4>
 <div class="paragraph">
 <p>For example, assume that we are loading data into a table called 'datatsv' with a ColumnFamily called 'd' with two columns "c1" and "c2".</p>
 </div>
@@ -27806,20 +27836,20 @@ The second and third columns in the file will be imported as "d:c1" and "d:c2",
 </div>
 </div>
 <div class="sect3">
-<h4 id="importtsv.warning"><a class="anchor" href="#importtsv.warning"></a>149.12.3. ImportTsv Warning</h4>
+<h4 id="importtsv.warning"><a class="anchor" href="#importtsv.warning"></a>149.13.3. ImportTsv Warning</h4>
 <div class="paragraph">
 <p>If you have preparing a lot of data for bulk loading, make sure the target HBase table is pre-split appropriately.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="importtsv.also"><a class="anchor" href="#importtsv.also"></a>149.12.4. See Also</h4>
+<h4 id="importtsv.also"><a class="anchor" href="#importtsv.also"></a>149.13.4. See Also</h4>
 <div class="paragraph">
 <p>For more information about bulk-loading HFiles into HBase, see <a href="#arch.bulk.load">arch.bulk.load</a></p>
 </div>
 </div>
 </div>
 <div class="sect2">
-<h3 id="completebulkload"><a class="anchor" href="#completebulkload"></a>149.13. CompleteBulkLoad</h3>
+<h3 id="completebulkload"><a class="anchor" href="#completebulkload"></a>149.14. CompleteBulkLoad</h3>
 <div class="paragraph">
 <p>The <code>completebulkload</code> utility will move generated StoreFiles into an HBase table.
 This utility is often used in conjunction with output from <a href="#importtsv">importtsv</a>.</p>
@@ -27840,7 +27870,7 @@ This utility is often used in conjunction with output from <a href="#importtsv">
 </div>
 </div>
 <div class="sect3">
-<h4 id="completebulkload.warning"><a class="anchor" href="#completebulkload.warning"></a>149.13.1. CompleteBulkLoad Warning</h4>
+<h4 id="completebulkload.warning"><a class="anchor" href="#completebulkload.warning"></a>149.14.1. CompleteBulkLoad Warning</h4>
 <div class="paragraph">
 <p>Data generated via MapReduce is often created with file permissions that are not compatible with the running HBase process.
 Assuming you&#8217;re running HDFS with permissions enabled, those permissions will need to be updated before you run CompleteBulkLoad.</p>
@@ -27851,7 +27881,7 @@ Assuming you&#8217;re running HDFS with permissions enabled, those permissions w
 </div>
 </div>
 <div class="sect2">
-<h3 id="walplayer"><a class="anchor" href="#walplayer"></a>149.14. WALPlayer</h3>
+<h3 id="walplayer"><a class="anchor" href="#walplayer"></a>149.15. WALPlayer</h3>
 <div class="paragraph">
 <p>WALPlayer is a utility to replay WAL files into HBase.</p>
 </div>
@@ -27883,7 +27913,7 @@ The output can optionally be mapped to another set of tables.</p>
 To NOT run WALPlayer as a mapreduce job on your cluster, force it to run all in the local process by adding the flags <code>-Dmapreduce.jobtracker.address=local</code> on the command line.</p>
 </div>
 <div class="sect3">
-<h4 id="walplayer.options"><a class="anchor" href="#walplayer.options"></a>149.14.1. WALPlayer Options</h4>
+<h4 id="walplayer.options"><a class="anchor" href="#walplayer.options"></a>149.15.1. WALPlayer Options</h4>
 <div class="paragraph">
 <p>Running <code>WALPlayer</code> with no arguments prints brief usage information:</p>
 </div>
@@ -27920,7 +27950,7 @@ For performance also consider the following options:
 </div>
 </div>
 <div class="sect2">
-<h3 id="rowcounter"><a class="anchor" href="#rowcounter"></a>149.15. RowCounter</h3>
+<h3 id="rowcounter"><a class="anchor" href="#rowcounter"></a>149.16. RowCounter</h3>
 <div class="paragraph">
 <p><a href="https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/RowCounter.html">RowCounter</a> is a mapreduce job to count all the rows of a table.
 This is a good utility to use as a sanity check to ensure that HBase can read all the blocks of a table if there are any concerns of metadata inconsistency.
@@ -27941,7 +27971,7 @@ The scanned data can be limited based on keys using the <code>--range=[startKey]
 </div>
 </div>
 <div class="sect2">
-<h3 id="cellcounter"><a class="anchor" href="#cellcounter"></a>149.16. CellCounter</h3>
+<h3 id="cellcounter"><a class="anchor" href="#cellcounter"></a>149.17. CellCounter</h3>
 <div class="paragraph">
 <p>HBase ships another diagnostic mapreduce job called <a href="https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/CellCounter.html">CellCounter</a>.
 Like RowCounter, it gathers more fine-grained statistics about your table.
@@ -27987,14 +28017,14 @@ Specify a time range to scan the table by using the <code>--starttime=&lt;startt
 </div>
 </div>
 <div class="sect2">
-<h3 id="_mlockall"><a class="anchor" href="#_mlockall"></a>149.17. mlockall</h3>
+<h3 id="_mlockall"><a class="anchor" href="#_mlockall"></a>149.18. mlockall</h3>
 <div class="paragraph">
 <p>It is possible to optionally pin your servers in physical memory making them less likely to be swapped out in oversubscribed environments by having the servers call <a href="http://linux.die.net/man/2/mlockall">mlockall</a> on startup.
 See <a href="https://issues.apache.org/jira/browse/HBASE-4391">HBASE-4391 Add ability to start RS as root and call mlockall</a> for how to build the optional library and have it run on startup.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="compaction.tool"><a class="anchor" href="#compaction.tool"></a>149.18. Offline Compaction Tool</h3>
+<h3 id="compaction.tool"><a class="anchor" href="#compaction.tool"></a>149.19. Offline Compaction Tool</h3>
 <div class="paragraph">
 <p>See the usage for the
 <a href="https://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/regionserver/CompactionTool.html">CompactionTool</a>.
@@ -28007,7 +28037,7 @@ Run it like:</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="__code_hbase_clean_code"><a class="anchor" href="#__code_hbase_clean_code"></a>149.19. <code>hbase clean</code></h3>
+<h3 id="__code_hbase_clean_code"><a class="anchor" href="#__code_hbase_clean_code"></a>149.20. <code>hbase clean</code></h3>
 <div class="paragraph">
 <p>The <code>hbase clean</code> command cleans HBase data from ZooKeeper, HDFS, or both.
 It is appropriate to use for testing.
@@ -28026,7 +28056,7 @@ Options:
 </div>
 </div>
 <div class="sect2">
-<h3 id="__code_hbase_pe_code"><a class="anchor" href="#__code_hbase_pe_code"></a>149.20. <code>hbase pe</code></h3>
+<h3 id="__code_hbase_pe_code"><a class="anchor" href="#__code_hbase_pe_code"></a>149.21. <code>hbase pe</code></h3>
 <div class="paragraph">
 <p>The <code>hbase pe</code> command runs the PerformanceEvaluation tool, which is used for testing.</p>
 </div>
@@ -28039,7 +28069,7 @@ For usage instructions, run the command with no options.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="__code_hbase_ltt_code"><a class="anchor" href="#__code_hbase_ltt_code"></a>149.21. <code>hbase ltt</code></h3>
+<h3 id="__code_hbase_ltt_code"><a class="anchor" href="#__code_hbase_ltt_code"></a>149.22. <code>hbase ltt</code></h3>
 <div class="paragraph">
 <p>The <code>hbase ltt</code> command runs the LoadTestTool utility, which is used for testing.</p>
 </div>
@@ -28052,7 +28082,7 @@ For general usage instructions, pass the <code>-h</code> option.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="ops.pre-upgrade"><a class="anchor" href="#ops.pre-upgrade"></a>149.22. Pre-Upgrade validator</h3>
+<h3 id="ops.pre-upgrade"><a class="anchor" href="#ops.pre-upgrade"></a>149.23. Pre-Upgrade validator</h3>
 <div class="paragraph">
 <p>Pre-Upgrade validator tool can be used to check the cluster for known incompatibilities before upgrading from HBase 1 to HBase 2.</p>
 </div>
@@ -28062,7 +28092,7 @@ For general usage instructions, pass the <code>-h</code> option.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_coprocessor_validation"><a class="anchor" href="#_coprocessor_validation"></a>149.22.1. Coprocessor validation</h4>
+<h4 id="_coprocessor_validation"><a class="anchor" href="#_coprocessor_validation"></a>149.23.1. Coprocessor validation</h4>
 <div class="paragraph">
 <p>HBase supports co-processors for a long time, but the co-processor API can be changed between major releases. Co-processor validator tries to determine
 whether the old co-processors are still compatible with the actual HBase version.</p>
@@ -28113,7 +28143,7 @@ for warnings.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_datablockencoding_validation"><a class="anchor" href="#_datablockencoding_validation"></a>149.22.2. DataBlockEncoding validation</h4>
+<h4 id="_datablockencoding_validation"><a class="anchor" href="#_datablockencoding_validation"></a>149.23.2. DataBlockEncoding validation</h4>
 <div class="paragraph">
 <p>HBase 2.0 removed <code>PREFIX_TREE</code> Data Block Encoding from column families. For further information
 please check <a href="#upgrade2.0.prefix-tree.removed"><em>prefix-tree</em> encoding removed</a>.
@@ -28145,7 +28175,7 @@ To verify that none of the column families are using incompatible Data Block Enc
 </div>
 </div>
 <div class="sect3">
-<h4 id="_hfile_content_validation"><a class="anchor" href="#_hfile_content_validation"></a>149.22.3. HFile Content validation</h4>
+<h4 id="_hfile_content_validation"><a class="anchor" href="#_hfile_content_validation"></a>149.23.3. HFile Content validation</h4>
 <div class="paragraph">
 <p>Even though Data Block Encoding is changed from <code>PREFIX_TREE</code> it is still possible to have HFiles that contain data encoded that way.
 To verify that HFiles are readable with HBase 2 please use <em>HFile content validator</em>.</p>
@@ -28246,7 +28276,7 @@ drop_namespace 'pre_upgrade_cleanup'</pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_data_block_encoding_tool"><a class="anchor" href="#_data_block_encoding_tool"></a>149.23. Data Block Encoding Tool</h3>
+<h3 id="_data_block_encoding_tool"><a class="anchor" href="#_data_block_encoding_tool"></a>149.24. Data Block Encoding Tool</h3>
 <div class="paragraph">
 <p>Tests various compression algorithms with different data block encoder for key compression on an existing HFile.
 Useful for testing, debugging and benchmarking.</p>
@@ -28583,18 +28613,6 @@ It disables the load balancer before moving the regions.</p>
 <p>Extract the new release, verify its configuration, and synchronize it to all nodes of your cluster using <code>rsync</code>, <code>scp</code>, or another secure synchronization mechanism.</p>
 </li>
 <li>
-<p>Use the hbck utility to ensure that the cluster is consistent.</p>
-<div class="listingblock">
-<div class="content">
-<pre>$ ./bin/hbck</pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Perform repairs if required.
-See <a href="#hbck">hbck</a> for details.</p>
-</div>
-</li>
-<li>
 <p>Restart the master first.
 You may need to modify these commands if your new HBase directory is different from the old one, such as for an upgrade.</p>
 <div class="listingblock">
@@ -28630,9 +28648,6 @@ To wait for 5 minutes between each RegionServer restart, modify the above script
 <li>
 <p>Restart the Master again, to clear out the dead servers list and re-enable the load balancer.</p>
 </li>
-<li>
-<p>Run the <code>hbck</code> utility again, to be sure the cluster is consistent.</p>
-</li>
 </ol>
 </div>
 </div>
@@ -30638,9 +30653,7 @@ HDFS replication factor only affects your disk usage and is invisible to most HB
 <div class="paragraph">
 <p>You can view the current number of regions for a given table using the HMaster UI.
 In the <span class="label">Tables</span> section, the number of online regions for each table is listed in the <span class="label">Online Regions</span> column.
-This total only includes the in-memory state and does not include disabled or offline regions.
-If you do not want to use the HMaster UI, you can determine the number of regions by counting the number of subdirectories of the /hbase/&lt;table&gt;/ subdirectories in HDFS, or by running the <code>bin/hbase hbck</code> command.
-Each of these methods may return a slightly different number, depending on the status of each region.</p>
+This total only includes the in-memory state and does not include disabled or offline regions.</p>
 </div>
 </div>
 <div class="sect3">
@@ -36885,266 +36898,7 @@ Reference Guide are <code>java</code>, <code>xml</code>, <code>sql</code>, and <
 </div>
 </div>
 <div class="sect1">
-<h2 id="hbck.in.depth"><a class="anchor" href="#hbck.in.depth"></a>Appendix C: hbck In Depth</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>HBaseFsck (hbck) is a tool for checking for region consistency and table integrity problems and repairing a corrupted HBase.
-It works in two basic modes&#8201;&#8212;&#8201;a read-only inconsistency identifying mode and a multi-phase read-write repair mode.</p>
-</div>
-<div class="sect2">
-<h3 id="_running_hbck_to_identify_inconsistencies"><a class="anchor" href="#_running_hbck_to_identify_inconsistencies"></a>C.1. Running hbck to identify inconsistencies</h3>
-<div class="paragraph">
-<p>To check to see if your HBase cluster has corruptions, run hbck against your HBase cluster:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bourne">$ ./bin/hbase hbck</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>At the end of the commands output it prints OK or tells you the number of INCONSISTENCIES present.
-You may also want to run hbck a few times because some inconsistencies can be transient (e.g.
-cluster is starting up or a region is splitting). Operationally you may want to run hbck regularly and setup alert (e.g.
-via nagios) if it repeatedly reports inconsistencies . A run of hbck will report a list of inconsistencies along with a brief description of the regions and tables affected.
-The using the <code>-details</code> option will report more details including a representative listing of all the splits present in all the tables.</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bourne">$ ./bin/hbase hbck -details</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>If you just want to know if some tables are corrupted, you can limit hbck to identify inconsistencies in only specific tables.
-For example the following command would only attempt to check table TableFoo and TableBar.
-The benefit is that hbck will run in less time.</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bourne">$ ./bin/hbase hbck TableFoo TableBar</code></pre>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_inconsistencies"><a class="anchor" href="#_inconsistencies"></a>C.2. Inconsistencies</h3>
-<div class="paragraph">
-<p>If after several runs, inconsistencies continue to be reported, you may have encountered a corruption.
-These should be rare, but in the event they occur newer versions of HBase include the hbck tool enabled with automatic repair options.</p>
-</div>
-<div class="paragraph">
-<p>There are two invariants that when violated create inconsistencies in HBase:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>HBase&#8217;s region consistency invariant is satisfied if every region is assigned and deployed on exactly one region server, and all places where this state kept is in accordance.</p>
-</li>
-<li>
-<p>HBase&#8217;s table integrity invariant is satisfied if for each table, every possible row key resolves to exactly one region.</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Repairs generally work in three phases&#8201;&#8212;&#8201;a read-only information gathering phase that identifies inconsistencies, a table integrity repair phase that restores the table integrity invariant, and then finally a region consistency repair phase that restores the region consistency invariant.
-Starting from version 0.90.0, hbck could detect region consistency problems report on a subset of possible table integrity problems.
-It also included the ability to automatically fix the most common inconsistency, region assignment and deployment consistency problems.
-This repair could be done by using the <code>-fix</code> command line option.
-These problems close regions if they are open on the wrong server or on multiple region servers and also assigns regions to region servers if they are not open.</p>
-</div>
-<div class="paragraph">
-<p>Starting from HBase versions 0.90.7, 0.92.2 and 0.94.0, several new command line options are introduced to aid repairing a corrupted HBase.
-This hbck sometimes goes by the nickname ``uberhbck''. Each particular version of uber hbck is compatible with the HBase&#8217;s of the same major version (0.90.7 uberhbck can repair a 0.90.4). However, versions &#8656;0.90.6 and versions &#8656;0.92.1 may require restarting the master or failing over to a backup master.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_localized_repairs"><a class="anchor" href="#_localized_repairs"></a>C.3. Localized repairs</h3>
-<div class="paragraph">
-<p>When repairing a corrupted HBase, it is best to repair the lowest risk inconsistencies first.
-These are generally region consistency repairs&#8201;&#8212;&#8201;localized single region repairs, that only modify in-memory data, ephemeral zookeeper data, or patch holes in the META table.
-Region consistency requires that the HBase instance has the state of the region&#8217;s data in HDFS (.regioninfo files), the region&#8217;s row in the hbase:meta table., and region&#8217;s deployment/assignments on region servers and the master in accordance.
-Options for repairing region consistency include:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><code>-fixAssignments</code> (equivalent to the 0.90 <code>-fix</code> option) repairs unassigned, incorrectly assigned or multiply assigned regions.</p>
-</li>
-<li>
-<p><code>-fixMeta</code> which removes meta rows when corresponding regions are not present in HDFS and adds new meta rows if they regions are present in HDFS while not in META.                To fix deployment and assignment problems you can run this command:</p>
-</li>
-</ul>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bourne">$ ./bin/hbase hbck -fixAssignments</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>To fix deployment and assignment problems as well as repairing incorrect meta rows you can run this command:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bourne">$ ./bin/hbase hbck -fixAssignments -fixMeta</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>There are a few classes of table integrity problems that are low risk repairs.
-The first two are degenerate (startkey == endkey) regions and backwards regions (startkey &gt; endkey). These are automatically handled by sidelining the data to a temporary directory (/hbck/xxxx). The third low-risk class is hdfs region holes.
-This can be repaired by using the:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><code>-fixHdfsHoles</code> option for fabricating new empty regions on the file system.
-If holes are detected you can use -fixHdfsHoles and should include -fixMeta and -fixAssignments to make the new region consistent.</p>
-</li>
-</ul>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bourne">$ ./bin/hbase hbck -fixAssignments -fixMeta -fixHdfsHoles</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Since this is a common operation, we&#8217;ve added a the <code>-repairHoles</code> flag that is equivalent to the previous command:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bourne">$ ./bin/hbase hbck -repairHoles</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>If inconsistencies still remain after these steps, you most likely have table integrity problems related to orphaned or overlapping regions.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_region_overlap_repairs"><a class="anchor" href="#_region_overlap_repairs"></a>C.4. Region Overlap Repairs</h3>
-<div class="paragraph">
-<p>Table integrity problems can require repairs that deal with overlaps.
-This is a riskier operation because it requires modifications to the file system, requires some decision making, and may require some manual steps.
-For these repairs it is best to analyze the output of a <code>hbck -details</code>                run so that you isolate repairs attempts only upon problems the checks identify.
-Because this is riskier, there are safeguard that should be used to limit the scope of the repairs.
-WARNING: This is a relatively new and have only been tested on online but idle HBase instances (no reads/writes). Use at your own risk in an active production environment! The options for repairing table integrity violations include:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><code>-fixHdfsOrphans</code> option for ``adopting'' a region directory that is missing a region metadata file (the .regioninfo file).</p>
-</li>
-<li>
-<p><code>-fixHdfsOverlaps</code> ability for fixing overlapping regions</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>When repairing overlapping regions, a region&#8217;s data can be modified on the file system in two ways: 1) by merging regions into a larger region or 2) by sidelining regions by moving data to ``sideline'' directory where data could be restored later.
-Merging a large number of regions is technically correct but could result in an extremely large region that requires series of costly compactions and splitting operations.
-In these cases, it is probably better to sideline the regions that overlap with the most other regions (likely the largest ranges) so that merges can happen on a more reasonable scale.
-Since these sidelined regions are already laid out in HBase&#8217;s native directory and HFile format, they can be restored by using HBase&#8217;s bulk load mechanism.
-The default safeguard thresholds are conservative.
-These options let you override the default thresholds and to enable the large region sidelining feature.</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><code>-maxMerge &lt;n&gt;</code> maximum number of overlapping regions to merge</p>
-</li>
-<li>
-<p><code>-sidelineBigOverlaps</code> if more than maxMerge regions are overlapping, sideline attempt to sideline the regions overlapping with the most other regions.</p>
-</li>
-<li>
-<p><code>-maxOverlapsToSideline &lt;n&gt;</code> if sidelining large overlapping regions, sideline at most n regions.</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Since often times you would just want to get the tables repaired, you can use this option to turn on all repair options:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><code>-repair</code> includes all the region consistency options and only the hole repairing table integrity options.</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Finally, there are safeguards to limit repairs to only specific tables.
-For example the following command would only attempt to check and repair table TableFoo and TableBar.</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre>$ ./bin/hbase hbck -repair TableFoo TableBar</pre>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_special_cases_meta_is_not_properly_assigned"><a class="anchor" href="#_special_cases_meta_is_not_properly_assigned"></a>C.4.1. Special cases: Meta is not properly assigned</h4>
-<div class="paragraph">
-<p>There are a few special cases that hbck can handle as well.
-Sometimes the meta table&#8217;s only region is inconsistently assigned or deployed.
-In this case there is a special <code>-fixMetaOnly</code> option that can try to fix meta assignments.</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre>$ ./bin/hbase hbck -fixMetaOnly -fixAssignments</pre>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_special_cases_hbase_version_file_is_missing"><a class="anchor" href="#_special_cases_hbase_version_file_is_missing"></a>C.4.2. Special cases: HBase version file is missing</h4>
-<div class="paragraph">
-<p>HBase&#8217;s data on the file system requires a version file in order to start.
-If this file is missing, you can use the <code>-fixVersionFile</code> option to fabricating a new HBase version file.
-This assumes that the version of hbck you are running is the appropriate version for the HBase cluster.</p>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_special_case_root_and_meta_are_corrupt"><a class="anchor" href="#_special_case_root_and_meta_are_corrupt"></a>C.4.3. Special case: Root and META are corrupt.</h4>
-<div class="paragraph">
-<p>The most drastic corruption scenario is the case where the ROOT or META is corrupted and HBase will not start.
-In this case you can use the OfflineMetaRepair tool create new ROOT and META regions and tables.
-This tool assumes that HBase is offline.
-It then marches through the existing HBase home directory, loads as much information from region metadata files (.regioninfo files) as possible from the file system.
-If the region metadata has proper table integrity, it sidelines the original root and meta table directories, and builds new ones with pointers to the region directories and their data.</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre>$ ./bin/hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair</pre>
-</div>
-</div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-This tool is not as clever as uberhbck but can be used to bootstrap repairs that uberhbck can complete.
-If the tool succeeds you should be able to start hbase and run online repairs if necessary.
-</td>
-</tr>
-</table>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_special_cases_offline_split_parent"><a class="anchor" href="#_special_cases_offline_split_parent"></a>C.4.4. Special cases: Offline split parent</h4>
-<div class="paragraph">
-<p>Once a region is split, the offline parent will be cleaned up automatically.
-Sometimes, daughter regions are split again before their parents are cleaned up.
-HBase can clean up parents in the right order.
-However, there could be some lingering offline split parents sometimes.
-They are in META, in HDFS, and not deployed.
-But HBase can&#8217;t clean them up.
-In this case, you can use the <code>-fixSplitParents</code> option to reset them in META to be online and not split.
-Therefore, hbck can merge them with other regions if fixing overlapping regions option is used.</p>
-</div>
-<div class="paragraph">
-<p>This option should not normally be used, and it is not in <code>-fixAll</code>.</p>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="appendix_acl_matrix"><a class="anchor" href="#appendix_acl_matrix"></a>Appendix D: Access Control Matrix</h2>
+<h2 id="appendix_acl_matrix"><a class="anchor" href="#appendix_acl_matrix"></a>Appendix C: Access Control Matrix</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The following matrix shows the permission set required to perform operations in HBase.
@@ -37155,7 +36909,7 @@ Before using the table, read through the information about how to interpret it.<
 <p>The following conventions are used in the ACL Matrix table:</p>
 </div>
 <div class="sect2">
-<h3 id="_scopes"><a class="anchor" href="#_scopes"></a>D.1. Scopes</h3>
+<h3 id="_scopes"><a class="anchor" href="#_scopes"></a>C.1. Scopes</h3>
 <div class="paragraph">
 <p>Permissions are evaluated starting at the widest scope and working to the narrowest scope.</p>
 </div>
@@ -37190,7 +36944,7 @@ Before using the table, read through the information about how to interpret it.<
 </div>
 </div>
 <div class="sect2">
-<h3 id="_permissions"><a class="anchor" href="#_permissions"></a>D.2. Permissions</h3>
+<h3 id="_permissions"><a class="anchor" href="#_permissions"></a>C.2. Permissions</h3>
 <div class="paragraph">
 <p>Possible permissions include the following:</p>
 </div>
@@ -37741,7 +37495,7 @@ In case the table goes out of date, the unit tests which check for accuracy of p
 </div>
 </div>
 <div class="sect1">
-<h2 id="compression"><a class="anchor" href="#compression"></a>Appendix E: Compression and Data Block Encoding In HBase</h2>
+<h2 id="compression"><a class="anchor" href="#compression"></a>Appendix D: Compression and Data Block Encoding In HBase</h2>
 <div class="sectionbody">
 <div class="admonitionblock note">
 <table>
@@ -37892,7 +37646,7 @@ It was removed in hbase-2.0.0. It was a good idea but little uptake. If interest
 </dl>
 </div>
 <div class="sect2">
-<h3 id="data.block.encoding.types"><a class="anchor" href="#data.block.encoding.types"></a>E.1. Which Compressor or Data Block Encoder To Use</h3>
+<h3 id="data.block.encoding.types"><a class="anchor" href="#data.block.encoding.types"></a>D.1. Which Compressor or Data Block Encoder To Use</h3>
 <div class="paragraph">
 <p>The compression or codec type to use depends on the characteristics of your data. Choosing the wrong type could cause your data to take more space rather than less, and can have performance implications.</p>
 </div>
@@ -37927,7 +37681,7 @@ Snappy has similar qualities as LZO but has been shown to perform better.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="hadoop.native.lib"><a class="anchor" href="#hadoop.native.lib"></a>E.2. Making use of Hadoop Native Libraries in HBase</h3>
+<h3 id="hadoop.native.lib"><a class="anchor" href="#hadoop.native.lib"></a>D.2. Making use of Hadoop Native Libraries in HBase</h3>
 <div class="paragraph">
 <p>The Hadoop shared library has a bunch of facility including compression libraries and fast crc&#8217;ing&#8201;&#8212;&#8201;hardware crc&#8217;ing if your chipset supports it.
 To make this facility available to HBase, do the following. HBase/Hadoop will fall back to use alternatives if it cannot find the native library
@@ -38055,9 +37809,9 @@ bzip2:  <span class="predefined-constant">true</span> /lib64/libbz2.so<span clas
 </div>
 </div>
 <div class="sect2">
-<h3 id="_compressor_configuration_installation_and_use"><a class="anchor" href="#_compressor_configuration_installation_and_use"></a>E.3. Compressor Configuration, Installation, and Use</h3>
+<h3 id="_compressor_configuration_installation_and_use"><a class="anchor" href="#_compressor_configuration_installation_and_use"></a>D.3. Compressor Configuration, Installation, and Use</h3>
 <div class="sect3">
-<h4 id="compressor.install"><a class="anchor" href="#compressor.install"></a>E.3.1. Configure HBase For Compressors</h4>
+<h4 id="compressor.install"><a class="anchor" href="#compressor.install"></a>D.3.1. Configure HBase For Compressors</h4>
 <div class="paragraph">
 <p>Before HBase can use a given compressor, its libraries need to be available.
 Due to licensing issues, only GZ compression is available to HBase (via native Java libraries) in a default installation.
@@ -38165,7 +37919,7 @@ This would prevent a new server from being added to the cluster without having c
 </div>
 </div>
 <div class="sect3">
-<h4 id="changing.compression"><a class="anchor" href="#changing.compression"></a>E.3.2. Enable Compression On a ColumnFamily</h4>
+<h4 id="changing.compression"><a class="anchor" href="#changing.compression"></a>D.3.2. Enable Compression On a ColumnFamily</h4>
 <div class="paragraph">
 <p>To enable compression for a ColumnFamily, use an <code>alter</code> command.
 You do not need to re-create the table or copy data.
@@ -38201,7 +37955,7 @@ DESCRIPTION                                          ENABLED
 </div>
 </div>
 <div class="sect3">
-<h4 id="_testing_compression_performance"><a class="anchor" href="#_testing_compression_performance"></a>E.3.3. Testing Compression Performance</h4>
+<h4 id="_testing_compression_performance"><a class="anchor" href="#_testing_compression_performance"></a>D.3.3. Testing Compression Performance</h4>
 <div class="paragraph">
 <p>HBase includes a tool called LoadTestTool which provides mechanisms to test your compression performance.
 You must specify either <code>-write</code> or <code>-update-read</code> as your first parameter, and if you do not specify another parameter, usage advice is printed for each option.</p>
@@ -38272,7 +38026,7 @@ Options:
 </div>
 </div>
 <div class="sect2">
-<h3 id="data.block.encoding.enable"><a class="anchor" href="#data.block.encoding.enable"></a>E.4. Enable Data Block Encoding</h3>
+<h3 id="data.block.encoding.enable"><a class="anchor" href="#data.block.encoding.enable"></a>D.4. Enable Data Block Encoding</h3>
 <div class="paragraph">
 <p>Codecs are built into HBase so no extra configuration is needed.
 Codecs are enabled on a table by setting the <code>DATA_BLOCK_ENCODING</code> property.
@@ -38311,19 +38065,19 @@ DESCRIPTION                                          ENABLED
 </div>
 </div>
 <div class="sect1">
-<h2 id="sql"><a class="anchor" href="#sql"></a>Appendix F: SQL over HBase</h2>
+<h2 id="sql"><a class="anchor" href="#sql"></a>Appendix E: SQL over HBase</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The following projects offer some support for SQL over HBase.</p>
 </div>
 <div class="sect2">
-<h3 id="phoenix"><a class="anchor" href="#phoenix"></a>F.1. Apache Phoenix</h3>
+<h3 id="phoenix"><a class="anchor" href="#phoenix"></a>E.1. Apache Phoenix</h3>
 <div class="paragraph">
 <p><a href="https://phoenix.apache.org">Apache Phoenix</a></p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_trafodion"><a class="anchor" href="#_trafodion"></a>F.2. Trafodion</h3>
+<h3 id="_trafodion"><a class="anchor" href="#_trafodion"></a>E.2. Trafodion</h3>
 <div class="paragraph">
 <p><a href="https://trafodion.incubator.apache.org/">Trafodion: Transactional SQL-on-HBase</a></p>
 </div>
@@ -38331,7 +38085,7 @@ DESCRIPTION                                          ENABLED
 </div>
 </div>
 <div class="sect1">
-<h2 id="ycsb"><a class="anchor" href="#ycsb"></a>Appendix G: YCSB</h2>
+<h2 id="ycsb"><a class="anchor" href="#ycsb"></a>Appendix F: YCSB</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p><a href="https://github.com/brianfrankcooper/YCSB/">YCSB: The
@@ -38352,18 +38106,18 @@ See <a href="https://github.com/tdunning/YCSB">Ted Dunning&#8217;s YCSB</a>.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_hfile_format_2"><a class="anchor" href="#_hfile_format_2"></a>Appendix H: HFile format</h2>
+<h2 id="_hfile_format_2"><a class="anchor" href="#_hfile_format_2"></a>Appendix G: HFile format</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This appendix describes the evolution of the HFile format.</p>
 </div>
 <div class="sect2">
-<h3 id="hfilev1"><a class="anchor" href="#hfilev1"></a>H.1. HBase File Format (version 1)</h3>
+<h3 id="hfilev1"><a class="anchor" href="#hfilev1"></a>G.1. HBase File Format (version 1)</h3>
 <div class="paragraph">
 <p>As we will be discussing changes to the HFile format, it is useful to give a short overview of the original (HFile version 1) format.</p>
 </div>
 <div class="sect3">
-<h4 id="hfilev1.overview"><a class="anchor" href="#hfilev1.overview"></a>H.1.1. Overview of Version 1</h4>
+<h4 id="hfilev1.overview"><a class="anchor" href="#hfilev1.overview"></a>G.1.1. Overview of Version 1</h4>
 <div class="paragraph">
 <p>An HFile in version 1 format is structured as follows:</p>
 </div>
@@ -38375,7 +38129,7 @@ See <a href="https://github.com/tdunning/YCSB">Ted Dunning&#8217;s YCSB</a>.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_block_index_format_in_version_1"><a class="anchor" href="#_block_index_format_in_version_1"></a>H.1.2. Block index format in version 1</h4>
+<h4 id="_block_index_format_in_version_1"><a class="anchor" href="#_block_index_format_in_version_1"></a>G.1.2. Block index format in version 1</h4>
 <div class="paragraph">
 <p>The block index in version 1 is very straightforward.
 For each entry, it contains:</p>
@@ -38412,12 +38166,12 @@ We fix this limitation in version 2, where we store on-disk block size instead o
 </div>
 </div>
 <div class="sect2">
-<h3 id="hfilev2"><a class="anchor" href="#hfilev2"></a>H.2. HBase file format with inline blocks (version 2)</h3>
+<h3 id="hfilev2"><a class="anchor" href="#hfilev2"></a>G.2. HBase file format with inline blocks (version 2)</h3>
 <div class="paragraph">
 <p>Note:  this feature was introduced in HBase 0.92</p>
 </div>
 <div class="sect3">
-<h4 id="_motivation"><a class="anchor" href="#_motivation"></a>H.2.1. Motivation</h4>
+<h4 id="_motivation"><a class="anchor" href="#_motivation"></a>G.2.1. Motivation</h4>
 <div class="paragraph">
 <p>We found it necessary to revise the HFile format after encountering high memory usage and slow startup times caused by large Bloom filters and block indexes in the region server.
 Bloom filters can get as large as 100 MB per HFile, which adds up to 2 GB when aggregated over 20 regions.
@@ -38443,7 +38197,7 @@ In version 2, we seek once to read the trailer and seek again to read everything
 </div>
 </div>
 <div class="sect3">
-<h4 id="hfilev2.overview"><a class="anchor" href="#hfilev2.overview"></a>H.2.2. Overview of Version 2</h4>
+<h4 id="hfilev2.overview"><a class="anchor" href="#hfilev2.overview"></a>G.2.2. Overview of Version 2</h4>
 <div class="paragraph">
 <p>The version of HBase introducing the above features reads both version 1 and 2 HFiles, but only writes version 2 HFiles.
 A version 2 HFile is structured as follows:</p>
@@ -38456,7 +38210,7 @@ A version 2 HFile is structured as follows:</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_unified_version_2_block_format"><a class="anchor" href="#_unified_version_2_block_format"></a>H.2.3. Unified version 2 block format</h4>
+<h4 id="_unified_version_2_block_format"><a class="anchor" href="#_unified_version_2_block_format"></a>G.2.3. Unified version 2 block format</h4>
 <div class="paragraph">
 <p>In the version 2 every block in the data section contains the following fields:</p>
 </div>
@@ -38545,7 +38299,7 @@ This section contains "meta" blocks and intermediate-level index blocks.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_block_index_in_version_2"><a class="anchor" href="#_block_index_in_version_2"></a>H.2.4. Block index in version 2</h4>
+<h4 id="_block_index_in_version_2"><a class="anchor" href="#_block_index_in_version_2"></a>G.2.4. Block index in version 2</h4>
 <div class="paragraph">
 <p>There are three types of block indexes in HFile version 2, stored in two different formats (root and non-root):</p>
 </div>
@@ -38577,7 +38331,7 @@ This section contains "meta" blocks and intermediate-level index blocks.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_root_block_index_format_in_version_2"><a class="anchor" href="#_root_block_index_format_in_version_2"></a>H.2.5. Root block index format in version 2</h4>
+<h4 id="_root_block_index_format_in_version_2"><a class="anchor" href="#_root_block_index_format_in_version_2"></a>G.2.5. Root block index format in version 2</h4>
 <div class="paragraph">
 <p>This format applies to:</p>
 </div>
@@ -38648,7 +38402,7 @@ When reading the HFile and the mid-key is requested, we retrieve the middle leaf
 </div>
 </div>
 <div class="sect3">
-<h4 id="_non_root_block_index_format_in_version_2"><a class="anchor" href="#_non_root_block_index_format_in_version_2"></a>H.2.6. Non-root block index format in version 2</h4>
+<h4 id="_non_root_block_index_format_in_version_2"><a class="anchor" href="#_non_root_block_index_format_in_version_2"></a>G.2.6. Non-root block index format in version 2</h4>
 <div class="paragraph">
 <p>This format applies to intermediate-level and leaf index blocks of a version 2 multi-level data block index.
 Every non-root index block is structured as follows.</p>
@@ -38683,7 +38437,7 @@ The length can be calculated from entryOffsets.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_bloom_filters_in_version_2"><a class="anchor" href="#_bloom_filters_in_version_2"></a>H.2.7. Bloom filters in version 2</h4>
+<h4 id="_bloom_filters_in_version_2"><a class="anchor" href="#_bloom_filters_in_version_2"></a>G.2.7. Bloom filters in version 2</h4>
 <div class="paragraph">
 <p>In contrast with version 1, in a version 2 HFile Bloom filter metadata is stored in the load-on-open section of the HFile for quick startup.</p>
 </div>
@@ -38723,7 +38477,7 @@ The length can be calculated from entryOffsets.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_file_info_format_in_versions_1_and_2"><a class="anchor" href="#_file_info_format_in_versions_1_and_2"></a>H.2.8. File Info format in versions 1 and 2</h4>
+<h4 id="_file_info_format_in_versions_1_and_2"><a class="anchor" href="#_file_info_format_in_versions_1_and_2"></a>G.2.8. File Info format in versions 1 and 2</h4>
 <div class="paragraph">
 <p>The file info block is a serialized map from byte arrays to byte arrays, with the following keys, among others.
 StoreFile-level logic adds more keys to this.</p>
@@ -38760,7 +38514,7 @@ This is because we need to know the comparator at the time of parsing the load-o
 </div>
 </div>
 <div class="sect3">
-<h4 id="_fixed_file_trailer_format_differences_between_versions_1_and_2"><a class="anchor" href="#_fixed_file_trailer_format_differences_between_versions_1_and_2"></a>H.2.9. Fixed file trailer format differences between versions 1 and 2</h4>
+<h4 id="_fixed_file_trailer_format_differences_between_versions_1_and_2"><a class="anchor" href="#_fixed_file_trailer_format_differences_between_versions_1_and_2"></a>G.2.9. Fixed file trailer format differences between versions 1 and 2</h4>
 <div class="paragraph">
 <p>The following table shows common and different fields between fixed file trailers in versions 1 and 2.
 Note that the size of the trailer is different depending on the version, so it is ``fixed'' only within one version.
@@ -38829,7 +38583,7 @@ However, the version is always stored as the last four-byte integer in the file.
 </table>
 </div>
 <div class="sect3">
-<h4 id="_getshortmidpointkey_an_optimization_for_data_index_block"><a class="anchor" href="#_getshortmidpointkey_an_optimization_for_data_index_block"></a>H.2.10. getShortMidpointKey(an optimization for data index block)</h4>
+<h4 id="_getshortmidpointkey_an_optimization_for_data_index_block"><a class="anchor" href="#_getshortmidpointkey_an_optimization_for_data_index_block"></a>G.2.10. getShortMidpointKey(an optimization for data index block)</h4>
 <div class="paragraph">
 <p>Note: this optimization was introduced in HBase 0.95+</p>
 </div>
@@ -38863,18 +38617,18 @@ For example, if the stop key of previous block is "the quick brown fox", the sta
 </div>
 </div>
 <div class="sect2">
-<h3 id="hfilev3"><a class="anchor" href="#hfilev3"></a>H.3. HBase File Format with Security Enhancements (version 3)</h3>
+<h3 id="hfilev3"><a class="anchor" href="#hfilev3"></a>G.3. HBase File Format with Security Enhancements (version 3)</h3>
 <div class="paragraph">
 <p>Note: this feature was introduced in HBase 0.98</p>
 </div>
 <div class="sect3">
-<h4 id="hfilev3.motivation"><a class="anchor" href="#hfilev3.motivation"></a>H.3.1. Motivation</h4>
+<h4 id="hfilev3.motivation"><a class="anchor" href="#hfilev3.motivation"></a>G.3.1. Motivation</h4>
 <div class="paragraph">
 <p>Version 3 of HFile makes changes needed to ease management of encryption at rest and cell-level metadata (which in turn is needed for cell-level ACLs and cell-level visibility labels). For more information see <a href="#hbase.encryption.server">hbase.encryption.server</a>, <a href="#hbase.tags">hbase.tags</a>, <a href="#hbase.accesscontrol.configuration">hbase.accesscontrol.configuration</a>, and <a href="#hbase.visibility.labels">hbase.visibility.labels</a>.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="hfilev3.overview"><a class="anchor" href="#hfilev3.overview"></a>H.3.2. Overview</h4>
+<h4 id="hfilev3.overview"><a class="anchor" href="#hfilev3.overview"></a>G.3.2. Overview</h4>
 <div class="paragraph">
 <p>The version of HBase introducing the above features reads HFiles in versions 1, 2, and 3 but only writes version 3 HFiles.
 Version 3 HFiles are structured the same as version 2 HFiles.
@@ -38882,7 +38636,7 @@ For more information see <a href="#hfilev2.overview">hfilev2.overview</a>.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="hvilev3.infoblock"><a class="anchor" href="#hvilev3.infoblock"></a>H.3.3. File Info Block in Version 3</h4>
+<h4 id="hvilev3.infoblock"><a class="anchor" href="#hvilev3.infoblock"></a>G.3.3. File Info Block in Version 3</h4>
 <div class="paragraph">
 <p>Version 3 added two additional pieces of information to the reserved keys in the file info block.</p>
 </div>
@@ -38917,7 +38671,7 @@ Therefore, consumers must read the file&#8217;s info block prior to reading any
 </div>
 </div>
 <div class="sect3">
-<h4 id="hfilev3.datablock"><a class="anchor" href="#hfilev3.datablock"></a>H.3.4. Data Blocks in Version 3</h4>
+<h4 id="hfilev3.datablock"><a class="anchor" href="#hfilev3.datablock"></a>G.3.4. Data Blocks in Version 3</h4>
 <div class="paragraph">
 <p>Within an HFile, HBase cells are stored in data blocks as a sequence of KeyValues (see <a href="#hfilev1.overview">hfilev1.overview</a>, or <a href="http://www.larsgeorge.com/2009/10/hbase-architecture-101-storage.html">Lars George&#8217;s
         excellent introduction to HBase Storage</a>). In version 3, these KeyValue optionally will include a set of 0 or more tags:</p>
@@ -38964,7 +38718,7 @@ It also implies that prior to writing a data block you must know if the file&#82
 </div>
 </div>
 <div class="sect3">
-<h4 id="hfilev3.fixedtrailer"><a class="anchor" href="#hfilev3.fixedtrailer"></a>H.3.5. Fixed File Trailer in Version 3</h4>
+<h4 id="hfilev3.fixedtrailer"><a class="anchor" href="#hfilev3.fixedtrailer"></a>G.3.5. Fixed File Trailer in Version 3</h4>
 <div class="paragraph">
 <p>The fixed file trailers written with HFile version 3 are always serialized with protocol buffers.
 Additionally, it adds an optional field to the version 2 protocol buffer named encryption_key.
@@ -38976,10 +38730,10 @@ For more information see <a href="#hbase.encryption.server">hbase.encryption.ser
 </div>
 </div>
 <div class="sect1">
-<h2 id="other.info"><a class="anchor" href="#other.info"></a>Appendix I: Other Information About HBase</h2>
+<h2 id="other.info"><a class="anchor" href="#other.info"></a>Appendix H: Other Information About HBase</h2>
 <div class="sectionbody">
 <div class="sect2">
-<h3 id="other.info.videos"><a class="anchor" href="#other.info.videos"></a>I.1. HBase Videos</h3>
+<h3 id="other.info.videos"><a class="anchor" href="#other.info.videos"></a>H.1. HBase Videos</h3>
 <div class="ulist">
 <div class="title">Introduction to HBase</div>
 <ul>
@@ -38996,7 +38750,7 @@ For more information see <a href="#hbase.encryption.server">hbase.encryption.ser
 </div>
 </div>
 <div class="sect2">
-<h3 id="other.info.pres"><a class="anchor" href="#other.info.pres"></a>I.2. HBase Presentations (Slides)</h3>
+<h3 id="other.info.pres"><a class="anchor" href="#other.info.pres"></a>H.2. HBase Presentations (Slides)</h3>
 <div class="paragraph">
 <p><a href="https://www.slideshare.net/cloudera/hadoop-world-2011-advanced-hbase-schema-design-lars-george-cloudera">Advanced HBase Schema Design</a> by Lars George (Hadoop World 2011).</p>
 </div>
@@ -39008,7 +38762,7 @@ For more information see <a href="#hbase.encryption.server">hbase.encryption.ser
 </div>
 </div>
 <div class="sect2">
-<h3 id="other.info.papers"><a class="anchor" href="#other.info.papers"></a>I.3. HBase Papers</h3>
+<h3 id="other.info.papers"><a class="anchor" href="#other.info.papers"></a>H.3. HBase Papers</h3>
 <div class="paragraph">
 <p><a href="http://research.google.com/archive/bigtable.html">BigTable</a> by Google (2006).</p>
 </div>
@@ -39020,7 +38774,7 @@ For more information see <a href="#hbase.encryption.server">hbase.encryption.ser
 </div>
 </div>
 <div class="sect2">
-<h3 id="other.info.sites"><a class="anchor" href="#other.info.sites"></a>I.4. HBase Sites</h3>
+<h3 id="other.info.sites"><a class="anchor" href="#other.info.sites"></a>H.4. HBase Sites</h3>
 <div class="paragraph">
 <p><a href="https://blog.cloudera.com/blog/category/hbase/">Cloudera&#8217;s HBase Blog</a> has a lot of links to useful HBase information.</p>
 </div>
@@ -39032,13 +38786,13 @@ For more information see <a href="#hbase.encryption.server">hbase.encryption.ser
 </div>
 </div>
 <div class="sect2">
-<h3 id="other.info.books"><a class="anchor" href="#other.info.books"></a>I.5. HBase Books</h3>
+<h3 id="other.info.books"><a class="anchor" href="#other.info.books"></a>H.5. HBase Books</h3>
 <div class="paragraph">
 <p><a href="http://shop.oreilly.com/product/0636920014348.do">HBase:  The Definitive Guide</a> by Lars George.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="other.info.books.hadoop"><a class="anchor" href="#other.info.books.hadoop"></a>I.6. Hadoop Books</h3>
+<h3 id="other.info.books.hadoop"><a class="anchor" href="#other.info.books.hadoop"></a>H.6. Hadoop Books</h3>
 <div class="paragraph">
 <p><a href="http://shop.oreilly.com/product/9780596521981.do">Hadoop:  The Definitive Guide</a> by Tom White.</p>
 </div>
@@ -39046,7 +38800,7 @@ For more information see <a href="#hbase.encryption.server">hbase.encryption.ser
 </div>
 </div>
 <div class="sect1">
-<h2 id="hbase.history"><a class="anchor" href="#hbase.history"></a>Appendix J: HBase History</h2>
+<h2 id="hbase.history"><a class="anchor" href="#hbase.history"></a>Appendix I: HBase History</h2>
 <div class="sectionbody">
 <div class="ulist">
 <ul>
@@ -39067,19 +38821,19 @@ For more information see <a href="#hbase.encryption.server">hbase.encryption.ser
 </div>
 </div>
 <div class="sect1">
-<h2 id="asf"><a class="anchor" href="#asf"></a>Appendix K: HBase and the Apache Software Foundation</h2>
+<h2 id="asf"><a class="anchor" href="#asf"></a>Appendix J: HBase and the Apache Software Foundation</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>HBase is a project in the Apache Software Foundation and as such there are responsibilities to the ASF to ensure a healthy project.</p>
 </div>
 <div class="sect2">
-<h3 id="asf.devprocess"><a class="anchor" href="#asf.devprocess"></a>K.1. ASF Development Process</h3>
+<h3 id="asf.devprocess"><a class="anchor" href="#asf.devprocess"></a>J.1. ASF Development Process</h3>
 <div class="paragraph">
 <p>See the <a href="https://www.apache.org/dev/#committers">Apache Development Process page</a>            for all sorts of information on how the ASF is structured (e.g., PMC, committers, contributors), to tips on contributing and getting involved, and how open-source works at ASF.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="asf.reporting"><a class="anchor" href="#asf.reporting"></a>K.2. ASF Board Reporting</h3>
+<h3 id="asf.reporting"><a class="anchor" href="#asf.reporting"></a>J.2. ASF Board Reporting</h3>
 <div class="paragraph">
 <p>Once a quarter, each project in the ASF portfolio submits a report to the ASF board.
 This is done by the HBase project lead and the committers.
@@ -39089,7 +38843,7 @@ See <a href="https://www.apache.org/foundation/board/reporting">ASF board report
 </div>
 </div>
 <div class="sect1">
-<h2 id="orca"><a class="anchor" href="#orca"></a>Appendix L: Apache HBase Orca</h2>
+<h2 id="orca"><a class="anchor" href="#orca"></a>Appendix K: Apache HBase Orca</h2>
 <div class="sectionbody">
 <div class="imageblock">
 <div class="content">
@@ -39111,7 +38865,7 @@ See <a href="https://creativecommons.org/licenses/by/3.0/us/" class="bare">https
 </div>
 </div>
 <div class="sect1">
-<h2 id="tracing"><a class="anchor" href="#tracing"></a>Appendix M: Enabling Dapper-like Tracing in HBase</h2>
+<h2 id="tracing"><a class="anchor" href="#tracing"></a>Appendix L: Enabling Dapper-like Tracing in HBase</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>HBase includes facilities for tracing requests using the open source tracing library, <a href="https://htrace.incubator.apache.org/">Apache HTrace</a>.
@@ -39121,7 +38875,7 @@ Setting up tracing is quite simple, however it currently requires some very mino
 <p>Support for this feature using HTrace 3 in HBase was added in <a href="https://issues.apache.org/jira/browse/HBASE-6449">HBASE-6449</a>. Starting with HBase 2.0, there was a non-compatible update to HTrace 4 via <a href="https://issues.apache.org/jira/browse/HBASE-18601">HBASE-18601</a>. The examples provided in this section will be using HTrace 4 package names, syntax, and conventions. For older examples, please consult previous versions of this guide.</p>
 </div>
 <div class="sect2">
-<h3 id="tracing.spanreceivers"><a class="anchor" href="#tracing.spanreceivers"></a>M.1. SpanReceivers</h3>
+<h3 id="tracing.spanreceivers"><a class="anchor" href="#tracing.spanreceivers"></a>L.1. SpanReceivers</h3>
 <div class="paragraph">
 <p>The tracing system works by collecting information in structures called 'Spans'. It is up to you to choose how you want to receive this information by implementing the <code>SpanReceiver</code> interface, which defines one method:</p>
 </div>
@@ -39277,7 +39031,7 @@ hbase(main):<span class="octal">004</span>:<span class="integer">0</span>&gt; tr
 </div>
 </div>
 <div class="sect1">
-<h2 id="hbase.rpc"><a class="anchor" href="#hbase.rpc"></a>Appendix N: 0.95 RPC Specification</h2>
+<h2 id="hbase.rpc"><a class="anchor" href="#hbase.rpc"></a>Appendix M: 0.95 RPC Specification</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>In 0.95, all client/server communication is done with <a href="https://developers.google.com/protocol-buffers/">protobuf&#8217;ed</a> Messages rather than with <a href="https://hadoop.apache.org/docs/current/api/org/apache/hadoop/io/Writable.html">Hadoop
@@ -39292,7 +39046,7 @@ For more background on how we arrived at this spec., see <a href="https://docs.g
             RPC: WIP</a></p>
 </div>
 <div class="sect2">
-<h3 id="_goals"><a class="anchor" href="#_goals"></a>N.1. Goals</h3>
+<h3 id="_goals"><a class="anchor" href="#_goals"></a>M.1. Goals</h3>
 <div class="olist arabic">
 <ol class="arabic">
 <li>
@@ -39305,7 +39059,7 @@ For more background on how we arrived at this spec., see <a href="https://docs.g
 </div>
 </div>
 <div class="sect2">
-<h3 id="_todo"><a class="anchor" href="#_todo"></a>N.2. TODO</h3>
+<h3 id="_todo"><a class="anchor" href="#_todo"></a>M.2. TODO</h3>
 <div class="olist arabic">
 <ol class="arabic">
 <li>
@@ -39324,7 +39078,7 @@ Also, a little state machine on client/server interactions would help with under
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rpc"><a class="anchor" href="#_rpc"></a>N.3. RPC</h3>
+<h3 id="_rpc"><a class="anchor" href="#_rpc"></a>M.3. RPC</h3>
 <div class="paragraph">
 <p>The client will send setup information on connection establish.
 Thereafter, the client invokes methods against the remote server sending a protobuf Message and receiving a protobuf Message in response.
@@ -39338,7 +39092,7 @@ Optionally, Cells(KeyValues) can be passed outside of protobufs in follow-behind
 <a href="https://git-wip-us.apache.org/repos/asf?p=hbase.git;a=blob;f=hbase-protocol/src/main/protobuf/RPC.proto;hb=HEAD">RPC.proto</a>            file in master.</p>
 </div>
 <div class="sect3">
-<h4 id="_connection_setup"><a class="anchor" href="#_connection_setup"></a>N.3.1. Connection Setup</h4>
+<h4 id="_connection_setup"><a class="anchor" href="#_connection_setup"></a>M.3.1. Connection Setup</h4>
 <div class="paragraph">
 <p>Client initiates connection.</p>
 </div>
@@ -39382,7 +39136,7 @@ the protobuf&#8217;d Message that comes after the connection preamble&#8201;&#82
 </div>
 </div>
 <div class="sect3">
-<h4 id="_request"><a class="anchor" href="#_request"></a>N.3.2. Request</h4>
+<h4 id="_request"><a class="anchor" href="#_request"></a>M.3.2. Request</h4>
 <div class="paragraph">
 <p>After a Connection has been set up, client makes requests.
 Server responds.</p>
@@ -39418,7 +39172,7 @@ Data is protobuf&#8217;d inline in this pb Message or optionally comes in the fo
 </div>
 </div>
 <div class="sect3">
-<h4 id="_response"><a class="anchor" href="#_response"></a>N.3.3. Response</h4>
+<h4 id="_response"><a class="anchor" href="#_response"></a>M.3.3. Response</h4>
 <div class="paragraph">
 <p>Same as Request, it is a protobuf ResponseHeader followed by a protobuf Message response where the Message response type suits the method invoked.
 Bulk of the data may come in a following CellBlock.</p>
@@ -39447,7 +39201,7 @@ If the method being invoked is getRegionInfo, if you study the Service descripto
 </div>
 </div>
 <div class="sect3">
-<h4 id="_exceptions"><a class="anchor" href="#_exceptions"></a>N.3.4. Exceptions</h4>
+<h4 id="_exceptions"><a class="anchor" href="#_exceptions"></a>M.3.4. Exceptions</h4>
 <div class="paragraph">
 <p>There are two distinct types.
 There is the request failed which is encapsulated inside the response header for the response.
@@ -39461,7 +39215,7 @@ It has a flag to indicate do-no-retry as well as other miscellaneous payload to
 </div>
 </div>
 <div class="sect3">
-<h4 id="_cellblocks"><a class="anchor" href="#_cellblocks"></a>N.3.5. CellBlocks</h4>
+<h4 id="_cellblocks"><a class="anchor" href="#_cellblocks"></a>M.3.5. CellBlocks</h4>
 <div class="paragraph">
 <p>These are not versioned.
 Server can do the codec or it cannot.
@@ -39471,7 +39225,7 @@ Codecs will live on the server for all time so old clients can connect.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_notes"><a class="anchor" href="#_notes"></a>N.4. Notes</h3>
+<h3 id="_notes"><a class="anchor" href="#_notes"></a>M.4. Notes</h3>
 <div class="paragraph">
 <div class="title">Constraints</div>
 <p>In some part, current wire-format&#8201;&#8212;&#8201;i.e.
@@ -39501,7 +39255,7 @@ As is, we read header+param in one go as server is currently implemented so this
 If later, fat request has clear advantage, can roll out a v2 later.</p>
 </div>
 <div class="sect3">
-<h4 id="rpc.configs"><a class="anchor" href="#rpc.configs"></a>N.4.1. RPC Configurations</h4>
+<h4 id="rpc.configs"><a class="anchor" href="#rpc.configs"></a>M.4.1. RPC Configurations</h4>
 <div class="paragraph">
 <div class="title">CellBlock Codecs</div>
 <p>To enable a codec other than the default <code>KeyValueCodec</code>, set <code>hbase.client.rpc.codec</code> to the name of the Codec class to use.
@@ -39532,7 +39286,7 @@ The server will return cellblocks compressed using this same compressor as long
 </div>
 </div>
 <div class="sect1">
-<h2 id="_known_incompatibilities_among_hbase_versions"><a class="anchor" href="#_known_incompatibilities_among_hbase_versions"></a>Appendix O: Known Incompatibilities Among HBase Versions</h2>
+<h2 id="_known_incompatibilities_among_hbase_versions"><a class="anchor" href="#_known_incompatibilities_among_hbase_versions"></a>Appendix N: Known Incompatibilities Among HBase Versions</h2>
 <div class="sectionbody">
 
 </div>
@@ -41324,7 +41078,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-10-25 14:33:44 UTC
+Last updated 2018-10-26 14:33:29 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index 30c284d..d342bf0 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -316,7 +316,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-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 


[36/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/apidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/apidocs/allclasses-frame.html b/apidocs/allclasses-frame.html
index 7876f22..e3b8917 100644
--- a/apidocs/allclasses-frame.html
+++ b/apidocs/allclasses-frame.html
@@ -169,6 +169,7 @@
 <li><a href="org/apache/hadoop/hbase/filter/IncompatibleFilterException.html" title="class in org.apache.hadoop.hbase.filter" target="classFrame">IncompatibleFilterException</a></li>
 <li><a href="org/apache/hadoop/hbase/client/Increment.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">Increment</a></li>
 <li><a href="org/apache/hadoop/hbase/InvalidFamilyOperationException.html" title="class in org.apache.hadoop.hbase" target="classFrame">InvalidFamilyOperationException</a></li>
+<li><a href="org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">InvalidMutationDurabilityException</a></li>
 <li><a href="org/apache/hadoop/hbase/filter/InvalidRowFilterException.html" title="class in org.apache.hadoop.hbase.filter" target="classFrame">InvalidRowFilterException</a></li>
 <li><a href="org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client" target="classFrame">IsolationLevel</a></li>
 <li><a href="org/apache/hadoop/hbase/util/JsonMapper.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">JsonMapper</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/apidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/apidocs/allclasses-noframe.html b/apidocs/allclasses-noframe.html
index a95a4aa..e4a6ee5 100644
--- a/apidocs/allclasses-noframe.html
+++ b/apidocs/allclasses-noframe.html
@@ -169,6 +169,7 @@
 <li><a href="org/apache/hadoop/hbase/filter/IncompatibleFilterException.html" title="class in org.apache.hadoop.hbase.filter">IncompatibleFilterException</a></li>
 <li><a href="org/apache/hadoop/hbase/client/Increment.html" title="class in org.apache.hadoop.hbase.client">Increment</a></li>
 <li><a href="org/apache/hadoop/hbase/InvalidFamilyOperationException.html" title="class in org.apache.hadoop.hbase">InvalidFamilyOperationException</a></li>
+<li><a href="org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver">InvalidMutationDurabilityException</a></li>
 <li><a href="org/apache/hadoop/hbase/filter/InvalidRowFilterException.html" title="class in org.apache.hadoop.hbase.filter">InvalidRowFilterException</a></li>
 <li><a href="org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client">IsolationLevel</a></li>
 <li><a href="org/apache/hadoop/hbase/util/JsonMapper.html" title="class in org.apache.hadoop.hbase.util">JsonMapper</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/apidocs/index-all.html
----------------------------------------------------------------------
diff --git a/apidocs/index-all.html b/apidocs/index-all.html
index 99908ac..3ea1678 100644
--- a/apidocs/index-all.html
+++ b/apidocs/index-all.html
@@ -10675,6 +10675,16 @@
 <dd>
 <div class="block">Constructor taking another exception.</div>
 </dd>
+<dt><a href="org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">InvalidMutationDurabilityException</span></a> - Exception in <a href="org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
+<dd>
+<div class="block">Thrown if Mutation's <a href="org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><code>Durability</code></a> is skip wal but table need replication.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html#InvalidMutationDurabilityException--">InvalidMutationDurabilityException()</a></span> - Constructor for exception org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver">InvalidMutationDurabilityException</a></dt>
+<dd>
+<div class="block">default constructor</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html#InvalidMutationDurabilityException-java.lang.String-">InvalidMutationDurabilityException(String)</a></span> - Constructor for exception org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver">InvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/filter/InvalidRowFilterException.html" title="class in org.apache.hadoop.hbase.filter"><span class="typeNameLink">InvalidRowFilterException</span></a> - Exception in <a href="org/apache/hadoop/hbase/filter/package-summary.html">org.apache.hadoop.hbase.filter</a></dt>
 <dd>
 <div class="block">Used to indicate an invalid RowFilter.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/apidocs/org/apache/hadoop/hbase/DoNotRetryIOException.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/DoNotRetryIOException.html b/apidocs/org/apache/hadoop/hbase/DoNotRetryIOException.html
index e49e2ef..b79748f 100644
--- a/apidocs/org/apache/hadoop/hbase/DoNotRetryIOException.html
+++ b/apidocs/org/apache/hadoop/hbase/DoNotRetryIOException.html
@@ -127,7 +127,7 @@
 </dl>
 <dl>
 <dt>Direct Known Subclasses:</dt>
-<dd><a href="../../../../org/apache/hadoop/hbase/security/AccessDeniedException.html" title="class in org.apache.hadoop.hbase.security">AccessDeniedException</a>, <a href="../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorException.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorException</a>, <a href="../../../../org/apache/hadoop/hbase/client/DoNotRetryRegionException.html" title="class in org.apache.hadoop.hbase.client">DoNotRetryRegionException</a>, <a href="../../../../org/apache/hadoop/hbase/exceptions/FailedSanityCheckException.html" title="class in org.apache.hadoop.hbase.exceptions">FailedSanityCheckException</a>, <a href="../../../../org/apache/hadoop/hbase/ipc/FatalConnectionException.html" title="class in org.apache.hadoop.hbase.ipc">FatalConnectionException</a>, <a href="../../../../org/apache/hadoop/hbase/snapshot/HBaseSnapshotException.html" title="class in org.apache.hadoop.hbase.snapshot">HBaseSnapshotException</a>, <a href="../../../.
 ./org/apache/hadoop/hbase/InvalidFamilyOperationException.html" title="class in org.apache.hadoop.hbase">InvalidFamilyOperationException</a>, <a href="../../../../org/apache/hadoop/hbase/regionserver/LeaseException.html" title="class in org.apache.hadoop.hbase.regionserver">LeaseException</a>, <a href="../../../../org/apache/hadoop/hbase/NamespaceExistException.html" title="class in org.apache.hadoop.hbase">NamespaceExistException</a>, <a href="../../../../org/apache/hadoop/hbase/NamespaceNotFoundException.html" title="class in org.apache.hadoop.hbase">NamespaceNotFoundException</a>, <a href="../../../../org/apache/hadoop/hbase/regionserver/NoSuchColumnFamilyException.html" title="class in org.apache.hadoop.hbase.regionserver">NoSuchColumnFamilyException</a>, <a href="../../../../org/apache/hadoop/hbase/NotAllMetaRegionsOnlineException.html" title="class in org.apache.hadoop.hbase">NotAllMetaRegionsOnlineException</a>, <a href="../../../../org/apache/hadoop/hbase/quotas/QuotaExceede
 dException.html" title="class in org.apache.hadoop.hbase.quotas">QuotaExceededException</a>, <a href="../../../../org/apache/hadoop/hbase/ReplicationPeerNotFoundException.html" title="class in org.apache.hadoop.hbase">ReplicationPeerNotFoundException</a>, <a href="../../../../org/apache/hadoop/hbase/exceptions/RequestTooBigException.html" title="class in org.apache.hadoop.hbase.exceptions">RequestTooBigException</a>, <a href="../../../../org/apache/hadoop/hbase/exceptions/ScannerResetException.html" title="class in org.apache.hadoop.hbase.exceptions">ScannerResetException</a>, <a href="../../../../org/apache/hadoop/hbase/ipc/ServerTooBusyException.html" title="class in org.apache.hadoop.hbase.ipc">ServerTooBusyException</a>, <a href="../../../../org/apache/hadoop/hbase/TableExistsException.html" title="class in org.apache.hadoop.hbase">TableExistsException</a>, <a href="../../../../org/apache/hadoop/hbase/TableNotDisabledException.html" title="class in org.apache.hadoop.hbase">Table
 NotDisabledException</a>, <a href="../../../../org/apache/hadoop/hbase/TableNotEnabledException.html" title="class in org.apache.hadoop.hbase">TableNotEnabledException</a>, <a href="../../../../org/apache/hadoop/hbase/TableNotFoundException.html" title="class in org.apache.hadoop.hbase">TableNotFoundException</a>, <a href="../../../../org/apache/hadoop/hbase/exceptions/UnknownProtocolException.html" title="class in org.apache.hadoop.hbase.exceptions">UnknownProtocolException</a>, <a href="../../../../org/apache/hadoop/hbase/UnknownScannerException.html" title="class in org.apache.hadoop.hbase">UnknownScannerException</a></dd>
+<dd><a href="../../../../org/apache/hadoop/hbase/security/AccessDeniedException.html" title="class in org.apache.hadoop.hbase.security">AccessDeniedException</a>, <a href="../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorException.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorException</a>, <a href="../../../../org/apache/hadoop/hbase/client/DoNotRetryRegionException.html" title="class in org.apache.hadoop.hbase.client">DoNotRetryRegionException</a>, <a href="../../../../org/apache/hadoop/hbase/exceptions/FailedSanityCheckException.html" title="class in org.apache.hadoop.hbase.exceptions">FailedSanityCheckException</a>, <a href="../../../../org/apache/hadoop/hbase/ipc/FatalConnectionException.html" title="class in org.apache.hadoop.hbase.ipc">FatalConnectionException</a>, <a href="../../../../org/apache/hadoop/hbase/snapshot/HBaseSnapshotException.html" title="class in org.apache.hadoop.hbase.snapshot">HBaseSnapshotException</a>, <a href="../../../.
 ./org/apache/hadoop/hbase/InvalidFamilyOperationException.html" title="class in org.apache.hadoop.hbase">InvalidFamilyOperationException</a>, <a href="../../../../org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver">InvalidMutationDurabilityException</a>, <a href="../../../../org/apache/hadoop/hbase/regionserver/LeaseException.html" title="class in org.apache.hadoop.hbase.regionserver">LeaseException</a>, <a href="../../../../org/apache/hadoop/hbase/NamespaceExistException.html" title="class in org.apache.hadoop.hbase">NamespaceExistException</a>, <a href="../../../../org/apache/hadoop/hbase/NamespaceNotFoundException.html" title="class in org.apache.hadoop.hbase">NamespaceNotFoundException</a>, <a href="../../../../org/apache/hadoop/hbase/regionserver/NoSuchColumnFamilyException.html" title="class in org.apache.hadoop.hbase.regionserver">NoSuchColumnFamilyException</a>, <a href="../../../../org/apache/ha
 doop/hbase/NotAllMetaRegionsOnlineException.html" title="class in org.apache.hadoop.hbase">NotAllMetaRegionsOnlineException</a>, <a href="../../../../org/apache/hadoop/hbase/quotas/QuotaExceededException.html" title="class in org.apache.hadoop.hbase.quotas">QuotaExceededException</a>, <a href="../../../../org/apache/hadoop/hbase/ReplicationPeerNotFoundException.html" title="class in org.apache.hadoop.hbase">ReplicationPeerNotFoundException</a>, <a href="../../../../org/apache/hadoop/hbase/exceptions/RequestTooBigException.html" title="class in org.apache.hadoop.hbase.exceptions">RequestTooBigException</a>, <a href="../../../../org/apache/hadoop/hbase/exceptions/ScannerResetException.html" title="class in org.apache.hadoop.hbase.exceptions">ScannerResetException</a>, <a href="../../../../org/apache/hadoop/hbase/ipc/ServerTooBusyException.html" title="class in org.apache.hadoop.hbase.ipc">ServerTooBusyException</a>, <a href="../../../../org/apache/hadoop/hbase/TableExistsException.htm
 l" title="class in org.apache.hadoop.hbase">TableExistsException</a>, <a href="../../../../org/apache/hadoop/hbase/TableNotDisabledException.html" title="class in org.apache.hadoop.hbase">TableNotDisabledException</a>, <a href="../../../../org/apache/hadoop/hbase/TableNotEnabledException.html" title="class in org.apache.hadoop.hbase">TableNotEnabledException</a>, <a href="../../../../org/apache/hadoop/hbase/TableNotFoundException.html" title="class in org.apache.hadoop.hbase">TableNotFoundException</a>, <a href="../../../../org/apache/hadoop/hbase/exceptions/UnknownProtocolException.html" title="class in org.apache.hadoop.hbase.exceptions">UnknownProtocolException</a>, <a href="../../../../org/apache/hadoop/hbase/UnknownScannerException.html" title="class in org.apache.hadoop.hbase">UnknownScannerException</a></dd>
 </dl>
 <hr>
 <br>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/apidocs/org/apache/hadoop/hbase/class-use/DoNotRetryIOException.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/class-use/DoNotRetryIOException.html b/apidocs/org/apache/hadoop/hbase/class-use/DoNotRetryIOException.html
index 0a58d3f..fb61393 100644
--- a/apidocs/org/apache/hadoop/hbase/class-use/DoNotRetryIOException.html
+++ b/apidocs/org/apache/hadoop/hbase/class-use/DoNotRetryIOException.html
@@ -402,11 +402,17 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver">InvalidMutationDurabilityException</a></span></code>
+<div class="block">Thrown if Mutation's <a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><code>Durability</code></a> is skip wal but table need replication.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/LeaseException.html" title="class in org.apache.hadoop.hbase.regionserver">LeaseException</a></span></code>
 <div class="block">Reports a problem with a lease</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>class&nbsp;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/NoSuchColumnFamilyException.html" title="class in org.apache.hadoop.hbase.regionserver">NoSuchColumnFamilyException</a></span></code>
 <div class="block">Thrown if request for nonexistent column family.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/apidocs/org/apache/hadoop/hbase/class-use/HBaseIOException.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/class-use/HBaseIOException.html b/apidocs/org/apache/hadoop/hbase/class-use/HBaseIOException.html
index fcee48a..28fba68 100644
--- a/apidocs/org/apache/hadoop/hbase/class-use/HBaseIOException.html
+++ b/apidocs/org/apache/hadoop/hbase/class-use/HBaseIOException.html
@@ -496,11 +496,17 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver">InvalidMutationDurabilityException</a></span></code>
+<div class="block">Thrown if Mutation's <a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><code>Durability</code></a> is skip wal but table need replication.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/LeaseException.html" title="class in org.apache.hadoop.hbase.regionserver">LeaseException</a></span></code>
 <div class="block">Reports a problem with a lease</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>class&nbsp;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/NoSuchColumnFamilyException.html" title="class in org.apache.hadoop.hbase.regionserver">NoSuchColumnFamilyException</a></span></code>
 <div class="block">Thrown if request for nonexistent column family.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/apidocs/org/apache/hadoop/hbase/regionserver/BloomType.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/regionserver/BloomType.html b/apidocs/org/apache/hadoop/hbase/regionserver/BloomType.html
index 6bba8fe..25f1aef 100644
--- a/apidocs/org/apache/hadoop/hbase/regionserver/BloomType.html
+++ b/apidocs/org/apache/hadoop/hbase/regionserver/BloomType.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li>Prev&nbsp;Class</li>
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/LeaseException.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/InvalidMutationDurabilityException.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/BloomType.html" target="_top">Frames</a></li>
@@ -349,7 +349,7 @@ not permitted.)</div>
 <div class="subNav">
 <ul class="navList">
 <li>Prev&nbsp;Class</li>
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/LeaseException.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/InvalidMutationDurabilityException.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/BloomType.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/apidocs/org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html b/apidocs/org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html
new file mode 100644
index 0000000..28b8400
--- /dev/null
+++ b/apidocs/org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html
@@ -0,0 +1,299 @@
+<!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>InvalidMutationDurabilityException (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="InvalidMutationDurabilityException (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/InvalidMutationDurabilityException.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/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/LeaseException.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/InvalidMutationDurabilityException.html" target="_top">Frames</a></li>
+<li><a href="InvalidMutationDurabilityException.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#methods.inherited.from.class.java.lang.Throwable">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li>Method</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 InvalidMutationDurabilityException" class="title">Class InvalidMutationDurabilityException</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">java.lang.Throwable</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">java.lang.Exception</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">java.io.IOException</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="../../../../../org/apache/hadoop/hbase/HBaseIOException.html" title="class in org.apache.hadoop.hbase">org.apache.hadoop.hbase.HBaseIOException</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="../../../../../org/apache/hadoop/hbase/DoNotRetryIOException.html" title="class in org.apache.hadoop.hbase">org.apache.hadoop.hbase.DoNotRetryIOException</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.regionserver.InvalidMutationDurabilityException</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><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></dd>
+</dl>
+<hr>
+<br>
+<pre>@InterfaceAudience.Public
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html#line.29">InvalidMutationDurabilityException</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/DoNotRetryIOException.html" title="class in org.apache.hadoop.hbase">DoNotRetryIOException</a></pre>
+<div class="block">Thrown if Mutation's <a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><code>Durability</code></a> is skip wal but table need replication.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../serialized-form.html#org.apache.hadoop.hbase.regionserver.InvalidMutationDurabilityException">Serialized Form</a></dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== 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/InvalidMutationDurabilityException.html#InvalidMutationDurabilityException--">InvalidMutationDurabilityException</a></span>()</code>
+<div class="block">default constructor</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html#InvalidMutationDurabilityException-java.lang.String-">InvalidMutationDurabilityException</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;message)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Throwable">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<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></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#addSuppressed-java.lang.Throwable-" title="class or interface in java.lang">addSuppressed</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#fillInStackTrace--" title="class or interface in java.lang">fillInStackTrace</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getCause--" title="class or interface in java.lang">getCause</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getLocalizedMessage--" title="class or interface in java.lang">getLocalizedMessage</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getMessage--" title="class or interface in java.lang">getMessage</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getStackTrace--" title="class or
  interface in java.lang">getStackTrace</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getSuppressed--" title="class or interface in java.lang">getSuppressed</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#initCause-java.lang.Throwable-" title="class or interface in java.lang">initCause</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace--" title="class or interface in java.lang">printStackTrace</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintStream-" title="class or interface in java.lang">printStackTrace</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintWriter-" title="class or interface in java.lang">printStackTrace</a>, <a href="https://docs.oracle.com/javase/8/docs/
 api/java/lang/Throwable.html?is-external=true#setStackTrace-java.lang.StackTraceElement:A-" title="class or interface in java.lang">setStackTrace</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#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">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="InvalidMutationDurabilityException--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>InvalidMutationDurabilityException</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html#line.34">InvalidMutationDurabilityException</a>()</pre>
+<div class="block">default constructor</div>
+</li>
+</ul>
+<a name="InvalidMutationDurabilityException-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>InvalidMutationDurabilityException</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html#line.41">InvalidMutationDurabilityException</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;message)</pre>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>message</code> - exception message</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/InvalidMutationDurabilityException.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/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/LeaseException.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/InvalidMutationDurabilityException.html" target="_top">Frames</a></li>
+<li><a href="InvalidMutationDurabilityException.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#methods.inherited.from.class.java.lang.Throwable">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li>Method</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/fa850293/apidocs/org/apache/hadoop/hbase/regionserver/LeaseException.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/regionserver/LeaseException.html b/apidocs/org/apache/hadoop/hbase/regionserver/LeaseException.html
index 67228a9..1f7dab6 100644
--- a/apidocs/org/apache/hadoop/hbase/regionserver/LeaseException.html
+++ b/apidocs/org/apache/hadoop/hbase/regionserver/LeaseException.html
@@ -43,7 +43,7 @@
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.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/NoSuchColumnFamilyException.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -253,7 +253,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/DoNotRetryIOException.ht
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.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/NoSuchColumnFamilyException.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/fa850293/apidocs/org/apache/hadoop/hbase/regionserver/class-use/InvalidMutationDurabilityException.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/regionserver/class-use/InvalidMutationDurabilityException.html b/apidocs/org/apache/hadoop/hbase/regionserver/class-use/InvalidMutationDurabilityException.html
new file mode 100644
index 0000000..0dee6db
--- /dev/null
+++ b/apidocs/org/apache/hadoop/hbase/regionserver/class-use/InvalidMutationDurabilityException.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.InvalidMutationDurabilityException (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.regionserver.InvalidMutationDurabilityException (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver">Class</a></li>
+<li class="navBarCell1Rev">Use</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>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/regionserver/class-use/InvalidMutationDurabilityException.html" target="_top">Frames</a></li>
+<li><a href="InvalidMutationDurabilityException.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.InvalidMutationDurabilityException" class="title">Uses of Class<br>org.apache.hadoop.hbase.regionserver.InvalidMutationDurabilityException</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.regionserver.InvalidMutationDurabilityException</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/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver">Class</a></li>
+<li class="navBarCell1Rev">Use</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>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/regionserver/class-use/InvalidMutationDurabilityException.html" target="_top">Frames</a></li>
+<li><a href="InvalidMutationDurabilityException.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/fa850293/apidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/regionserver/package-frame.html b/apidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
index 9964a57..49cdda6 100644
--- a/apidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
+++ b/apidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
@@ -17,6 +17,7 @@
 </ul>
 <h2 title="Exceptions">Exceptions</h2>
 <ul title="Exceptions">
+<li><a href="InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">InvalidMutationDurabilityException</a></li>
 <li><a href="LeaseException.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">LeaseException</a></li>
 <li><a href="NoSuchColumnFamilyException.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">NoSuchColumnFamilyException</a></li>
 <li><a href="RegionServerAbortedException.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">RegionServerAbortedException</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/apidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/regionserver/package-summary.html b/apidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
index 836afa4..c36c429 100644
--- a/apidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
+++ b/apidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
@@ -98,43 +98,49 @@
 </tr>
 <tbody>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver">InvalidMutationDurabilityException</a></td>
+<td class="colLast">
+<div class="block">Thrown if Mutation's <a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><code>Durability</code></a> is skip wal but table need replication.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/LeaseException.html" title="class in org.apache.hadoop.hbase.regionserver">LeaseException</a></td>
 <td class="colLast">
 <div class="block">Reports a problem with a lease</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/NoSuchColumnFamilyException.html" title="class in org.apache.hadoop.hbase.regionserver">NoSuchColumnFamilyException</a></td>
 <td class="colLast">
 <div class="block">Thrown if request for nonexistent column family.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerAbortedException.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerAbortedException</a></td>
 <td class="colLast">
 <div class="block">Thrown by the region server when it is aborting.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerRunningException.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerRunningException</a></td>
 <td class="colLast">
 <div class="block">Thrown if the region server log directory exists (which indicates another
  region server is running at the same address)</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerStoppedException.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerStoppedException</a></td>
 <td class="colLast">
 <div class="block">Thrown by the region server when it is in shutting down state.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RowTooBigException.html" title="class in org.apache.hadoop.hbase.regionserver">RowTooBigException</a></td>
 <td class="colLast">Deprecated
 <div class="block"><span class="deprecationComment">use <a href="../../../../../org/apache/hadoop/hbase/client/RowTooBigException.html" title="class in org.apache.hadoop.hbase.client"><code>RowTooBigException</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/WrongRegionException.html" title="class in org.apache.hadoop.hbase.regionserver">WrongRegionException</a></td>
 <td class="colLast">
 <div class="block">Thrown when a request contains a key which is not part of this region</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/apidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/apidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index 408d24a..5de3fa7 100644
--- a/apidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/apidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -100,6 +100,7 @@
 </li>
 </ul>
 </li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">InvalidMutationDurabilityException</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/LeaseException.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">LeaseException</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/NoSuchColumnFamilyException.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">NoSuchColumnFamilyException</span></a></li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/apidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/apidocs/overview-tree.html b/apidocs/overview-tree.html
index f0424f7..16631af 100644
--- a/apidocs/overview-tree.html
+++ b/apidocs/overview-tree.html
@@ -577,6 +577,7 @@
 </ul>
 </li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/InvalidFamilyOperationException.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">InvalidFamilyOperationException</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">InvalidMutationDurabilityException</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/LeaseException.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">LeaseException</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/NamespaceExistException.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">NamespaceExistException</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/NamespaceNotFoundException.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">NamespaceNotFoundException</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/apidocs/serialized-form.html
----------------------------------------------------------------------
diff --git a/apidocs/serialized-form.html b/apidocs/serialized-form.html
index a6a51b7..e6bcf0d 100644
--- a/apidocs/serialized-form.html
+++ b/apidocs/serialized-form.html
@@ -786,6 +786,11 @@
 <li class="blockList">
 <h2 title="Package">Package&nbsp;org.apache.hadoop.hbase.regionserver</h2>
 <ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.regionserver.InvalidMutationDurabilityException">
+<!--   -->
+</a>
+<h3>Class <a href="org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver">org.apache.hadoop.hbase.regionserver.InvalidMutationDurabilityException</a> extends <a href="org/apache/hadoop/hbase/DoNotRetryIOException.html" title="class in org.apache.hadoop.hbase">DoNotRetryIOException</a> implements Serializable</h3>
+</li>
 <li class="blockList"><a name="org.apache.hadoop.hbase.regionserver.LeaseException">
 <!--   -->
 </a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/apidocs/src-html/org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html b/apidocs/src-html/org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html
new file mode 100644
index 0000000..e155c88
--- /dev/null
+++ b/apidocs/src-html/org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html
@@ -0,0 +1,116 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> *<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
+<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
+<span class="sourceLineNo">012</span> *<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
+<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
+<span class="sourceLineNo">018</span> */<a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.regionserver;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.client.Durability;<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> * Thrown if Mutation's {@link Durability} is skip wal but table need replication.<a name="line.26"></a>
+<span class="sourceLineNo">027</span> */<a name="line.27"></a>
+<span class="sourceLineNo">028</span>@InterfaceAudience.Public<a name="line.28"></a>
+<span class="sourceLineNo">029</span>public class InvalidMutationDurabilityException extends DoNotRetryIOException {<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>  /**<a name="line.31"></a>
+<span class="sourceLineNo">032</span>   * default constructor<a name="line.32"></a>
+<span class="sourceLineNo">033</span>   */<a name="line.33"></a>
+<span class="sourceLineNo">034</span>  public InvalidMutationDurabilityException() {<a name="line.34"></a>
+<span class="sourceLineNo">035</span>    super();<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>  /**<a name="line.38"></a>
+<span class="sourceLineNo">039</span>   * @param message exception message<a name="line.39"></a>
+<span class="sourceLineNo">040</span>   */<a name="line.40"></a>
+<span class="sourceLineNo">041</span>  public InvalidMutationDurabilityException(String message) {<a name="line.41"></a>
+<span class="sourceLineNo">042</span>    super(message);<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>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


[28/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/org/apache/hadoop/hbase/regionserver/InternalScanner.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/InternalScanner.html b/devapidocs/org/apache/hadoop/hbase/regionserver/InternalScanner.html
index 60de667..bbe8b80 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/InternalScanner.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/InternalScanner.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/InternalScan.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/KeyPrefixRegionSplitPolicy.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/InvalidMutationDurabilityException.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/InternalScanner.html" target="_top">Frames</a></li>
@@ -269,7 +269,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.htm
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/InternalScan.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/KeyPrefixRegionSplitPolicy.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/InvalidMutationDurabilityException.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/InternalScanner.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html b/devapidocs/org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html
new file mode 100644
index 0000000..d4b7cf1
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html
@@ -0,0 +1,299 @@
+<!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>InvalidMutationDurabilityException (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="InvalidMutationDurabilityException (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/InvalidMutationDurabilityException.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/InternalScanner.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyPrefixRegionSplitPolicy.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/InvalidMutationDurabilityException.html" target="_top">Frames</a></li>
+<li><a href="InvalidMutationDurabilityException.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#methods.inherited.from.class.java.lang.Throwable">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li>Method</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 InvalidMutationDurabilityException" class="title">Class InvalidMutationDurabilityException</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">java.lang.Throwable</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">java.lang.Exception</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">java.io.IOException</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="../../../../../org/apache/hadoop/hbase/HBaseIOException.html" title="class in org.apache.hadoop.hbase">org.apache.hadoop.hbase.HBaseIOException</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="../../../../../org/apache/hadoop/hbase/DoNotRetryIOException.html" title="class in org.apache.hadoop.hbase">org.apache.hadoop.hbase.DoNotRetryIOException</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.regionserver.InvalidMutationDurabilityException</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><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></dd>
+</dl>
+<hr>
+<br>
+<pre>@InterfaceAudience.Public
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html#line.29">InvalidMutationDurabilityException</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/DoNotRetryIOException.html" title="class in org.apache.hadoop.hbase">DoNotRetryIOException</a></pre>
+<div class="block">Thrown if Mutation's <a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><code>Durability</code></a> is skip wal but table need replication.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../serialized-form.html#org.apache.hadoop.hbase.regionserver.InvalidMutationDurabilityException">Serialized Form</a></dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== 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/InvalidMutationDurabilityException.html#InvalidMutationDurabilityException--">InvalidMutationDurabilityException</a></span>()</code>
+<div class="block">default constructor</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html#InvalidMutationDurabilityException-java.lang.String-">InvalidMutationDurabilityException</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;message)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Throwable">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<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></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#addSuppressed-java.lang.Throwable-" title="class or interface in java.lang">addSuppressed</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#fillInStackTrace--" title="class or interface in java.lang">fillInStackTrace</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getCause--" title="class or interface in java.lang">getCause</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getLocalizedMessage--" title="class or interface in java.lang">getLocalizedMessage</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getMessage--" title="class or interface in java.lang">getMessage</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getStackTrace--" title="class or
  interface in java.lang">getStackTrace</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getSuppressed--" title="class or interface in java.lang">getSuppressed</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#initCause-java.lang.Throwable-" title="class or interface in java.lang">initCause</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace--" title="class or interface in java.lang">printStackTrace</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintStream-" title="class or interface in java.lang">printStackTrace</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintWriter-" title="class or interface in java.lang">printStackTrace</a>, <a href="https://docs.oracle.com/javase/8/docs/
 api/java/lang/Throwable.html?is-external=true#setStackTrace-java.lang.StackTraceElement:A-" title="class or interface in java.lang">setStackTrace</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#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">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="InvalidMutationDurabilityException--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>InvalidMutationDurabilityException</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html#line.34">InvalidMutationDurabilityException</a>()</pre>
+<div class="block">default constructor</div>
+</li>
+</ul>
+<a name="InvalidMutationDurabilityException-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>InvalidMutationDurabilityException</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html#line.41">InvalidMutationDurabilityException</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;message)</pre>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>message</code> - exception message</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/InvalidMutationDurabilityException.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/InternalScanner.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyPrefixRegionSplitPolicy.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/InvalidMutationDurabilityException.html" target="_top">Frames</a></li>
+<li><a href="InvalidMutationDurabilityException.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#methods.inherited.from.class.java.lang.Throwable">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li>Method</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/fa850293/devapidocs/org/apache/hadoop/hbase/regionserver/KeyPrefixRegionSplitPolicy.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/KeyPrefixRegionSplitPolicy.html b/devapidocs/org/apache/hadoop/hbase/regionserver/KeyPrefixRegionSplitPolicy.html
index 86c3234..44ca9ae 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/KeyPrefixRegionSplitPolicy.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/KeyPrefixRegionSplitPolicy.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.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/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -416,7 +416,7 @@ public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.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/KeyValueHeap.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/fa850293/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/InvalidMutationDurabilityException.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/InvalidMutationDurabilityException.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/InvalidMutationDurabilityException.html
new file mode 100644
index 0000000..97b1b07
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/InvalidMutationDurabilityException.html
@@ -0,0 +1,171 @@
+<!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.InvalidMutationDurabilityException (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.regionserver.InvalidMutationDurabilityException (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.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/InvalidMutationDurabilityException.html" target="_top">Frames</a></li>
+<li><a href="InvalidMutationDurabilityException.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.InvalidMutationDurabilityException" class="title">Uses of Class<br>org.apache.hadoop.hbase.regionserver.InvalidMutationDurabilityException</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../../org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver">InvalidMutationDurabilityException</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver">org.apache.hadoop.hbase.regionserver</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.regionserver">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver">InvalidMutationDurabilityException</a> in <a href="../../../../../../org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
+<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a> that throw <a href="../../../../../../org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver">InvalidMutationDurabilityException</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">HRegion.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#checkFamilies-java.util.Collection-org.apache.hadoop.hbase.client.Durability-">checkFamilies</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;byte[]&gt;&nbsp;families,
+             <a href="../../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;durability)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>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#checkFamily-byte:A-org.apache.hadoop.hbase.client.Durability-">checkFamily</a></span>(byte[]&nbsp;family,
+           <a href="../../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;durability)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.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/InvalidMutationDurabilityException.html" target="_top">Frames</a></li>
+<li><a href="InvalidMutationDurabilityException.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/fa850293/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/NoSuchColumnFamilyException.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/NoSuchColumnFamilyException.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/NoSuchColumnFamilyException.html
index 6fa00f6..c38ebeb 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/NoSuchColumnFamilyException.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/NoSuchColumnFamilyException.html
@@ -103,15 +103,19 @@
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">HRegion.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#checkFamilies-java.util.Collection-">checkFamilies</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;byte[]&gt;&nbsp;families)</code>
-<div class="block">Check the collection of families for validity.</div>
-</td>
+<td class="colFirst"><code>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#checkFamilies-java.util.Collection-org.apache.hadoop.hbase.client.Durability-">checkFamilies</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;byte[]&gt;&nbsp;families,
+             <a href="../../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;durability)</code>&nbsp;</td>
 </tr>
 <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#checkFamily-byte:A-">checkFamily</a></span>(byte[]&nbsp;family)</code>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>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#checkFamily-byte:A-org.apache.hadoop.hbase.client.Durability-">checkFamily</a></span>(byte[]&nbsp;family,
+           <a href="../../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;durability)</code>&nbsp;</td>
+</tr>
 </tbody>
 </table>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html b/devapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
index 1d30f05..12ac582 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
@@ -297,6 +297,7 @@
 </ul>
 <h2 title="Exceptions">Exceptions</h2>
 <ul title="Exceptions">
+<li><a href="InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">InvalidMutationDurabilityException</a></li>
 <li><a href="LeaseException.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">LeaseException</a></li>
 <li><a href="Leases.LeaseStillHeldException.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">Leases.LeaseStillHeldException</a></li>
 <li><a href="NoSuchColumnFamilyException.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">NoSuchColumnFamilyException</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html b/devapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
index d877d45..b28db88 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
@@ -1754,50 +1754,56 @@
 </tr>
 <tbody>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver">InvalidMutationDurabilityException</a></td>
+<td class="colLast">
+<div class="block">Thrown if Mutation's <a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><code>Durability</code></a> is skip wal but table need replication.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/LeaseException.html" title="class in org.apache.hadoop.hbase.regionserver">LeaseException</a></td>
 <td class="colLast">
 <div class="block">Reports a problem with a lease</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Leases.LeaseStillHeldException.html" title="class in org.apache.hadoop.hbase.regionserver">Leases.LeaseStillHeldException</a></td>
 <td class="colLast">
 <div class="block">Thrown if we are asked to create a lease but lease on passed name already
  exists.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/NoSuchColumnFamilyException.html" title="class in org.apache.hadoop.hbase.regionserver">NoSuchColumnFamilyException</a></td>
 <td class="colLast">
 <div class="block">Thrown if request for nonexistent column family.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerAbortedException.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerAbortedException</a></td>
 <td class="colLast">
 <div class="block">Thrown by the region server when it is aborting.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerRunningException.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerRunningException</a></td>
 <td class="colLast">
 <div class="block">Thrown if the region server log directory exists (which indicates another
  region server is running at the same address)</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerStoppedException.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerStoppedException</a></td>
 <td class="colLast">
 <div class="block">Thrown by the region server when it is in shutting down state.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RowTooBigException.html" title="class in org.apache.hadoop.hbase.regionserver">RowTooBigException</a></td>
 <td class="colLast">Deprecated
 <div class="block"><span class="deprecationComment">use <a href="../../../../../org/apache/hadoop/hbase/client/RowTooBigException.html" title="class in org.apache.hadoop.hbase.client"><code>RowTooBigException</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/WrongRegionException.html" title="class in org.apache.hadoop.hbase.regionserver">WrongRegionException</a></td>
 <td class="colLast">
 <div class="block">Thrown when a request contains a key which is not part of this region</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 2b2eb5f..b9c557c 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -543,6 +543,7 @@
 </li>
 </ul>
 </li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">InvalidMutationDurabilityException</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/LeaseException.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">LeaseException</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/NoSuchColumnFamilyException.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">NoSuchColumnFamilyException</span></a></li>
 </ul>
@@ -710,20 +711,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/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/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/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.IndexType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.Operation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultHeapMemoryTuner.StepDirection.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DefaultHeapMemoryTuner.StepDirection</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/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/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/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/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/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/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScanType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">BloomType</span></a></li>
+<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/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/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/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/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/SplitLogWorker.TaskExecutor.Status.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">SplitLogWorker.TaskExecutor.Status</span></a></li>
 </ul>
 </li>
 </ul>


[11/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 da040ad..d6702a7 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
@@ -2957,7 +2957,7 @@
 <span class="sourceLineNo">2949</span>        if(family == null) {<a name="line.2949"></a>
 <span class="sourceLineNo">2950</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2950"></a>
 <span class="sourceLineNo">2951</span>        }<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>        checkFamily(family);<a name="line.2952"></a>
+<span class="sourceLineNo">2952</span>        checkFamily(family, delete.getDurability());<a name="line.2952"></a>
 <span class="sourceLineNo">2953</span>      }<a name="line.2953"></a>
 <span class="sourceLineNo">2954</span>    }<a name="line.2954"></a>
 <span class="sourceLineNo">2955</span>  }<a name="line.2955"></a>
@@ -3569,7 +3569,7 @@
 <span class="sourceLineNo">3561</span><a name="line.3561"></a>
 <span class="sourceLineNo">3562</span>    @Override<a name="line.3562"></a>
 <span class="sourceLineNo">3563</span>    public void checkAndPreparePut(Put p) throws IOException {<a name="line.3563"></a>
-<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet());<a name="line.3564"></a>
+<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet(), p.getDurability());<a name="line.3564"></a>
 <span class="sourceLineNo">3565</span>    }<a name="line.3565"></a>
 <span class="sourceLineNo">3566</span><a name="line.3566"></a>
 <span class="sourceLineNo">3567</span>    @Override<a name="line.3567"></a>
@@ -4462,4304 +4462,4307 @@
 <span class="sourceLineNo">4454</span>    store.add(cell, memstoreAccounting);<a name="line.4454"></a>
 <span class="sourceLineNo">4455</span>  }<a name="line.4455"></a>
 <span class="sourceLineNo">4456</span><a name="line.4456"></a>
-<span class="sourceLineNo">4457</span>  /**<a name="line.4457"></a>
-<span class="sourceLineNo">4458</span>   * Check the collection of families for validity.<a name="line.4458"></a>
-<span class="sourceLineNo">4459</span>   * @param families<a name="line.4459"></a>
-<span class="sourceLineNo">4460</span>   * @throws NoSuchColumnFamilyException<a name="line.4460"></a>
-<span class="sourceLineNo">4461</span>   */<a name="line.4461"></a>
-<span class="sourceLineNo">4462</span>  public void checkFamilies(Collection&lt;byte[]&gt; families) throws NoSuchColumnFamilyException {<a name="line.4462"></a>
-<span class="sourceLineNo">4463</span>    for (byte[] family : families) {<a name="line.4463"></a>
-<span class="sourceLineNo">4464</span>      checkFamily(family);<a name="line.4464"></a>
-<span class="sourceLineNo">4465</span>    }<a name="line.4465"></a>
-<span class="sourceLineNo">4466</span>  }<a name="line.4466"></a>
-<span class="sourceLineNo">4467</span><a name="line.4467"></a>
-<span class="sourceLineNo">4468</span>  /**<a name="line.4468"></a>
-<span class="sourceLineNo">4469</span>   * Check the collection of families for valid timestamps<a name="line.4469"></a>
-<span class="sourceLineNo">4470</span>   * @param familyMap<a name="line.4470"></a>
-<span class="sourceLineNo">4471</span>   * @param now current timestamp<a name="line.4471"></a>
-<span class="sourceLineNo">4472</span>   * @throws FailedSanityCheckException<a name="line.4472"></a>
-<span class="sourceLineNo">4473</span>   */<a name="line.4473"></a>
-<span class="sourceLineNo">4474</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4474"></a>
-<span class="sourceLineNo">4475</span>      throws FailedSanityCheckException {<a name="line.4475"></a>
-<span class="sourceLineNo">4476</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4476"></a>
-<span class="sourceLineNo">4477</span>      return;<a name="line.4477"></a>
-<span class="sourceLineNo">4478</span>    }<a name="line.4478"></a>
-<span class="sourceLineNo">4479</span>    long maxTs = now + timestampSlop;<a name="line.4479"></a>
-<span class="sourceLineNo">4480</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4480"></a>
-<span class="sourceLineNo">4481</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4481"></a>
-<span class="sourceLineNo">4482</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4482"></a>
-<span class="sourceLineNo">4483</span>      assert kvs instanceof RandomAccess;<a name="line.4483"></a>
-<span class="sourceLineNo">4484</span>      int listSize  = kvs.size();<a name="line.4484"></a>
-<span class="sourceLineNo">4485</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4485"></a>
-<span class="sourceLineNo">4486</span>        Cell cell = kvs.get(i);<a name="line.4486"></a>
-<span class="sourceLineNo">4487</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4487"></a>
-<span class="sourceLineNo">4488</span>        long ts = cell.getTimestamp();<a name="line.4488"></a>
-<span class="sourceLineNo">4489</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4489"></a>
-<span class="sourceLineNo">4490</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4490"></a>
-<span class="sourceLineNo">4491</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4491"></a>
-<span class="sourceLineNo">4492</span>        }<a name="line.4492"></a>
-<span class="sourceLineNo">4493</span>      }<a name="line.4493"></a>
+<span class="sourceLineNo">4457</span>  private void checkFamilies(Collection&lt;byte[]&gt; families, Durability durability)<a name="line.4457"></a>
+<span class="sourceLineNo">4458</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4458"></a>
+<span class="sourceLineNo">4459</span>    for (byte[] family : families) {<a name="line.4459"></a>
+<span class="sourceLineNo">4460</span>      checkFamily(family, durability);<a name="line.4460"></a>
+<span class="sourceLineNo">4461</span>    }<a name="line.4461"></a>
+<span class="sourceLineNo">4462</span>  }<a name="line.4462"></a>
+<span class="sourceLineNo">4463</span><a name="line.4463"></a>
+<span class="sourceLineNo">4464</span>  private void checkFamily(final byte[] family, Durability durability)<a name="line.4464"></a>
+<span class="sourceLineNo">4465</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4465"></a>
+<span class="sourceLineNo">4466</span>    checkFamily(family);<a name="line.4466"></a>
+<span class="sourceLineNo">4467</span>    if (durability.equals(Durability.SKIP_WAL)<a name="line.4467"></a>
+<span class="sourceLineNo">4468</span>        &amp;&amp; htableDescriptor.getColumnFamily(family).getScope()<a name="line.4468"></a>
+<span class="sourceLineNo">4469</span>        != HConstants.REPLICATION_SCOPE_LOCAL) {<a name="line.4469"></a>
+<span class="sourceLineNo">4470</span>      throw new InvalidMutationDurabilityException(<a name="line.4470"></a>
+<span class="sourceLineNo">4471</span>          "Mutation's durability is SKIP_WAL but table's column family " + Bytes.toString(family)<a name="line.4471"></a>
+<span class="sourceLineNo">4472</span>              + " need replication");<a name="line.4472"></a>
+<span class="sourceLineNo">4473</span>    }<a name="line.4473"></a>
+<span class="sourceLineNo">4474</span>  }<a name="line.4474"></a>
+<span class="sourceLineNo">4475</span><a name="line.4475"></a>
+<span class="sourceLineNo">4476</span>  void checkFamily(final byte[] family) throws NoSuchColumnFamilyException {<a name="line.4476"></a>
+<span class="sourceLineNo">4477</span>    if (!this.htableDescriptor.hasColumnFamily(family)) {<a name="line.4477"></a>
+<span class="sourceLineNo">4478</span>      throw new NoSuchColumnFamilyException(<a name="line.4478"></a>
+<span class="sourceLineNo">4479</span>          "Column family " + Bytes.toString(family) + " does not exist in region " + this<a name="line.4479"></a>
+<span class="sourceLineNo">4480</span>              + " in table " + this.htableDescriptor);<a name="line.4480"></a>
+<span class="sourceLineNo">4481</span>    }<a name="line.4481"></a>
+<span class="sourceLineNo">4482</span>  }<a name="line.4482"></a>
+<span class="sourceLineNo">4483</span><a name="line.4483"></a>
+<span class="sourceLineNo">4484</span>  /**<a name="line.4484"></a>
+<span class="sourceLineNo">4485</span>   * Check the collection of families for valid timestamps<a name="line.4485"></a>
+<span class="sourceLineNo">4486</span>   * @param familyMap<a name="line.4486"></a>
+<span class="sourceLineNo">4487</span>   * @param now current timestamp<a name="line.4487"></a>
+<span class="sourceLineNo">4488</span>   * @throws FailedSanityCheckException<a name="line.4488"></a>
+<span class="sourceLineNo">4489</span>   */<a name="line.4489"></a>
+<span class="sourceLineNo">4490</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4490"></a>
+<span class="sourceLineNo">4491</span>      throws FailedSanityCheckException {<a name="line.4491"></a>
+<span class="sourceLineNo">4492</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4492"></a>
+<span class="sourceLineNo">4493</span>      return;<a name="line.4493"></a>
 <span class="sourceLineNo">4494</span>    }<a name="line.4494"></a>
-<span class="sourceLineNo">4495</span>  }<a name="line.4495"></a>
-<span class="sourceLineNo">4496</span><a name="line.4496"></a>
-<span class="sourceLineNo">4497</span>  /*<a name="line.4497"></a>
-<span class="sourceLineNo">4498</span>   * @param size<a name="line.4498"></a>
-<span class="sourceLineNo">4499</span>   * @return True if size is over the flush threshold<a name="line.4499"></a>
-<span class="sourceLineNo">4500</span>   */<a name="line.4500"></a>
-<span class="sourceLineNo">4501</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4501"></a>
-<span class="sourceLineNo">4502</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4502"></a>
-<span class="sourceLineNo">4503</span>  }<a name="line.4503"></a>
-<span class="sourceLineNo">4504</span><a name="line.4504"></a>
-<span class="sourceLineNo">4505</span>  /**<a name="line.4505"></a>
-<span class="sourceLineNo">4506</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4506"></a>
-<span class="sourceLineNo">4507</span>   * the recovered edits back up into this region.<a name="line.4507"></a>
-<span class="sourceLineNo">4508</span>   *<a name="line.4508"></a>
-<span class="sourceLineNo">4509</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4509"></a>
-<span class="sourceLineNo">4510</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4510"></a>
-<span class="sourceLineNo">4511</span>   * reflected in the HFiles.)<a name="line.4511"></a>
-<span class="sourceLineNo">4512</span>   *<a name="line.4512"></a>
-<span class="sourceLineNo">4513</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4513"></a>
-<span class="sourceLineNo">4514</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4514"></a>
-<span class="sourceLineNo">4515</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4515"></a>
-<span class="sourceLineNo">4516</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4516"></a>
-<span class="sourceLineNo">4517</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4517"></a>
-<span class="sourceLineNo">4518</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4518"></a>
-<span class="sourceLineNo">4519</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4519"></a>
-<span class="sourceLineNo">4520</span>   * edits.<a name="line.4520"></a>
-<span class="sourceLineNo">4521</span>   *<a name="line.4521"></a>
-<span class="sourceLineNo">4522</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4522"></a>
-<span class="sourceLineNo">4523</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4523"></a>
-<span class="sourceLineNo">4524</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4524"></a>
-<span class="sourceLineNo">4525</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4525"></a>
-<span class="sourceLineNo">4526</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4526"></a>
-<span class="sourceLineNo">4527</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4527"></a>
-<span class="sourceLineNo">4528</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4528"></a>
-<span class="sourceLineNo">4529</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4529"></a>
-<span class="sourceLineNo">4530</span>   * make sense in a this single region context only -- until we online.<a name="line.4530"></a>
-<span class="sourceLineNo">4531</span>   *<a name="line.4531"></a>
-<span class="sourceLineNo">4532</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4532"></a>
-<span class="sourceLineNo">4533</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4533"></a>
-<span class="sourceLineNo">4534</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4534"></a>
-<span class="sourceLineNo">4535</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4535"></a>
-<span class="sourceLineNo">4536</span>   * @throws IOException<a name="line.4536"></a>
-<span class="sourceLineNo">4537</span>   */<a name="line.4537"></a>
-<span class="sourceLineNo">4538</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4538"></a>
-<span class="sourceLineNo">4539</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4539"></a>
-<span class="sourceLineNo">4540</span>      throws IOException {<a name="line.4540"></a>
-<span class="sourceLineNo">4541</span>    long minSeqIdForTheRegion = -1;<a name="line.4541"></a>
-<span class="sourceLineNo">4542</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4542"></a>
-<span class="sourceLineNo">4543</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4543"></a>
-<span class="sourceLineNo">4544</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4544"></a>
-<span class="sourceLineNo">4545</span>      }<a name="line.4545"></a>
-<span class="sourceLineNo">4546</span>    }<a name="line.4546"></a>
-<span class="sourceLineNo">4547</span>    long seqid = minSeqIdForTheRegion;<a name="line.4547"></a>
-<span class="sourceLineNo">4548</span><a name="line.4548"></a>
-<span class="sourceLineNo">4549</span>    FileSystem walFS = getWalFileSystem();<a name="line.4549"></a>
-<span class="sourceLineNo">4550</span>    FileSystem rootFS = getFilesystem();<a name="line.4550"></a>
-<span class="sourceLineNo">4551</span>    Path regionDir = getWALRegionDir();<a name="line.4551"></a>
-<span class="sourceLineNo">4552</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4552"></a>
-<span class="sourceLineNo">4553</span><a name="line.4553"></a>
-<span class="sourceLineNo">4554</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4554"></a>
-<span class="sourceLineNo">4555</span>    // under the root dir even if walDir is set.<a name="line.4555"></a>
-<span class="sourceLineNo">4556</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4556"></a>
-<span class="sourceLineNo">4557</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4557"></a>
-<span class="sourceLineNo">4558</span>      filesUnderRootDir =<a name="line.4558"></a>
-<span class="sourceLineNo">4559</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4559"></a>
-<span class="sourceLineNo">4560</span>      seqid = Math.max(seqid,<a name="line.4560"></a>
-<span class="sourceLineNo">4561</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4561"></a>
-<span class="sourceLineNo">4562</span>              defaultRegionDir));<a name="line.4562"></a>
-<span class="sourceLineNo">4563</span>    }<a name="line.4563"></a>
+<span class="sourceLineNo">4495</span>    long maxTs = now + timestampSlop;<a name="line.4495"></a>
+<span class="sourceLineNo">4496</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4496"></a>
+<span class="sourceLineNo">4497</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4497"></a>
+<span class="sourceLineNo">4498</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4498"></a>
+<span class="sourceLineNo">4499</span>      assert kvs instanceof RandomAccess;<a name="line.4499"></a>
+<span class="sourceLineNo">4500</span>      int listSize  = kvs.size();<a name="line.4500"></a>
+<span class="sourceLineNo">4501</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4501"></a>
+<span class="sourceLineNo">4502</span>        Cell cell = kvs.get(i);<a name="line.4502"></a>
+<span class="sourceLineNo">4503</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4503"></a>
+<span class="sourceLineNo">4504</span>        long ts = cell.getTimestamp();<a name="line.4504"></a>
+<span class="sourceLineNo">4505</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4505"></a>
+<span class="sourceLineNo">4506</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4506"></a>
+<span class="sourceLineNo">4507</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4507"></a>
+<span class="sourceLineNo">4508</span>        }<a name="line.4508"></a>
+<span class="sourceLineNo">4509</span>      }<a name="line.4509"></a>
+<span class="sourceLineNo">4510</span>    }<a name="line.4510"></a>
+<span class="sourceLineNo">4511</span>  }<a name="line.4511"></a>
+<span class="sourceLineNo">4512</span><a name="line.4512"></a>
+<span class="sourceLineNo">4513</span>  /*<a name="line.4513"></a>
+<span class="sourceLineNo">4514</span>   * @param size<a name="line.4514"></a>
+<span class="sourceLineNo">4515</span>   * @return True if size is over the flush threshold<a name="line.4515"></a>
+<span class="sourceLineNo">4516</span>   */<a name="line.4516"></a>
+<span class="sourceLineNo">4517</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4517"></a>
+<span class="sourceLineNo">4518</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4518"></a>
+<span class="sourceLineNo">4519</span>  }<a name="line.4519"></a>
+<span class="sourceLineNo">4520</span><a name="line.4520"></a>
+<span class="sourceLineNo">4521</span>  /**<a name="line.4521"></a>
+<span class="sourceLineNo">4522</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4522"></a>
+<span class="sourceLineNo">4523</span>   * the recovered edits back up into this region.<a name="line.4523"></a>
+<span class="sourceLineNo">4524</span>   *<a name="line.4524"></a>
+<span class="sourceLineNo">4525</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4525"></a>
+<span class="sourceLineNo">4526</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4526"></a>
+<span class="sourceLineNo">4527</span>   * reflected in the HFiles.)<a name="line.4527"></a>
+<span class="sourceLineNo">4528</span>   *<a name="line.4528"></a>
+<span class="sourceLineNo">4529</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4529"></a>
+<span class="sourceLineNo">4530</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4530"></a>
+<span class="sourceLineNo">4531</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4531"></a>
+<span class="sourceLineNo">4532</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4532"></a>
+<span class="sourceLineNo">4533</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4533"></a>
+<span class="sourceLineNo">4534</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4534"></a>
+<span class="sourceLineNo">4535</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4535"></a>
+<span class="sourceLineNo">4536</span>   * edits.<a name="line.4536"></a>
+<span class="sourceLineNo">4537</span>   *<a name="line.4537"></a>
+<span class="sourceLineNo">4538</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4538"></a>
+<span class="sourceLineNo">4539</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4539"></a>
+<span class="sourceLineNo">4540</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4540"></a>
+<span class="sourceLineNo">4541</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4541"></a>
+<span class="sourceLineNo">4542</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4542"></a>
+<span class="sourceLineNo">4543</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4543"></a>
+<span class="sourceLineNo">4544</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4544"></a>
+<span class="sourceLineNo">4545</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4545"></a>
+<span class="sourceLineNo">4546</span>   * make sense in a this single region context only -- until we online.<a name="line.4546"></a>
+<span class="sourceLineNo">4547</span>   *<a name="line.4547"></a>
+<span class="sourceLineNo">4548</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4548"></a>
+<span class="sourceLineNo">4549</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4549"></a>
+<span class="sourceLineNo">4550</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4550"></a>
+<span class="sourceLineNo">4551</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4551"></a>
+<span class="sourceLineNo">4552</span>   * @throws IOException<a name="line.4552"></a>
+<span class="sourceLineNo">4553</span>   */<a name="line.4553"></a>
+<span class="sourceLineNo">4554</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4554"></a>
+<span class="sourceLineNo">4555</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4555"></a>
+<span class="sourceLineNo">4556</span>      throws IOException {<a name="line.4556"></a>
+<span class="sourceLineNo">4557</span>    long minSeqIdForTheRegion = -1;<a name="line.4557"></a>
+<span class="sourceLineNo">4558</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4558"></a>
+<span class="sourceLineNo">4559</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4559"></a>
+<span class="sourceLineNo">4560</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4560"></a>
+<span class="sourceLineNo">4561</span>      }<a name="line.4561"></a>
+<span class="sourceLineNo">4562</span>    }<a name="line.4562"></a>
+<span class="sourceLineNo">4563</span>    long seqid = minSeqIdForTheRegion;<a name="line.4563"></a>
 <span class="sourceLineNo">4564</span><a name="line.4564"></a>
-<span class="sourceLineNo">4565</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4565"></a>
-<span class="sourceLineNo">4566</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4566"></a>
-<span class="sourceLineNo">4567</span>        files, reporter, regionDir));<a name="line.4567"></a>
-<span class="sourceLineNo">4568</span><a name="line.4568"></a>
-<span class="sourceLineNo">4569</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4569"></a>
-<span class="sourceLineNo">4570</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4570"></a>
-<span class="sourceLineNo">4571</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4571"></a>
-<span class="sourceLineNo">4572</span>    }<a name="line.4572"></a>
-<span class="sourceLineNo">4573</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4573"></a>
-<span class="sourceLineNo">4574</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4574"></a>
-<span class="sourceLineNo">4575</span>      // For debugging data loss issues!<a name="line.4575"></a>
-<span class="sourceLineNo">4576</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4576"></a>
-<span class="sourceLineNo">4577</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4577"></a>
-<span class="sourceLineNo">4578</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4578"></a>
-<span class="sourceLineNo">4579</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4579"></a>
-<span class="sourceLineNo">4580</span>      for (Path file: files) {<a name="line.4580"></a>
-<span class="sourceLineNo">4581</span>        fakeStoreFiles.add(<a name="line.4581"></a>
-<span class="sourceLineNo">4582</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4582"></a>
-<span class="sourceLineNo">4583</span>      }<a name="line.4583"></a>
-<span class="sourceLineNo">4584</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4584"></a>
-<span class="sourceLineNo">4585</span>    } else {<a name="line.4585"></a>
-<span class="sourceLineNo">4586</span>      if (filesUnderRootDir != null) {<a name="line.4586"></a>
-<span class="sourceLineNo">4587</span>        for (Path file : filesUnderRootDir) {<a name="line.4587"></a>
-<span class="sourceLineNo">4588</span>          if (!rootFS.delete(file, false)) {<a name="line.4588"></a>
-<span class="sourceLineNo">4589</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4589"></a>
-<span class="sourceLineNo">4590</span>          } else {<a name="line.4590"></a>
-<span class="sourceLineNo">4591</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4591"></a>
-<span class="sourceLineNo">4592</span>          }<a name="line.4592"></a>
-<span class="sourceLineNo">4593</span>        }<a name="line.4593"></a>
-<span class="sourceLineNo">4594</span>      }<a name="line.4594"></a>
-<span class="sourceLineNo">4595</span>      for (Path file: files) {<a name="line.4595"></a>
-<span class="sourceLineNo">4596</span>        if (!walFS.delete(file, false)) {<a name="line.4596"></a>
-<span class="sourceLineNo">4597</span>          LOG.error("Failed delete of " + file);<a name="line.4597"></a>
-<span class="sourceLineNo">4598</span>        } else {<a name="line.4598"></a>
-<span class="sourceLineNo">4599</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4599"></a>
-<span class="sourceLineNo">4600</span>        }<a name="line.4600"></a>
-<span class="sourceLineNo">4601</span>      }<a name="line.4601"></a>
-<span class="sourceLineNo">4602</span>    }<a name="line.4602"></a>
-<span class="sourceLineNo">4603</span>    return seqid;<a name="line.4603"></a>
-<span class="sourceLineNo">4604</span>  }<a name="line.4604"></a>
-<span class="sourceLineNo">4605</span><a name="line.4605"></a>
-<span class="sourceLineNo">4606</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4606"></a>
-<span class="sourceLineNo">4607</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4607"></a>
-<span class="sourceLineNo">4608</span>      throws IOException {<a name="line.4608"></a>
-<span class="sourceLineNo">4609</span>    long seqid = minSeqIdForTheRegion;<a name="line.4609"></a>
-<span class="sourceLineNo">4610</span>    if (LOG.isDebugEnabled()) {<a name="line.4610"></a>
-<span class="sourceLineNo">4611</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4611"></a>
-<span class="sourceLineNo">4612</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4612"></a>
-<span class="sourceLineNo">4613</span>    }<a name="line.4613"></a>
-<span class="sourceLineNo">4614</span><a name="line.4614"></a>
-<span class="sourceLineNo">4615</span>    if (files == null || files.isEmpty()) {<a name="line.4615"></a>
-<span class="sourceLineNo">4616</span>      return minSeqIdForTheRegion;<a name="line.4616"></a>
-<span class="sourceLineNo">4617</span>    }<a name="line.4617"></a>
-<span class="sourceLineNo">4618</span><a name="line.4618"></a>
-<span class="sourceLineNo">4619</span>    for (Path edits: files) {<a name="line.4619"></a>
-<span class="sourceLineNo">4620</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4620"></a>
-<span class="sourceLineNo">4621</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4621"></a>
-<span class="sourceLineNo">4622</span>        continue;<a name="line.4622"></a>
-<span class="sourceLineNo">4623</span>      }<a name="line.4623"></a>
-<span class="sourceLineNo">4624</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4624"></a>
-<span class="sourceLineNo">4625</span><a name="line.4625"></a>
-<span class="sourceLineNo">4626</span>      long maxSeqId;<a name="line.4626"></a>
-<span class="sourceLineNo">4627</span>      String fileName = edits.getName();<a name="line.4627"></a>
-<span class="sourceLineNo">4628</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4628"></a>
-<span class="sourceLineNo">4629</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4629"></a>
-<span class="sourceLineNo">4630</span>        if (LOG.isDebugEnabled()) {<a name="line.4630"></a>
-<span class="sourceLineNo">4631</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4631"></a>
-<span class="sourceLineNo">4632</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4632"></a>
-<span class="sourceLineNo">4633</span>              + ", skipped the whole file, path=" + edits;<a name="line.4633"></a>
-<span class="sourceLineNo">4634</span>          LOG.debug(msg);<a name="line.4634"></a>
-<span class="sourceLineNo">4635</span>        }<a name="line.4635"></a>
-<span class="sourceLineNo">4636</span>        continue;<a name="line.4636"></a>
-<span class="sourceLineNo">4637</span>      }<a name="line.4637"></a>
-<span class="sourceLineNo">4638</span><a name="line.4638"></a>
-<span class="sourceLineNo">4639</span>      try {<a name="line.4639"></a>
-<span class="sourceLineNo">4640</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4640"></a>
-<span class="sourceLineNo">4641</span>        // if seqId is greater<a name="line.4641"></a>
-<span class="sourceLineNo">4642</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4642"></a>
-<span class="sourceLineNo">4643</span>      } catch (IOException e) {<a name="line.4643"></a>
-<span class="sourceLineNo">4644</span>        boolean skipErrors = conf.getBoolean(<a name="line.4644"></a>
-<span class="sourceLineNo">4645</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4645"></a>
-<span class="sourceLineNo">4646</span>            conf.getBoolean(<a name="line.4646"></a>
-<span class="sourceLineNo">4647</span>                "hbase.skip.errors",<a name="line.4647"></a>
-<span class="sourceLineNo">4648</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4648"></a>
-<span class="sourceLineNo">4649</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4649"></a>
-<span class="sourceLineNo">4650</span>          LOG.warn(<a name="line.4650"></a>
-<span class="sourceLineNo">4651</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4651"></a>
-<span class="sourceLineNo">4652</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4652"></a>
-<span class="sourceLineNo">4653</span>        }<a name="line.4653"></a>
-<span class="sourceLineNo">4654</span>        if (skipErrors) {<a name="line.4654"></a>
-<span class="sourceLineNo">4655</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4655"></a>
-<span class="sourceLineNo">4656</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4656"></a>
-<span class="sourceLineNo">4657</span>              + "=true so continuing. Renamed " + edits +<a name="line.4657"></a>
-<span class="sourceLineNo">4658</span>              " as " + p, e);<a name="line.4658"></a>
-<span class="sourceLineNo">4659</span>        } else {<a name="line.4659"></a>
-<span class="sourceLineNo">4660</span>          throw e;<a name="line.4660"></a>
-<span class="sourceLineNo">4661</span>        }<a name="line.4661"></a>
-<span class="sourceLineNo">4662</span>      }<a name="line.4662"></a>
-<span class="sourceLineNo">4663</span>    }<a name="line.4663"></a>
-<span class="sourceLineNo">4664</span>    return seqid;<a name="line.4664"></a>
-<span class="sourceLineNo">4665</span>  }<a name="line.4665"></a>
-<span class="sourceLineNo">4666</span><a name="line.4666"></a>
-<span class="sourceLineNo">4667</span>  /*<a name="line.4667"></a>
-<span class="sourceLineNo">4668</span>   * @param edits File of recovered edits.<a name="line.4668"></a>
-<span class="sourceLineNo">4669</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4669"></a>
-<span class="sourceLineNo">4670</span>   * must be larger than this to be replayed for each store.<a name="line.4670"></a>
-<span class="sourceLineNo">4671</span>   * @param reporter<a name="line.4671"></a>
-<span class="sourceLineNo">4672</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4672"></a>
-<span class="sourceLineNo">4673</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4673"></a>
-<span class="sourceLineNo">4674</span>   * @throws IOException<a name="line.4674"></a>
-<span class="sourceLineNo">4675</span>   */<a name="line.4675"></a>
-<span class="sourceLineNo">4676</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4676"></a>
-<span class="sourceLineNo">4677</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4677"></a>
-<span class="sourceLineNo">4678</span>    throws IOException {<a name="line.4678"></a>
-<span class="sourceLineNo">4679</span>    String msg = "Replaying edits from " + edits;<a name="line.4679"></a>
-<span class="sourceLineNo">4680</span>    LOG.info(msg);<a name="line.4680"></a>
-<span class="sourceLineNo">4681</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4681"></a>
+<span class="sourceLineNo">4565</span>    FileSystem walFS = getWalFileSystem();<a name="line.4565"></a>
+<span class="sourceLineNo">4566</span>    FileSystem rootFS = getFilesystem();<a name="line.4566"></a>
+<span class="sourceLineNo">4567</span>    Path regionDir = getWALRegionDir();<a name="line.4567"></a>
+<span class="sourceLineNo">4568</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4568"></a>
+<span class="sourceLineNo">4569</span><a name="line.4569"></a>
+<span class="sourceLineNo">4570</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4570"></a>
+<span class="sourceLineNo">4571</span>    // under the root dir even if walDir is set.<a name="line.4571"></a>
+<span class="sourceLineNo">4572</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4572"></a>
+<span class="sourceLineNo">4573</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4573"></a>
+<span class="sourceLineNo">4574</span>      filesUnderRootDir =<a name="line.4574"></a>
+<span class="sourceLineNo">4575</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4575"></a>
+<span class="sourceLineNo">4576</span>      seqid = Math.max(seqid,<a name="line.4576"></a>
+<span class="sourceLineNo">4577</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4577"></a>
+<span class="sourceLineNo">4578</span>              defaultRegionDir));<a name="line.4578"></a>
+<span class="sourceLineNo">4579</span>    }<a name="line.4579"></a>
+<span class="sourceLineNo">4580</span><a name="line.4580"></a>
+<span class="sourceLineNo">4581</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4581"></a>
+<span class="sourceLineNo">4582</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4582"></a>
+<span class="sourceLineNo">4583</span>        files, reporter, regionDir));<a name="line.4583"></a>
+<span class="sourceLineNo">4584</span><a name="line.4584"></a>
+<span class="sourceLineNo">4585</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4585"></a>
+<span class="sourceLineNo">4586</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4586"></a>
+<span class="sourceLineNo">4587</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4587"></a>
+<span class="sourceLineNo">4588</span>    }<a name="line.4588"></a>
+<span class="sourceLineNo">4589</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4589"></a>
+<span class="sourceLineNo">4590</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4590"></a>
+<span class="sourceLineNo">4591</span>      // For debugging data loss issues!<a name="line.4591"></a>
+<span class="sourceLineNo">4592</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4592"></a>
+<span class="sourceLineNo">4593</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4593"></a>
+<span class="sourceLineNo">4594</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4594"></a>
+<span class="sourceLineNo">4595</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4595"></a>
+<span class="sourceLineNo">4596</span>      for (Path file: files) {<a name="line.4596"></a>
+<span class="sourceLineNo">4597</span>        fakeStoreFiles.add(<a name="line.4597"></a>
+<span class="sourceLineNo">4598</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4598"></a>
+<span class="sourceLineNo">4599</span>      }<a name="line.4599"></a>
+<span class="sourceLineNo">4600</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4600"></a>
+<span class="sourceLineNo">4601</span>    } else {<a name="line.4601"></a>
+<span class="sourceLineNo">4602</span>      if (filesUnderRootDir != null) {<a name="line.4602"></a>
+<span class="sourceLineNo">4603</span>        for (Path file : filesUnderRootDir) {<a name="line.4603"></a>
+<span class="sourceLineNo">4604</span>          if (!rootFS.delete(file, false)) {<a name="line.4604"></a>
+<span class="sourceLineNo">4605</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4605"></a>
+<span class="sourceLineNo">4606</span>          } else {<a name="line.4606"></a>
+<span class="sourceLineNo">4607</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4607"></a>
+<span class="sourceLineNo">4608</span>          }<a name="line.4608"></a>
+<span class="sourceLineNo">4609</span>        }<a name="line.4609"></a>
+<span class="sourceLineNo">4610</span>      }<a name="line.4610"></a>
+<span class="sourceLineNo">4611</span>      for (Path file: files) {<a name="line.4611"></a>
+<span class="sourceLineNo">4612</span>        if (!walFS.delete(file, false)) {<a name="line.4612"></a>
+<span class="sourceLineNo">4613</span>          LOG.error("Failed delete of " + file);<a name="line.4613"></a>
+<span class="sourceLineNo">4614</span>        } else {<a name="line.4614"></a>
+<span class="sourceLineNo">4615</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4615"></a>
+<span class="sourceLineNo">4616</span>        }<a name="line.4616"></a>
+<span class="sourceLineNo">4617</span>      }<a name="line.4617"></a>
+<span class="sourceLineNo">4618</span>    }<a name="line.4618"></a>
+<span class="sourceLineNo">4619</span>    return seqid;<a name="line.4619"></a>
+<span class="sourceLineNo">4620</span>  }<a name="line.4620"></a>
+<span class="sourceLineNo">4621</span><a name="line.4621"></a>
+<span class="sourceLineNo">4622</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4622"></a>
+<span class="sourceLineNo">4623</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4623"></a>
+<span class="sourceLineNo">4624</span>      throws IOException {<a name="line.4624"></a>
+<span class="sourceLineNo">4625</span>    long seqid = minSeqIdForTheRegion;<a name="line.4625"></a>
+<span class="sourceLineNo">4626</span>    if (LOG.isDebugEnabled()) {<a name="line.4626"></a>
+<span class="sourceLineNo">4627</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4627"></a>
+<span class="sourceLineNo">4628</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4628"></a>
+<span class="sourceLineNo">4629</span>    }<a name="line.4629"></a>
+<span class="sourceLineNo">4630</span><a name="line.4630"></a>
+<span class="sourceLineNo">4631</span>    if (files == null || files.isEmpty()) {<a name="line.4631"></a>
+<span class="sourceLineNo">4632</span>      return minSeqIdForTheRegion;<a name="line.4632"></a>
+<span class="sourceLineNo">4633</span>    }<a name="line.4633"></a>
+<span class="sourceLineNo">4634</span><a name="line.4634"></a>
+<span class="sourceLineNo">4635</span>    for (Path edits: files) {<a name="line.4635"></a>
+<span class="sourceLineNo">4636</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4636"></a>
+<span class="sourceLineNo">4637</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4637"></a>
+<span class="sourceLineNo">4638</span>        continue;<a name="line.4638"></a>
+<span class="sourceLineNo">4639</span>      }<a name="line.4639"></a>
+<span class="sourceLineNo">4640</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4640"></a>
+<span class="sourceLineNo">4641</span><a name="line.4641"></a>
+<span class="sourceLineNo">4642</span>      long maxSeqId;<a name="line.4642"></a>
+<span class="sourceLineNo">4643</span>      String fileName = edits.getName();<a name="line.4643"></a>
+<span class="sourceLineNo">4644</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4644"></a>
+<span class="sourceLineNo">4645</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4645"></a>
+<span class="sourceLineNo">4646</span>        if (LOG.isDebugEnabled()) {<a name="line.4646"></a>
+<span class="sourceLineNo">4647</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4647"></a>
+<span class="sourceLineNo">4648</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4648"></a>
+<span class="sourceLineNo">4649</span>              + ", skipped the whole file, path=" + edits;<a name="line.4649"></a>
+<span class="sourceLineNo">4650</span>          LOG.debug(msg);<a name="line.4650"></a>
+<span class="sourceLineNo">4651</span>        }<a name="line.4651"></a>
+<span class="sourceLineNo">4652</span>        continue;<a name="line.4652"></a>
+<span class="sourceLineNo">4653</span>      }<a name="line.4653"></a>
+<span class="sourceLineNo">4654</span><a name="line.4654"></a>
+<span class="sourceLineNo">4655</span>      try {<a name="line.4655"></a>
+<span class="sourceLineNo">4656</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4656"></a>
+<span class="sourceLineNo">4657</span>        // if seqId is greater<a name="line.4657"></a>
+<span class="sourceLineNo">4658</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4658"></a>
+<span class="sourceLineNo">4659</span>      } catch (IOException e) {<a name="line.4659"></a>
+<span class="sourceLineNo">4660</span>        boolean skipErrors = conf.getBoolean(<a name="line.4660"></a>
+<span class="sourceLineNo">4661</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4661"></a>
+<span class="sourceLineNo">4662</span>            conf.getBoolean(<a name="line.4662"></a>
+<span class="sourceLineNo">4663</span>                "hbase.skip.errors",<a name="line.4663"></a>
+<span class="sourceLineNo">4664</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4664"></a>
+<span class="sourceLineNo">4665</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4665"></a>
+<span class="sourceLineNo">4666</span>          LOG.warn(<a name="line.4666"></a>
+<span class="sourceLineNo">4667</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4667"></a>
+<span class="sourceLineNo">4668</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4668"></a>
+<span class="sourceLineNo">4669</span>        }<a name="line.4669"></a>
+<span class="sourceLineNo">4670</span>        if (skipErrors) {<a name="line.4670"></a>
+<span class="sourceLineNo">4671</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4671"></a>
+<span class="sourceLineNo">4672</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4672"></a>
+<span class="sourceLineNo">4673</span>              + "=true so continuing. Renamed " + edits +<a name="line.4673"></a>
+<span class="sourceLineNo">4674</span>              " as " + p, e);<a name="line.4674"></a>
+<span class="sourceLineNo">4675</span>        } else {<a name="line.4675"></a>
+<span class="sourceLineNo">4676</span>          throw e;<a name="line.4676"></a>
+<span class="sourceLineNo">4677</span>        }<a name="line.4677"></a>
+<span class="sourceLineNo">4678</span>      }<a name="line.4678"></a>
+<span class="sourceLineNo">4679</span>    }<a name="line.4679"></a>
+<span class="sourceLineNo">4680</span>    return seqid;<a name="line.4680"></a>
+<span class="sourceLineNo">4681</span>  }<a name="line.4681"></a>
 <span class="sourceLineNo">4682</span><a name="line.4682"></a>
-<span class="sourceLineNo">4683</span>    status.setStatus("Opening recovered edits");<a name="line.4683"></a>
-<span class="sourceLineNo">4684</span>    WAL.Reader reader = null;<a name="line.4684"></a>
-<span class="sourceLineNo">4685</span>    try {<a name="line.4685"></a>
-<span class="sourceLineNo">4686</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4686"></a>
-<span class="sourceLineNo">4687</span>      long currentEditSeqId = -1;<a name="line.4687"></a>
-<span class="sourceLineNo">4688</span>      long currentReplaySeqId = -1;<a name="line.4688"></a>
-<span class="sourceLineNo">4689</span>      long firstSeqIdInLog = -1;<a name="line.4689"></a>
-<span class="sourceLineNo">4690</span>      long skippedEdits = 0;<a name="line.4690"></a>
-<span class="sourceLineNo">4691</span>      long editsCount = 0;<a name="line.4691"></a>
-<span class="sourceLineNo">4692</span>      long intervalEdits = 0;<a name="line.4692"></a>
-<span class="sourceLineNo">4693</span>      WAL.Entry entry;<a name="line.4693"></a>
-<span class="sourceLineNo">4694</span>      HStore store = null;<a name="line.4694"></a>
-<span class="sourceLineNo">4695</span>      boolean reported_once = false;<a name="line.4695"></a>
-<span class="sourceLineNo">4696</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4696"></a>
-<span class="sourceLineNo">4697</span><a name="line.4697"></a>
-<span class="sourceLineNo">4698</span>      try {<a name="line.4698"></a>
-<span class="sourceLineNo">4699</span>        // How many edits seen before we check elapsed time<a name="line.4699"></a>
-<span class="sourceLineNo">4700</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4700"></a>
-<span class="sourceLineNo">4701</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4701"></a>
-<span class="sourceLineNo">4702</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4702"></a>
-<span class="sourceLineNo">4703</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4703"></a>
-<span class="sourceLineNo">4704</span><a name="line.4704"></a>
-<span class="sourceLineNo">4705</span>        if (coprocessorHost != null) {<a name="line.4705"></a>
-<span class="sourceLineNo">4706</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4706"></a>
-<span class="sourceLineNo">4707</span>        }<a name="line.4707"></a>
-<span class="sourceLineNo">4708</span><a name="line.4708"></a>
-<span class="sourceLineNo">4709</span>        while ((entry = reader.next()) != null) {<a name="line.4709"></a>
-<span class="sourceLineNo">4710</span>          WALKey key = entry.getKey();<a name="line.4710"></a>
-<span class="sourceLineNo">4711</span>          WALEdit val = entry.getEdit();<a name="line.4711"></a>
-<span class="sourceLineNo">4712</span><a name="line.4712"></a>
-<span class="sourceLineNo">4713</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4713"></a>
-<span class="sourceLineNo">4714</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4714"></a>
-<span class="sourceLineNo">4715</span>          }<a name="line.4715"></a>
-<span class="sourceLineNo">4716</span><a name="line.4716"></a>
-<span class="sourceLineNo">4717</span>          if (reporter != null) {<a name="line.4717"></a>
-<span class="sourceLineNo">4718</span>            intervalEdits += val.size();<a name="line.4718"></a>
-<span class="sourceLineNo">4719</span>            if (intervalEdits &gt;= interval) {<a name="line.4719"></a>
-<span class="sourceLineNo">4720</span>              // Number of edits interval reached<a name="line.4720"></a>
-<span class="sourceLineNo">4721</span>              intervalEdits = 0;<a name="line.4721"></a>
-<span class="sourceLineNo">4722</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4722"></a>
-<span class="sourceLineNo">4723</span>              if (lastReport + period &lt;= cur) {<a name="line.4723"></a>
-<span class="sourceLineNo">4724</span>                status.setStatus("Replaying edits..." +<a name="line.4724"></a>
-<span class="sourceLineNo">4725</span>                    " skipped=" + skippedEdits +<a name="line.4725"></a>
-<span class="sourceLineNo">4726</span>                    " edits=" + editsCount);<a name="line.4726"></a>
-<span class="sourceLineNo">4727</span>                // Timeout reached<a name="line.4727"></a>
-<span class="sourceLineNo">4728</span>                if(!reporter.progress()) {<a name="line.4728"></a>
-<span class="sourceLineNo">4729</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4729"></a>
-<span class="sourceLineNo">4730</span>                  LOG.warn(msg);<a name="line.4730"></a>
-<span class="sourceLineNo">4731</span>                  status.abort(msg);<a name="line.4731"></a>
-<span class="sourceLineNo">4732</span>                  throw new IOException(msg);<a name="line.4732"></a>
-<span class="sourceLineNo">4733</span>                }<a name="line.4733"></a>
-<span class="sourceLineNo">4734</span>                reported_once = true;<a name="line.4734"></a>
-<span class="sourceLineNo">4735</span>                lastReport = cur;<a name="line.4735"></a>
-<span class="sourceLineNo">4736</span>              }<a name="line.4736"></a>
-<span class="sourceLineNo">4737</span>            }<a name="line.4737"></a>
-<span class="sourceLineNo">4738</span>          }<a name="line.4738"></a>
-<span class="sourceLineNo">4739</span><a name="line.4739"></a>
-<span class="sourceLineNo">4740</span>          if (firstSeqIdInLog == -1) {<a name="line.4740"></a>
-<span class="sourceLineNo">4741</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4741"></a>
-<span class="sourceLineNo">4742</span>          }<a name="line.4742"></a>
-<span class="sourceLineNo">4743</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4743"></a>
-<span class="sourceLineNo">4744</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4744"></a>
-<span class="sourceLineNo">4745</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4745"></a>
-<span class="sourceLineNo">4746</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4746"></a>
-<span class="sourceLineNo">4747</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4747"></a>
-<span class="sourceLineNo">4748</span>                + "; edit=" + val);<a name="line.4748"></a>
-<span class="sourceLineNo">4749</span>          } else {<a name="line.4749"></a>
-<span class="sourceLineNo">4750</span>            currentEditSeqId = key.getSequenceId();<a name="line.4750"></a>
-<span class="sourceLineNo">4751</span>          }<a name="line.4751"></a>
-<span class="sourceLineNo">4752</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4752"></a>
-<span class="sourceLineNo">4753</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4753"></a>
-<span class="sourceLineNo">4754</span><a name="line.4754"></a>
-<span class="sourceLineNo">4755</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4755"></a>
-<span class="sourceLineNo">4756</span>          // instead of a KeyValue.<a name="line.4756"></a>
-<span class="sourceLineNo">4757</span>          if (coprocessorHost != null) {<a name="line.4757"></a>
-<span class="sourceLineNo">4758</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4758"></a>
-<span class="sourceLineNo">4759</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4759"></a>
-<span class="sourceLineNo">4760</span>              // if bypass this wal entry, ignore it ...<a name="line.4760"></a>
-<span class="sourceLineNo">4761</span>              continue;<a name="line.4761"></a>
-<span class="sourceLineNo">4762</span>            }<a name="line.4762"></a>
-<span class="sourceLineNo">4763</span>          }<a name="line.4763"></a>
-<span class="sourceLineNo">4764</span>          boolean checkRowWithinBoundary = false;<a name="line.4764"></a>
-<span class="sourceLineNo">4765</span>          // Check this edit is for this region.<a name="line.4765"></a>
-<span class="sourceLineNo">4766</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4766"></a>
-<span class="sourceLineNo">4767</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4767"></a>
-<span class="sourceLineNo">4768</span>            checkRowWithinBoundary = true;<a name="line.4768"></a>
-<span class="sourceLineNo">4769</span>          }<a name="line.4769"></a>
+<span class="sourceLineNo">4683</span>  /*<a name="line.4683"></a>
+<span class="sourceLineNo">4684</span>   * @param edits File of recovered edits.<a name="line.4684"></a>
+<span class="sourceLineNo">4685</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4685"></a>
+<span class="sourceLineNo">4686</span>   * must be larger than this to be replayed for each store.<a name="line.4686"></a>
+<span class="sourceLineNo">4687</span>   * @param reporter<a name="line.4687"></a>
+<span class="sourceLineNo">4688</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4688"></a>
+<span class="sourceLineNo">4689</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4689"></a>
+<span class="sourceLineNo">4690</span>   * @throws IOException<a name="line.4690"></a>
+<span class="sourceLineNo">4691</span>   */<a name="line.4691"></a>
+<span class="sourceLineNo">4692</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4692"></a>
+<span class="sourceLineNo">4693</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4693"></a>
+<span class="sourceLineNo">4694</span>    throws IOException {<a name="line.4694"></a>
+<span class="sourceLineNo">4695</span>    String msg = "Replaying edits from " + edits;<a name="line.4695"></a>
+<span class="sourceLineNo">4696</span>    LOG.info(msg);<a name="line.4696"></a>
+<span class="sourceLineNo">4697</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4697"></a>
+<span class="sourceLineNo">4698</span><a name="line.4698"></a>
+<span class="sourceLineNo">4699</span>    status.setStatus("Opening recovered edits");<a name="line.4699"></a>
+<span class="sourceLineNo">4700</span>    WAL.Reader reader = null;<a name="line.4700"></a>
+<span class="sourceLineNo">4701</span>    try {<a name="line.4701"></a>
+<span class="sourceLineNo">4702</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4702"></a>
+<span class="sourceLineNo">4703</span>      long currentEditSeqId = -1;<a name="line.4703"></a>
+<span class="sourceLineNo">4704</span>      long currentReplaySeqId = -1;<a name="line.4704"></a>
+<span class="sourceLineNo">4705</span>      long firstSeqIdInLog = -1;<a name="line.4705"></a>
+<span class="sourceLineNo">4706</span>      long skippedEdits = 0;<a name="line.4706"></a>
+<span class="sourceLineNo">4707</span>      long editsCount = 0;<a name="line.4707"></a>
+<span class="sourceLineNo">4708</span>      long intervalEdits = 0;<a name="line.4708"></a>
+<span class="sourceLineNo">4709</span>      WAL.Entry entry;<a name="line.4709"></a>
+<span class="sourceLineNo">4710</span>      HStore store = null;<a name="line.4710"></a>
+<span class="sourceLineNo">4711</span>      boolean reported_once = false;<a name="line.4711"></a>
+<span class="sourceLineNo">4712</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4712"></a>
+<span class="sourceLineNo">4713</span><a name="line.4713"></a>
+<span class="sourceLineNo">4714</span>      try {<a name="line.4714"></a>
+<span class="sourceLineNo">4715</span>        // How many edits seen before we check elapsed time<a name="line.4715"></a>
+<span class="sourceLineNo">4716</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4716"></a>
+<span class="sourceLineNo">4717</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4717"></a>
+<span class="sourceLineNo">4718</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4718"></a>
+<span class="sourceLineNo">4719</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4719"></a>
+<span class="sourceLineNo">4720</span><a name="line.4720"></a>
+<span class="sourceLineNo">4721</span>        if (coprocessorHost != null) {<a name="line.4721"></a>
+<span class="sourceLineNo">4722</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4722"></a>
+<span class="sourceLineNo">4723</span>        }<a name="line.4723"></a>
+<span class="sourceLineNo">4724</span><a name="line.4724"></a>
+<span class="sourceLineNo">4725</span>        while ((entry = reader.next()) != null) {<a name="line.4725"></a>
+<span class="sourceLineNo">4726</span>          WALKey key = entry.getKey();<a name="line.4726"></a>
+<span class="sourceLineNo">4727</span>          WALEdit val = entry.getEdit();<a name="line.4727"></a>
+<span class="sourceLineNo">4728</span><a name="line.4728"></a>
+<span class="sourceLineNo">4729</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4729"></a>
+<span class="sourceLineNo">4730</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4730"></a>
+<span class="sourceLineNo">4731</span>          }<a name="line.4731"></a>
+<span class="sourceLineNo">4732</span><a name="line.4732"></a>
+<span class="sourceLineNo">4733</span>          if (reporter != null) {<a name="line.4733"></a>
+<span class="sourceLineNo">4734</span>            intervalEdits += val.size();<a name="line.4734"></a>
+<span class="sourceLineNo">4735</span>            if (intervalEdits &gt;= interval) {<a name="line.4735"></a>
+<span class="sourceLineNo">4736</span>              // Number of edits interval reached<a name="line.4736"></a>
+<span class="sourceLineNo">4737</span>              intervalEdits = 0;<a name="line.4737"></a>
+<span class="sourceLineNo">4738</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4738"></a>
+<span class="sourceLineNo">4739</span>              if (lastReport + period &lt;= cur) {<a name="line.4739"></a>
+<span class="sourceLineNo">4740</span>                status.setStatus("Replaying edits..." +<a name="line.4740"></a>
+<span class="sourceLineNo">4741</span>                    " skipped=" + skippedEdits +<a name="line.4741"></a>
+<span class="sourceLineNo">4742</span>                    " edits=" + editsCount);<a name="line.4742"></a>
+<span class="sourceLineNo">4743</span>                // Timeout reached<a name="line.4743"></a>
+<span class="sourceLineNo">4744</span>                if(!reporter.progress()) {<a name="line.4744"></a>
+<span class="sourceLineNo">4745</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4745"></a>
+<span class="sourceLineNo">4746</span>                  LOG.warn(msg);<a name="line.4746"></a>
+<span class="sourceLineNo">4747</span>                  status.abort(msg);<a name="line.4747"></a>
+<span class="sourceLineNo">4748</span>                  throw new IOException(msg);<a name="line.4748"></a>
+<span class="sourceLineNo">4749</span>                }<a name="line.4749"></a>
+<span class="sourceLineNo">4750</span>                reported_once = true;<a name="line.4750"></a>
+<span class="sourceLineNo">4751</span>                lastReport = cur;<a name="line.4751"></a>
+<span class="sourceLineNo">4752</span>              }<a name="line.4752"></a>
+<span class="sourceLineNo">4753</span>            }<a name="line.4753"></a>
+<span class="sourceLineNo">4754</span>          }<a name="line.4754"></a>
+<span class="sourceLineNo">4755</span><a name="line.4755"></a>
+<span class="sourceLineNo">4756</span>          if (firstSeqIdInLog == -1) {<a name="line.4756"></a>
+<span class="sourceLineNo">4757</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4757"></a>
+<span class="sourceLineNo">4758</span>          }<a name="line.4758"></a>
+<span class="sourceLineNo">4759</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4759"></a>
+<span class="sourceLineNo">4760</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4760"></a>
+<span class="sourceLineNo">4761</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4761"></a>
+<span class="sourceLineNo">4762</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4762"></a>
+<span class="sourceLineNo">4763</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4763"></a>
+<span class="sourceLineNo">4764</span>                + "; edit=" + val);<a name="line.4764"></a>
+<span class="sourceLineNo">4765</span>          } else {<a name="line.4765"></a>
+<span class="sourceLineNo">4766</span>            currentEditSeqId = key.getSequenceId();<a name="line.4766"></a>
+<span class="sourceLineNo">4767</span>          }<a name="line.4767"></a>
+<span class="sourceLineNo">4768</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4768"></a>
+<span class="sourceLineNo">4769</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4769"></a>
 <span class="sourceLineNo">4770</span><a name="line.4770"></a>
-<span class="sourceLineNo">4771</span>          boolean flush = false;<a name="line.4771"></a>
-<span class="sourceLineNo">4772</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4772"></a>
-<span class="sourceLineNo">4773</span>          for (Cell cell: val.getCells()) {<a name="line.4773"></a>
-<span class="sourceLineNo">4774</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4774"></a>
-<span class="sourceLineNo">4775</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4775"></a>
-<span class="sourceLineNo">4776</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4776"></a>
-<span class="sourceLineNo">4777</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4777"></a>
-<span class="sourceLineNo">4778</span>              if (!checkRowWithinBoundary) {<a name="line.4778"></a>
-<span class="sourceLineNo">4779</span>                //this is a special edit, we should handle it<a name="line.4779"></a>
-<span class="sourceLineNo">4780</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4780"></a>
-<span class="sourceLineNo">4781</span>                if (compaction != null) {<a name="line.4781"></a>
-<span class="sourceLineNo">4782</span>                  //replay the compaction<a name="line.4782"></a>
-<span class="sourceLineNo">4783</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4783"></a>
-<span class="sourceLineNo">4784</span>                }<a name="line.4784"></a>
-<span class="sourceLineNo">4785</span>              }<a name="line.4785"></a>
-<span class="sourceLineNo">4786</span>              skippedEdits++;<a name="line.4786"></a>
-<span class="sourceLineNo">4787</span>              continue;<a name="line.4787"></a>
-<span class="sourceLineNo">4788</span>            }<a name="line.4788"></a>
-<span class="sourceLineNo">4789</span>            // Figure which store the edit is meant for.<a name="line.4789"></a>
-<span class="sourceLineNo">4790</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4790"></a>
-<span class="sourceLineNo">4791</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4791"></a>
-<span class="sourceLineNo">4792</span>              store = getStore(cell);<a name="line.4792"></a>
-<span class="sourceLineNo">4793</span>            }<a name="line.4793"></a>
-<span class="sourceLineNo">4794</span>            if (store == null) {<a name="line.4794"></a>
-<span class="sourceLineNo">4795</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4795"></a>
-<span class="sourceLineNo">4796</span>              // crash and redeploy?<a name="line.4796"></a>
-<span class="sourceLineNo">4797</span>              LOG.warn("No family for " + cell);<a name="line.4797"></a>
-<span class="sourceLineNo">4798</span>              skippedEdits++;<a name="line.4798"></a>
-<span class="sourceLineNo">4799</span>              continue;<a name="line.4799"></a>
-<span class="sourceLineNo">4800</span>            }<a name="line.4800"></a>
-<span class="sourceLineNo">4801</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4801"></a>
-<span class="sourceLineNo">4802</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4802"></a>
-<span class="sourceLineNo">4803</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4803"></a>
-<span class="sourceLineNo">4804</span>              skippedEdits++;<a name="line.4804"></a>
-<span class="sourceLineNo">4805</span>              continue;<a name="line.4805"></a>
-<span class="sourceLineNo">4806</span>            }<a name="line.4806"></a>
-<span class="sourceLineNo">4807</span>            // Now, figure if we should skip this edit.<a name="line.4807"></a>
-<span class="sourceLineNo">4808</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4808"></a>
-<span class="sourceLineNo">4809</span>                .getName())) {<a name="line.4809"></a>
-<span class="sourceLineNo">4810</span>              skippedEdits++;<a name="line.4810"></a>
-<span class="sourceLineNo">4811</span>              continue;<a name="line.4811"></a>
-<span class="sourceLineNo">4812</span>            }<a name="line.4812"></a>
-<span class="sourceLineNo">4813</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4813"></a>
-<span class="sourceLineNo">4814</span><a name="line.4814"></a>
-<span class="sourceLineNo">4815</span>            restoreEdit(store, cell, memStoreSizing);<a name="line.4815"></a>
-<span class="sourceLineNo">4816</span>            editsCount++;<a name="line.4816"></a>
-<span class="sourceLineNo">4817</span>          }<a name="line.4817"></a>
-<span class="sourceLineNo">4818</span>          MemStoreSize mss = memStoreSizing.getMemStoreSize();<a name="line.4818"></a>
-<span class="sourceLineNo">4819</span>          incMemStoreSize(mss);<a name="line.4819"></a>
-<span class="sourceLineNo">4820</span>          flush = isFlushSize(this.memStoreSizing.getMemStoreSize());<a name="line.4820"></a>
-<span class="sourceLineNo">4821</span>          if (flush) {<a name="line.4821"></a>
-<span class="sourceLineNo">4822</span>            internalFlushcache(null, currentEditSeqId, stores.values(), status, false,<a name="line.4822"></a>
-<span class="sourceLineNo">4823</span>              FlushLifeCycleTracker.DUMMY);<a name="line.4823"></a>
-<span class="sourceLineNo">4824</span>          }<a name="line.4824"></a>
-<span class="sourceLineNo">4825</span><a name="line.4825"></a>
-<span class="sourceLineNo">4826</span>          if (coprocessorHost != null) {<a name="line.4826"></a>
-<span class="sourceLineNo">4827</span>            coprocessorHost.postWALRestore(this.getRegionInfo(), key, val);<a name="line.4827"></a>
-<span class="sourceLineNo">4828</span>          }<a name="line.4828"></a>
-<span class="sourceLineNo">4829</span>        }<a name="line.4829"></a>
+<span class="sourceLineNo">4771</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4771"></a>
+<span class="sourceLineNo">4772</span>          // instead of a KeyValue.<a name="line.4772"></a>
+<span class="sourceLineNo">4773</span>          if (coprocessorHost != null) {<a name="line.4773"></a>
+<span class="sourceLineNo">4774</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4774"></a>
+<span class="sourceLineNo">4775</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4775"></a>
+<span class="sourceLineNo">4776</span>              // if bypass this wal entry, ignore it ...<a name="line.4776"></a>
+<span class="sourceLineNo">4777</span>              continue;<a name="line.4777"></a>
+<span class="sourceLineNo">4778</span>            }<a name="line.4778"></a>
+<span class="sourceLineNo">4779</span>          }<a name="line.4779"></a>
+<span class="sourceLineNo">4780</span>          boolean checkRowWithinBoundary = false;<a name="line.4780"></a>
+<span class="sourceLineNo">4781</span>          // Check this edit is for this region.<a name="line.4781"></a>
+<span class="sourceLineNo">4782</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4782"></a>
+<span class="sourceLineNo">4783</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4783"></a>
+<span class="sourceLineNo">4784</span>            checkRowWithinBoundary = true;<a name="line.4784"></a>
+<span class="sourceLineNo">4785</span>          }<a name="line.4785"></a>
+<span class="sourceLineNo">4786</span><a name="line.4786"></a>
+<span class="sourceLineNo">4787</span>          boolean flush = false;<a name="line.4787"></a>
+<span class="sourceLineNo">4788</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4788"></a>
+<span class="sourceLineNo">4789</span>          for (Cell cell: val.getCells()) {<a name="line.4789"></a>
+<span class="sourceLineNo">4790</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4790"></a>
+<span class="sourceLineNo">4791</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4791"></a>
+<span class="sourceLineNo">4792</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4792"></a>
+<span class="sourceLineNo">4793</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4793"></a>
+<span class="sourceLineNo">4794</span>              if (!checkRowWithinBoundary) {<a name="line.4794"></a>
+<span class="sourceLineNo">4795</span>                //this is a special edit, we should handle it<a name="line.4795"></a>
+<span class="sourceLineNo">4796</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4796"></a>
+<span class="sourceLineNo">4797</span>                if (compaction != null) {<a name="line.4797"></a>
+<span class="sourceLineNo">4798</span>                  //replay the compaction<a name="line.4798"></a>
+<span class="sourceLineNo">4799</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4799"></a>
+<span class="sourceLineNo">4800</span>                }<a name="line.4800"></a>
+<span class="sourceLineNo">4801</span>              }<a name="line.4801"></a>
+<span class="sourceLineNo">4802</span>              skippedEdits++;<a name="line.4802"></a>
+<span class="sourceLineNo">4803</span>              continue;<a name="line.4803"></a>
+<span class="sourceLineNo">4804</span>            }<a name="line.4804"></a>
+<span class="sourceLineNo">4805</span>            // Figure which store the edit is meant for.<a name="line.4805"></a>
+<span class="sourceLineNo">4806</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4806"></a>
+<span class="sourceLineNo">4807</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4807"></a>
+<span class="sourceLineNo">4808</span>              store = getStore(cell);<a name="line.4808"></a>
+<span class="sourceLineNo">4809</span>            }<a name="line.4809"></a>
+<span class="sourceLineNo">4810</span>            if (store == null) {<a name="line.4810"></a>
+<span class="sourceLineNo">4811</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4811"></a>
+<span class="sourceLineNo">4812</span>              // crash and redeploy?<a name="line.4812"></a>
+<span class="sourceLineNo">4813</span>              LOG.warn("No family for " + cell);<a name="line.4813"></a>
+<span class="sourceLineNo">4814</span>              skippedEdits++;<a name="line.4814"></a>
+<span class="sourceLineNo">4815</span>              continue;<a name="line.4815"></a>
+<span class="sourceLineNo">4816</span>            }<a name="line.4816"></a>
+<span class="sourceLineNo">4817</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4817"></a>
+<span class="sourceLineNo">4818</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4818"></a>
+<span class="sourceLineNo">4819</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4819"></a>
+<span class="sourceLineNo">4820</span>              skippedEdits++;<a name="line.4820"></a>
+<span class="sourceLineNo">4821</span>              continue;<a name="line.4821"></a>
+<span class="sourceLineNo">4822</span>            }<a name="line.4822"></a>
+<span class="sourceLineNo">4823</span>            // Now, figure if we should skip this edit.<a name="line.4823"></a>
+<span class="sourceLineNo">4824</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4824"></a>
+<span class="sourceLineNo">4825</span>                .getName())) {<a name="line.4825"></a>
+<span class="sourceLineNo">4826</span>              skippedEdits++;<a name="line.4826"></a>
+<span class="sourceLineNo">4827</span>              continue;<a name="line.4827"></a>
+<span class="sourceLineNo">4828</span>            }<a name="line.4828"></a>
+<span class="sourceLineNo">4829</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4829"></a>
 <span class="sourceLineNo">4830</span><a name="line.4830"></a>
-<span class="sourceLineNo">4831</span>        if (coprocessorHost != null) {<a name="line.4831"></a>
-<span class="sourceLineNo">4832</span>          coprocessorHost.postReplayWALs(this.getRegionInfo(), edits);<a name="line.4832"></a>
-<span class="sourceLineNo">4833</span>        }<a name="line.4833"></a>
-<span class="sourceLineNo">4834</span>      } catch (EOFException eof) {<a name="line.4834"></a>
-<span class="sourceLineNo">4835</span>        Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4835"></a>
-<span class="sourceLineNo">4836</span>        msg = "EnLongAddered EOF. Most likely due to Master failure during " +<a name="line.4836"></a>
-<span class="sourceLineNo">4837</span>            "wal splitting, so we have this data in another edit.  " +<a name="line.4837"></a>
-<span class="sourceLineNo">4838</span>            "Continuing, but renaming " + edits + " as " + p;<a name="line.4838"></a>
-<span class="sourceLineNo">4839</span>        LOG.warn(msg, eof);<a name="line.4839"></a>
-<span class="sourceLineNo">4840</span>        status.abort(msg);<a name="line.4840"></a>
-<span class="sourceLineNo">4841</span>      } catch (IOException ioe) {<a name="line.4841"></a>
-<span class="sourceLineNo">4842</span>        // If the IOE resulted from bad file format,<a name="line.4842"></a>
-<span class="sourceLineNo">4843</span>        // then this problem is idempotent and retrying won't help<a name="line.4843"></a>
-<span class="sourceLineNo">4844</span>        if (ioe.getCause() instanceof ParseException) {<a name="line.4844"></a>
-<span class="sourceLineNo">4845</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4845"></a>
-<span class="sourceLineNo">4846</span>          msg = "File corruption enLongAddered!  " +<a name="line.4846"></a>
-<span class="sourceLineNo">4847</span>              "Continuing, but renaming " + edits + " as " + p;<a name="line.4847"></a>
-<span class="sourceLineNo">4848</span>          LOG.warn(msg, ioe);<a name="line.4848"></a>
-<span class="sourceLineNo">4849</span>          status.setStatus(msg);<a name="line.4849"></a>
-<span class="sourceLineNo">4850</span>        } else {<a name="line.4850"></a>
-<span class="sourceLineNo">4851</span>          status.abort(StringUtils.stringifyException(ioe));<a name="line.4851"></a>
-<span class="sourceLineNo">4852</span>          // other IO errors may be transient (bad network connection,<a name="line.4852"></a>
-<span class="sourceLineNo">4853</span>          // checksum exception on one datanode, etc).  throw &amp; retry<a name="line.4853"></a>
-<span class="sourceLineNo">4854</span>          throw ioe;<a name="line.4854"></a>
-<span class="sourceLineNo">4855</span>        }<a name="line.4855"></a>
-<span class="sourceLineNo">4856</span>      }<a name="line.4856"></a>
-<span class="sourceLineNo">4857</span>      if (reporter != null &amp;&amp; !reported_once) {<a name="line.4857"></a>
-<span class="sourceLineNo">4858</span>        reporter.progress();<a name="line.4858"></a>
-<span class="sourceLineNo">4859</span>      }<a name="line.4859"></a>
-<span class="sourceLineNo">4860</span>      msg = "Applied " + editsCount + ", skipped " + skippedEdits +<a name="line.4860"></a>
-<span class="sourceLineNo">4861</span>        ", firstSequenceIdInLog=" + firstSeqIdInLog +<a name="line.4861"></a>
-<span class="sourceLineNo">4862</span>        ", maxSequenceIdInLog=" + currentEditSeqId + ", path=" + edits;<a name="line.4862"></a>
-<span class="sourceLineNo">4863</span>      status.markComplete(msg);<a name="line.4863"></a>
-<span class="sourceLineNo">4864</span>      LOG.debug(msg);<a name="line.4864"></a>
-<span class="sourceLineNo">4865</span>      return currentEditSeqId;<a name="line.4865"></a>
-<span class="sourceLineNo">4866</span>    } finally {<a name="line.4866"></a>
-<span class="sourceLineNo">4867</span>      status.cleanup();<a name="line.4867"></a>
-<span class="sourceLineNo">4868</span>      if (reader != null) {<a name="line.4868"></a>
-<span class="sourceLineNo">4869</span>         reader.close();<a name="line.4869"></a>
-<span class="sourceLineNo">4870</span>      }<a name="line.4870"></a>
-<span class="sourceLineNo">4871</span>    }<a name="line.4871"></a>
-<span class="sourceLineNo">4872</span>  }<a name="line.4872"></a>
-<span class="sourceLineNo">4873</span><a name="line.4873"></a>
-<span class="sourceLineNo">4874</span>  /**<a name="line.4874"></a>
-<span class="sourceLineNo">4875</span>   * Call to complete a compaction. Its for the case where we find in the WAL a compaction<a name="line.4875"></a>
-<span class="sourceLineNo">4876</span>   * that was not finished.  We could find one recovering a WAL after a regionserver crash.<a name="line.4876"></a>
-<span class="sourceLineNo">4877</span>   * See HBASE-2331.<a name="line.4877"></a>
-<span class="sourceLineNo">4878</span>   */<a name="line.4878"></a>
-<span class="sourceLineNo">4879</span>  void replayWALCompactionMarker(CompactionDescriptor compaction, boolean pickCompactionFiles,<a name="line.4879"></a>
-<span class="sourceLineNo">4880</span>      boolean removeFiles, long replaySeqId)<a name="line.4880"></a>
-<span class="sourceLineNo">4881</span>      throws IOException {<a name="line.4881"></a>
-<span class="sourceLineNo">4882</span>    try {<a name="line.4882"></a>
-<span class="sourceLineNo">4883</span>      checkTargetRegion(compaction.getEncodedRegionName().toByteArray(),<a name="line.4883"></a>
-<span class="sourceLineNo">4884</span>        "Compaction marker from WAL ", compaction);<a name="line.4884"></a>
-<span class="sourceLineNo">4885</span>    } catch (WrongRegionException wre) {<a name="line.4885"></a>
-<span class="sourceLineNo">4886</span>      if (RegionReplicaUtil.isDefaultReplica(this.getRegionInfo())) {<a name="line.4886"></a>
-<span class="sourceLineNo">4887</span>        // skip the compaction marker since it is not for this region<a name="line.4887"></a>
-<span class="sourceLineNo">4888</span>        return;<a name="line.4888"></a>
-<span class="sourceLineNo">4889</span>      }<a name="line.4889"></a>
-<span class="sourceLineNo">4890</span>      throw wre;<a name="line.4890"></a>
-<span class="sourceLineNo">4891</span>    }<a name="line.4891"></a>
-<span class="sourceLineNo">4892</span><a name="line.4892"></a>
-<span class="sourceLineNo">4893</span>    synchronized (writestate) {<a name="line.4893"></a>
-<span class="sourceLineNo">4894</span>      if (replaySeqId &lt; lastReplayedOpenRegionSeqId) {<a name="line.4894"></a>
-<span class="sourceLineNo">4895</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4895"></a>
-<span class="sourceLineNo">4896</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4896"></a>
-<span class="sourceLineNo">4897</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4897"></a>
-<span class="sourceLineNo">4898</span>            + "lastReplayedOpenRegionSeqId of " + lastReplayedOpenRegionSeqId);<a name="line.4898"></a>
-<span class="sourceLineNo">4899</span>        return;<a name="line.4899"></a>
-<span class="sourceLineNo">4900</span>      }<a name="line.4900"></a>
-<span class="sourceLineNo">4901</span>      if (replaySeqId &lt; lastReplayedCompactionSeqId) {<a name="line.4901"></a>
-<span class="sourceLineNo">4902</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4902"></a>
-<span class="sourceLineNo">4903</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4903"></a>
-<span class="sourceLineNo">4904</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4904"></a>
-<span class="sourceLineNo">4905</span>            + "lastReplayedCompactionSeqId of " + lastReplayedCompactionSeqId);<a name="line.4905"></a>
-<span class="sourceLineNo">4906</span>        return;<a name="line.4906"></a>
-<span class="sourceLineNo">4907</span>      } else {<a name="line.4907"></a>
-<span class="sourceLineNo">4908</span>        lastReplayedCompactionSeqId = replaySeqId;<a name="line.4908"></a>
-<span class="sourceLin

<TRUNCATED>

[19/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 da040ad..d6702a7 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
@@ -2957,7 +2957,7 @@
 <span class="sourceLineNo">2949</span>        if(family == null) {<a name="line.2949"></a>
 <span class="sourceLineNo">2950</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2950"></a>
 <span class="sourceLineNo">2951</span>        }<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>        checkFamily(family);<a name="line.2952"></a>
+<span class="sourceLineNo">2952</span>        checkFamily(family, delete.getDurability());<a name="line.2952"></a>
 <span class="sourceLineNo">2953</span>      }<a name="line.2953"></a>
 <span class="sourceLineNo">2954</span>    }<a name="line.2954"></a>
 <span class="sourceLineNo">2955</span>  }<a name="line.2955"></a>
@@ -3569,7 +3569,7 @@
 <span class="sourceLineNo">3561</span><a name="line.3561"></a>
 <span class="sourceLineNo">3562</span>    @Override<a name="line.3562"></a>
 <span class="sourceLineNo">3563</span>    public void checkAndPreparePut(Put p) throws IOException {<a name="line.3563"></a>
-<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet());<a name="line.3564"></a>
+<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet(), p.getDurability());<a name="line.3564"></a>
 <span class="sourceLineNo">3565</span>    }<a name="line.3565"></a>
 <span class="sourceLineNo">3566</span><a name="line.3566"></a>
 <span class="sourceLineNo">3567</span>    @Override<a name="line.3567"></a>
@@ -4462,4304 +4462,4307 @@
 <span class="sourceLineNo">4454</span>    store.add(cell, memstoreAccounting);<a name="line.4454"></a>
 <span class="sourceLineNo">4455</span>  }<a name="line.4455"></a>
 <span class="sourceLineNo">4456</span><a name="line.4456"></a>
-<span class="sourceLineNo">4457</span>  /**<a name="line.4457"></a>
-<span class="sourceLineNo">4458</span>   * Check the collection of families for validity.<a name="line.4458"></a>
-<span class="sourceLineNo">4459</span>   * @param families<a name="line.4459"></a>
-<span class="sourceLineNo">4460</span>   * @throws NoSuchColumnFamilyException<a name="line.4460"></a>
-<span class="sourceLineNo">4461</span>   */<a name="line.4461"></a>
-<span class="sourceLineNo">4462</span>  public void checkFamilies(Collection&lt;byte[]&gt; families) throws NoSuchColumnFamilyException {<a name="line.4462"></a>
-<span class="sourceLineNo">4463</span>    for (byte[] family : families) {<a name="line.4463"></a>
-<span class="sourceLineNo">4464</span>      checkFamily(family);<a name="line.4464"></a>
-<span class="sourceLineNo">4465</span>    }<a name="line.4465"></a>
-<span class="sourceLineNo">4466</span>  }<a name="line.4466"></a>
-<span class="sourceLineNo">4467</span><a name="line.4467"></a>
-<span class="sourceLineNo">4468</span>  /**<a name="line.4468"></a>
-<span class="sourceLineNo">4469</span>   * Check the collection of families for valid timestamps<a name="line.4469"></a>
-<span class="sourceLineNo">4470</span>   * @param familyMap<a name="line.4470"></a>
-<span class="sourceLineNo">4471</span>   * @param now current timestamp<a name="line.4471"></a>
-<span class="sourceLineNo">4472</span>   * @throws FailedSanityCheckException<a name="line.4472"></a>
-<span class="sourceLineNo">4473</span>   */<a name="line.4473"></a>
-<span class="sourceLineNo">4474</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4474"></a>
-<span class="sourceLineNo">4475</span>      throws FailedSanityCheckException {<a name="line.4475"></a>
-<span class="sourceLineNo">4476</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4476"></a>
-<span class="sourceLineNo">4477</span>      return;<a name="line.4477"></a>
-<span class="sourceLineNo">4478</span>    }<a name="line.4478"></a>
-<span class="sourceLineNo">4479</span>    long maxTs = now + timestampSlop;<a name="line.4479"></a>
-<span class="sourceLineNo">4480</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4480"></a>
-<span class="sourceLineNo">4481</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4481"></a>
-<span class="sourceLineNo">4482</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4482"></a>
-<span class="sourceLineNo">4483</span>      assert kvs instanceof RandomAccess;<a name="line.4483"></a>
-<span class="sourceLineNo">4484</span>      int listSize  = kvs.size();<a name="line.4484"></a>
-<span class="sourceLineNo">4485</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4485"></a>
-<span class="sourceLineNo">4486</span>        Cell cell = kvs.get(i);<a name="line.4486"></a>
-<span class="sourceLineNo">4487</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4487"></a>
-<span class="sourceLineNo">4488</span>        long ts = cell.getTimestamp();<a name="line.4488"></a>
-<span class="sourceLineNo">4489</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4489"></a>
-<span class="sourceLineNo">4490</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4490"></a>
-<span class="sourceLineNo">4491</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4491"></a>
-<span class="sourceLineNo">4492</span>        }<a name="line.4492"></a>
-<span class="sourceLineNo">4493</span>      }<a name="line.4493"></a>
+<span class="sourceLineNo">4457</span>  private void checkFamilies(Collection&lt;byte[]&gt; families, Durability durability)<a name="line.4457"></a>
+<span class="sourceLineNo">4458</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4458"></a>
+<span class="sourceLineNo">4459</span>    for (byte[] family : families) {<a name="line.4459"></a>
+<span class="sourceLineNo">4460</span>      checkFamily(family, durability);<a name="line.4460"></a>
+<span class="sourceLineNo">4461</span>    }<a name="line.4461"></a>
+<span class="sourceLineNo">4462</span>  }<a name="line.4462"></a>
+<span class="sourceLineNo">4463</span><a name="line.4463"></a>
+<span class="sourceLineNo">4464</span>  private void checkFamily(final byte[] family, Durability durability)<a name="line.4464"></a>
+<span class="sourceLineNo">4465</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4465"></a>
+<span class="sourceLineNo">4466</span>    checkFamily(family);<a name="line.4466"></a>
+<span class="sourceLineNo">4467</span>    if (durability.equals(Durability.SKIP_WAL)<a name="line.4467"></a>
+<span class="sourceLineNo">4468</span>        &amp;&amp; htableDescriptor.getColumnFamily(family).getScope()<a name="line.4468"></a>
+<span class="sourceLineNo">4469</span>        != HConstants.REPLICATION_SCOPE_LOCAL) {<a name="line.4469"></a>
+<span class="sourceLineNo">4470</span>      throw new InvalidMutationDurabilityException(<a name="line.4470"></a>
+<span class="sourceLineNo">4471</span>          "Mutation's durability is SKIP_WAL but table's column family " + Bytes.toString(family)<a name="line.4471"></a>
+<span class="sourceLineNo">4472</span>              + " need replication");<a name="line.4472"></a>
+<span class="sourceLineNo">4473</span>    }<a name="line.4473"></a>
+<span class="sourceLineNo">4474</span>  }<a name="line.4474"></a>
+<span class="sourceLineNo">4475</span><a name="line.4475"></a>
+<span class="sourceLineNo">4476</span>  void checkFamily(final byte[] family) throws NoSuchColumnFamilyException {<a name="line.4476"></a>
+<span class="sourceLineNo">4477</span>    if (!this.htableDescriptor.hasColumnFamily(family)) {<a name="line.4477"></a>
+<span class="sourceLineNo">4478</span>      throw new NoSuchColumnFamilyException(<a name="line.4478"></a>
+<span class="sourceLineNo">4479</span>          "Column family " + Bytes.toString(family) + " does not exist in region " + this<a name="line.4479"></a>
+<span class="sourceLineNo">4480</span>              + " in table " + this.htableDescriptor);<a name="line.4480"></a>
+<span class="sourceLineNo">4481</span>    }<a name="line.4481"></a>
+<span class="sourceLineNo">4482</span>  }<a name="line.4482"></a>
+<span class="sourceLineNo">4483</span><a name="line.4483"></a>
+<span class="sourceLineNo">4484</span>  /**<a name="line.4484"></a>
+<span class="sourceLineNo">4485</span>   * Check the collection of families for valid timestamps<a name="line.4485"></a>
+<span class="sourceLineNo">4486</span>   * @param familyMap<a name="line.4486"></a>
+<span class="sourceLineNo">4487</span>   * @param now current timestamp<a name="line.4487"></a>
+<span class="sourceLineNo">4488</span>   * @throws FailedSanityCheckException<a name="line.4488"></a>
+<span class="sourceLineNo">4489</span>   */<a name="line.4489"></a>
+<span class="sourceLineNo">4490</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4490"></a>
+<span class="sourceLineNo">4491</span>      throws FailedSanityCheckException {<a name="line.4491"></a>
+<span class="sourceLineNo">4492</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4492"></a>
+<span class="sourceLineNo">4493</span>      return;<a name="line.4493"></a>
 <span class="sourceLineNo">4494</span>    }<a name="line.4494"></a>
-<span class="sourceLineNo">4495</span>  }<a name="line.4495"></a>
-<span class="sourceLineNo">4496</span><a name="line.4496"></a>
-<span class="sourceLineNo">4497</span>  /*<a name="line.4497"></a>
-<span class="sourceLineNo">4498</span>   * @param size<a name="line.4498"></a>
-<span class="sourceLineNo">4499</span>   * @return True if size is over the flush threshold<a name="line.4499"></a>
-<span class="sourceLineNo">4500</span>   */<a name="line.4500"></a>
-<span class="sourceLineNo">4501</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4501"></a>
-<span class="sourceLineNo">4502</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4502"></a>
-<span class="sourceLineNo">4503</span>  }<a name="line.4503"></a>
-<span class="sourceLineNo">4504</span><a name="line.4504"></a>
-<span class="sourceLineNo">4505</span>  /**<a name="line.4505"></a>
-<span class="sourceLineNo">4506</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4506"></a>
-<span class="sourceLineNo">4507</span>   * the recovered edits back up into this region.<a name="line.4507"></a>
-<span class="sourceLineNo">4508</span>   *<a name="line.4508"></a>
-<span class="sourceLineNo">4509</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4509"></a>
-<span class="sourceLineNo">4510</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4510"></a>
-<span class="sourceLineNo">4511</span>   * reflected in the HFiles.)<a name="line.4511"></a>
-<span class="sourceLineNo">4512</span>   *<a name="line.4512"></a>
-<span class="sourceLineNo">4513</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4513"></a>
-<span class="sourceLineNo">4514</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4514"></a>
-<span class="sourceLineNo">4515</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4515"></a>
-<span class="sourceLineNo">4516</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4516"></a>
-<span class="sourceLineNo">4517</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4517"></a>
-<span class="sourceLineNo">4518</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4518"></a>
-<span class="sourceLineNo">4519</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4519"></a>
-<span class="sourceLineNo">4520</span>   * edits.<a name="line.4520"></a>
-<span class="sourceLineNo">4521</span>   *<a name="line.4521"></a>
-<span class="sourceLineNo">4522</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4522"></a>
-<span class="sourceLineNo">4523</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4523"></a>
-<span class="sourceLineNo">4524</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4524"></a>
-<span class="sourceLineNo">4525</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4525"></a>
-<span class="sourceLineNo">4526</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4526"></a>
-<span class="sourceLineNo">4527</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4527"></a>
-<span class="sourceLineNo">4528</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4528"></a>
-<span class="sourceLineNo">4529</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4529"></a>
-<span class="sourceLineNo">4530</span>   * make sense in a this single region context only -- until we online.<a name="line.4530"></a>
-<span class="sourceLineNo">4531</span>   *<a name="line.4531"></a>
-<span class="sourceLineNo">4532</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4532"></a>
-<span class="sourceLineNo">4533</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4533"></a>
-<span class="sourceLineNo">4534</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4534"></a>
-<span class="sourceLineNo">4535</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4535"></a>
-<span class="sourceLineNo">4536</span>   * @throws IOException<a name="line.4536"></a>
-<span class="sourceLineNo">4537</span>   */<a name="line.4537"></a>
-<span class="sourceLineNo">4538</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4538"></a>
-<span class="sourceLineNo">4539</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4539"></a>
-<span class="sourceLineNo">4540</span>      throws IOException {<a name="line.4540"></a>
-<span class="sourceLineNo">4541</span>    long minSeqIdForTheRegion = -1;<a name="line.4541"></a>
-<span class="sourceLineNo">4542</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4542"></a>
-<span class="sourceLineNo">4543</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4543"></a>
-<span class="sourceLineNo">4544</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4544"></a>
-<span class="sourceLineNo">4545</span>      }<a name="line.4545"></a>
-<span class="sourceLineNo">4546</span>    }<a name="line.4546"></a>
-<span class="sourceLineNo">4547</span>    long seqid = minSeqIdForTheRegion;<a name="line.4547"></a>
-<span class="sourceLineNo">4548</span><a name="line.4548"></a>
-<span class="sourceLineNo">4549</span>    FileSystem walFS = getWalFileSystem();<a name="line.4549"></a>
-<span class="sourceLineNo">4550</span>    FileSystem rootFS = getFilesystem();<a name="line.4550"></a>
-<span class="sourceLineNo">4551</span>    Path regionDir = getWALRegionDir();<a name="line.4551"></a>
-<span class="sourceLineNo">4552</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4552"></a>
-<span class="sourceLineNo">4553</span><a name="line.4553"></a>
-<span class="sourceLineNo">4554</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4554"></a>
-<span class="sourceLineNo">4555</span>    // under the root dir even if walDir is set.<a name="line.4555"></a>
-<span class="sourceLineNo">4556</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4556"></a>
-<span class="sourceLineNo">4557</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4557"></a>
-<span class="sourceLineNo">4558</span>      filesUnderRootDir =<a name="line.4558"></a>
-<span class="sourceLineNo">4559</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4559"></a>
-<span class="sourceLineNo">4560</span>      seqid = Math.max(seqid,<a name="line.4560"></a>
-<span class="sourceLineNo">4561</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4561"></a>
-<span class="sourceLineNo">4562</span>              defaultRegionDir));<a name="line.4562"></a>
-<span class="sourceLineNo">4563</span>    }<a name="line.4563"></a>
+<span class="sourceLineNo">4495</span>    long maxTs = now + timestampSlop;<a name="line.4495"></a>
+<span class="sourceLineNo">4496</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4496"></a>
+<span class="sourceLineNo">4497</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4497"></a>
+<span class="sourceLineNo">4498</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4498"></a>
+<span class="sourceLineNo">4499</span>      assert kvs instanceof RandomAccess;<a name="line.4499"></a>
+<span class="sourceLineNo">4500</span>      int listSize  = kvs.size();<a name="line.4500"></a>
+<span class="sourceLineNo">4501</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4501"></a>
+<span class="sourceLineNo">4502</span>        Cell cell = kvs.get(i);<a name="line.4502"></a>
+<span class="sourceLineNo">4503</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4503"></a>
+<span class="sourceLineNo">4504</span>        long ts = cell.getTimestamp();<a name="line.4504"></a>
+<span class="sourceLineNo">4505</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4505"></a>
+<span class="sourceLineNo">4506</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4506"></a>
+<span class="sourceLineNo">4507</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4507"></a>
+<span class="sourceLineNo">4508</span>        }<a name="line.4508"></a>
+<span class="sourceLineNo">4509</span>      }<a name="line.4509"></a>
+<span class="sourceLineNo">4510</span>    }<a name="line.4510"></a>
+<span class="sourceLineNo">4511</span>  }<a name="line.4511"></a>
+<span class="sourceLineNo">4512</span><a name="line.4512"></a>
+<span class="sourceLineNo">4513</span>  /*<a name="line.4513"></a>
+<span class="sourceLineNo">4514</span>   * @param size<a name="line.4514"></a>
+<span class="sourceLineNo">4515</span>   * @return True if size is over the flush threshold<a name="line.4515"></a>
+<span class="sourceLineNo">4516</span>   */<a name="line.4516"></a>
+<span class="sourceLineNo">4517</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4517"></a>
+<span class="sourceLineNo">4518</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4518"></a>
+<span class="sourceLineNo">4519</span>  }<a name="line.4519"></a>
+<span class="sourceLineNo">4520</span><a name="line.4520"></a>
+<span class="sourceLineNo">4521</span>  /**<a name="line.4521"></a>
+<span class="sourceLineNo">4522</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4522"></a>
+<span class="sourceLineNo">4523</span>   * the recovered edits back up into this region.<a name="line.4523"></a>
+<span class="sourceLineNo">4524</span>   *<a name="line.4524"></a>
+<span class="sourceLineNo">4525</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4525"></a>
+<span class="sourceLineNo">4526</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4526"></a>
+<span class="sourceLineNo">4527</span>   * reflected in the HFiles.)<a name="line.4527"></a>
+<span class="sourceLineNo">4528</span>   *<a name="line.4528"></a>
+<span class="sourceLineNo">4529</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4529"></a>
+<span class="sourceLineNo">4530</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4530"></a>
+<span class="sourceLineNo">4531</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4531"></a>
+<span class="sourceLineNo">4532</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4532"></a>
+<span class="sourceLineNo">4533</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4533"></a>
+<span class="sourceLineNo">4534</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4534"></a>
+<span class="sourceLineNo">4535</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4535"></a>
+<span class="sourceLineNo">4536</span>   * edits.<a name="line.4536"></a>
+<span class="sourceLineNo">4537</span>   *<a name="line.4537"></a>
+<span class="sourceLineNo">4538</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4538"></a>
+<span class="sourceLineNo">4539</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4539"></a>
+<span class="sourceLineNo">4540</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4540"></a>
+<span class="sourceLineNo">4541</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4541"></a>
+<span class="sourceLineNo">4542</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4542"></a>
+<span class="sourceLineNo">4543</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4543"></a>
+<span class="sourceLineNo">4544</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4544"></a>
+<span class="sourceLineNo">4545</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4545"></a>
+<span class="sourceLineNo">4546</span>   * make sense in a this single region context only -- until we online.<a name="line.4546"></a>
+<span class="sourceLineNo">4547</span>   *<a name="line.4547"></a>
+<span class="sourceLineNo">4548</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4548"></a>
+<span class="sourceLineNo">4549</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4549"></a>
+<span class="sourceLineNo">4550</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4550"></a>
+<span class="sourceLineNo">4551</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4551"></a>
+<span class="sourceLineNo">4552</span>   * @throws IOException<a name="line.4552"></a>
+<span class="sourceLineNo">4553</span>   */<a name="line.4553"></a>
+<span class="sourceLineNo">4554</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4554"></a>
+<span class="sourceLineNo">4555</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4555"></a>
+<span class="sourceLineNo">4556</span>      throws IOException {<a name="line.4556"></a>
+<span class="sourceLineNo">4557</span>    long minSeqIdForTheRegion = -1;<a name="line.4557"></a>
+<span class="sourceLineNo">4558</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4558"></a>
+<span class="sourceLineNo">4559</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4559"></a>
+<span class="sourceLineNo">4560</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4560"></a>
+<span class="sourceLineNo">4561</span>      }<a name="line.4561"></a>
+<span class="sourceLineNo">4562</span>    }<a name="line.4562"></a>
+<span class="sourceLineNo">4563</span>    long seqid = minSeqIdForTheRegion;<a name="line.4563"></a>
 <span class="sourceLineNo">4564</span><a name="line.4564"></a>
-<span class="sourceLineNo">4565</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4565"></a>
-<span class="sourceLineNo">4566</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4566"></a>
-<span class="sourceLineNo">4567</span>        files, reporter, regionDir));<a name="line.4567"></a>
-<span class="sourceLineNo">4568</span><a name="line.4568"></a>
-<span class="sourceLineNo">4569</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4569"></a>
-<span class="sourceLineNo">4570</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4570"></a>
-<span class="sourceLineNo">4571</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4571"></a>
-<span class="sourceLineNo">4572</span>    }<a name="line.4572"></a>
-<span class="sourceLineNo">4573</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4573"></a>
-<span class="sourceLineNo">4574</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4574"></a>
-<span class="sourceLineNo">4575</span>      // For debugging data loss issues!<a name="line.4575"></a>
-<span class="sourceLineNo">4576</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4576"></a>
-<span class="sourceLineNo">4577</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4577"></a>
-<span class="sourceLineNo">4578</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4578"></a>
-<span class="sourceLineNo">4579</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4579"></a>
-<span class="sourceLineNo">4580</span>      for (Path file: files) {<a name="line.4580"></a>
-<span class="sourceLineNo">4581</span>        fakeStoreFiles.add(<a name="line.4581"></a>
-<span class="sourceLineNo">4582</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4582"></a>
-<span class="sourceLineNo">4583</span>      }<a name="line.4583"></a>
-<span class="sourceLineNo">4584</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4584"></a>
-<span class="sourceLineNo">4585</span>    } else {<a name="line.4585"></a>
-<span class="sourceLineNo">4586</span>      if (filesUnderRootDir != null) {<a name="line.4586"></a>
-<span class="sourceLineNo">4587</span>        for (Path file : filesUnderRootDir) {<a name="line.4587"></a>
-<span class="sourceLineNo">4588</span>          if (!rootFS.delete(file, false)) {<a name="line.4588"></a>
-<span class="sourceLineNo">4589</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4589"></a>
-<span class="sourceLineNo">4590</span>          } else {<a name="line.4590"></a>
-<span class="sourceLineNo">4591</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4591"></a>
-<span class="sourceLineNo">4592</span>          }<a name="line.4592"></a>
-<span class="sourceLineNo">4593</span>        }<a name="line.4593"></a>
-<span class="sourceLineNo">4594</span>      }<a name="line.4594"></a>
-<span class="sourceLineNo">4595</span>      for (Path file: files) {<a name="line.4595"></a>
-<span class="sourceLineNo">4596</span>        if (!walFS.delete(file, false)) {<a name="line.4596"></a>
-<span class="sourceLineNo">4597</span>          LOG.error("Failed delete of " + file);<a name="line.4597"></a>
-<span class="sourceLineNo">4598</span>        } else {<a name="line.4598"></a>
-<span class="sourceLineNo">4599</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4599"></a>
-<span class="sourceLineNo">4600</span>        }<a name="line.4600"></a>
-<span class="sourceLineNo">4601</span>      }<a name="line.4601"></a>
-<span class="sourceLineNo">4602</span>    }<a name="line.4602"></a>
-<span class="sourceLineNo">4603</span>    return seqid;<a name="line.4603"></a>
-<span class="sourceLineNo">4604</span>  }<a name="line.4604"></a>
-<span class="sourceLineNo">4605</span><a name="line.4605"></a>
-<span class="sourceLineNo">4606</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4606"></a>
-<span class="sourceLineNo">4607</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4607"></a>
-<span class="sourceLineNo">4608</span>      throws IOException {<a name="line.4608"></a>
-<span class="sourceLineNo">4609</span>    long seqid = minSeqIdForTheRegion;<a name="line.4609"></a>
-<span class="sourceLineNo">4610</span>    if (LOG.isDebugEnabled()) {<a name="line.4610"></a>
-<span class="sourceLineNo">4611</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4611"></a>
-<span class="sourceLineNo">4612</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4612"></a>
-<span class="sourceLineNo">4613</span>    }<a name="line.4613"></a>
-<span class="sourceLineNo">4614</span><a name="line.4614"></a>
-<span class="sourceLineNo">4615</span>    if (files == null || files.isEmpty()) {<a name="line.4615"></a>
-<span class="sourceLineNo">4616</span>      return minSeqIdForTheRegion;<a name="line.4616"></a>
-<span class="sourceLineNo">4617</span>    }<a name="line.4617"></a>
-<span class="sourceLineNo">4618</span><a name="line.4618"></a>
-<span class="sourceLineNo">4619</span>    for (Path edits: files) {<a name="line.4619"></a>
-<span class="sourceLineNo">4620</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4620"></a>
-<span class="sourceLineNo">4621</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4621"></a>
-<span class="sourceLineNo">4622</span>        continue;<a name="line.4622"></a>
-<span class="sourceLineNo">4623</span>      }<a name="line.4623"></a>
-<span class="sourceLineNo">4624</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4624"></a>
-<span class="sourceLineNo">4625</span><a name="line.4625"></a>
-<span class="sourceLineNo">4626</span>      long maxSeqId;<a name="line.4626"></a>
-<span class="sourceLineNo">4627</span>      String fileName = edits.getName();<a name="line.4627"></a>
-<span class="sourceLineNo">4628</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4628"></a>
-<span class="sourceLineNo">4629</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4629"></a>
-<span class="sourceLineNo">4630</span>        if (LOG.isDebugEnabled()) {<a name="line.4630"></a>
-<span class="sourceLineNo">4631</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4631"></a>
-<span class="sourceLineNo">4632</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4632"></a>
-<span class="sourceLineNo">4633</span>              + ", skipped the whole file, path=" + edits;<a name="line.4633"></a>
-<span class="sourceLineNo">4634</span>          LOG.debug(msg);<a name="line.4634"></a>
-<span class="sourceLineNo">4635</span>        }<a name="line.4635"></a>
-<span class="sourceLineNo">4636</span>        continue;<a name="line.4636"></a>
-<span class="sourceLineNo">4637</span>      }<a name="line.4637"></a>
-<span class="sourceLineNo">4638</span><a name="line.4638"></a>
-<span class="sourceLineNo">4639</span>      try {<a name="line.4639"></a>
-<span class="sourceLineNo">4640</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4640"></a>
-<span class="sourceLineNo">4641</span>        // if seqId is greater<a name="line.4641"></a>
-<span class="sourceLineNo">4642</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4642"></a>
-<span class="sourceLineNo">4643</span>      } catch (IOException e) {<a name="line.4643"></a>
-<span class="sourceLineNo">4644</span>        boolean skipErrors = conf.getBoolean(<a name="line.4644"></a>
-<span class="sourceLineNo">4645</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4645"></a>
-<span class="sourceLineNo">4646</span>            conf.getBoolean(<a name="line.4646"></a>
-<span class="sourceLineNo">4647</span>                "hbase.skip.errors",<a name="line.4647"></a>
-<span class="sourceLineNo">4648</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4648"></a>
-<span class="sourceLineNo">4649</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4649"></a>
-<span class="sourceLineNo">4650</span>          LOG.warn(<a name="line.4650"></a>
-<span class="sourceLineNo">4651</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4651"></a>
-<span class="sourceLineNo">4652</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4652"></a>
-<span class="sourceLineNo">4653</span>        }<a name="line.4653"></a>
-<span class="sourceLineNo">4654</span>        if (skipErrors) {<a name="line.4654"></a>
-<span class="sourceLineNo">4655</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4655"></a>
-<span class="sourceLineNo">4656</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4656"></a>
-<span class="sourceLineNo">4657</span>              + "=true so continuing. Renamed " + edits +<a name="line.4657"></a>
-<span class="sourceLineNo">4658</span>              " as " + p, e);<a name="line.4658"></a>
-<span class="sourceLineNo">4659</span>        } else {<a name="line.4659"></a>
-<span class="sourceLineNo">4660</span>          throw e;<a name="line.4660"></a>
-<span class="sourceLineNo">4661</span>        }<a name="line.4661"></a>
-<span class="sourceLineNo">4662</span>      }<a name="line.4662"></a>
-<span class="sourceLineNo">4663</span>    }<a name="line.4663"></a>
-<span class="sourceLineNo">4664</span>    return seqid;<a name="line.4664"></a>
-<span class="sourceLineNo">4665</span>  }<a name="line.4665"></a>
-<span class="sourceLineNo">4666</span><a name="line.4666"></a>
-<span class="sourceLineNo">4667</span>  /*<a name="line.4667"></a>
-<span class="sourceLineNo">4668</span>   * @param edits File of recovered edits.<a name="line.4668"></a>
-<span class="sourceLineNo">4669</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4669"></a>
-<span class="sourceLineNo">4670</span>   * must be larger than this to be replayed for each store.<a name="line.4670"></a>
-<span class="sourceLineNo">4671</span>   * @param reporter<a name="line.4671"></a>
-<span class="sourceLineNo">4672</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4672"></a>
-<span class="sourceLineNo">4673</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4673"></a>
-<span class="sourceLineNo">4674</span>   * @throws IOException<a name="line.4674"></a>
-<span class="sourceLineNo">4675</span>   */<a name="line.4675"></a>
-<span class="sourceLineNo">4676</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4676"></a>
-<span class="sourceLineNo">4677</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4677"></a>
-<span class="sourceLineNo">4678</span>    throws IOException {<a name="line.4678"></a>
-<span class="sourceLineNo">4679</span>    String msg = "Replaying edits from " + edits;<a name="line.4679"></a>
-<span class="sourceLineNo">4680</span>    LOG.info(msg);<a name="line.4680"></a>
-<span class="sourceLineNo">4681</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4681"></a>
+<span class="sourceLineNo">4565</span>    FileSystem walFS = getWalFileSystem();<a name="line.4565"></a>
+<span class="sourceLineNo">4566</span>    FileSystem rootFS = getFilesystem();<a name="line.4566"></a>
+<span class="sourceLineNo">4567</span>    Path regionDir = getWALRegionDir();<a name="line.4567"></a>
+<span class="sourceLineNo">4568</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4568"></a>
+<span class="sourceLineNo">4569</span><a name="line.4569"></a>
+<span class="sourceLineNo">4570</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4570"></a>
+<span class="sourceLineNo">4571</span>    // under the root dir even if walDir is set.<a name="line.4571"></a>
+<span class="sourceLineNo">4572</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4572"></a>
+<span class="sourceLineNo">4573</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4573"></a>
+<span class="sourceLineNo">4574</span>      filesUnderRootDir =<a name="line.4574"></a>
+<span class="sourceLineNo">4575</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4575"></a>
+<span class="sourceLineNo">4576</span>      seqid = Math.max(seqid,<a name="line.4576"></a>
+<span class="sourceLineNo">4577</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4577"></a>
+<span class="sourceLineNo">4578</span>              defaultRegionDir));<a name="line.4578"></a>
+<span class="sourceLineNo">4579</span>    }<a name="line.4579"></a>
+<span class="sourceLineNo">4580</span><a name="line.4580"></a>
+<span class="sourceLineNo">4581</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4581"></a>
+<span class="sourceLineNo">4582</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4582"></a>
+<span class="sourceLineNo">4583</span>        files, reporter, regionDir));<a name="line.4583"></a>
+<span class="sourceLineNo">4584</span><a name="line.4584"></a>
+<span class="sourceLineNo">4585</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4585"></a>
+<span class="sourceLineNo">4586</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4586"></a>
+<span class="sourceLineNo">4587</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4587"></a>
+<span class="sourceLineNo">4588</span>    }<a name="line.4588"></a>
+<span class="sourceLineNo">4589</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4589"></a>
+<span class="sourceLineNo">4590</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4590"></a>
+<span class="sourceLineNo">4591</span>      // For debugging data loss issues!<a name="line.4591"></a>
+<span class="sourceLineNo">4592</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4592"></a>
+<span class="sourceLineNo">4593</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4593"></a>
+<span class="sourceLineNo">4594</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4594"></a>
+<span class="sourceLineNo">4595</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4595"></a>
+<span class="sourceLineNo">4596</span>      for (Path file: files) {<a name="line.4596"></a>
+<span class="sourceLineNo">4597</span>        fakeStoreFiles.add(<a name="line.4597"></a>
+<span class="sourceLineNo">4598</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4598"></a>
+<span class="sourceLineNo">4599</span>      }<a name="line.4599"></a>
+<span class="sourceLineNo">4600</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4600"></a>
+<span class="sourceLineNo">4601</span>    } else {<a name="line.4601"></a>
+<span class="sourceLineNo">4602</span>      if (filesUnderRootDir != null) {<a name="line.4602"></a>
+<span class="sourceLineNo">4603</span>        for (Path file : filesUnderRootDir) {<a name="line.4603"></a>
+<span class="sourceLineNo">4604</span>          if (!rootFS.delete(file, false)) {<a name="line.4604"></a>
+<span class="sourceLineNo">4605</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4605"></a>
+<span class="sourceLineNo">4606</span>          } else {<a name="line.4606"></a>
+<span class="sourceLineNo">4607</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4607"></a>
+<span class="sourceLineNo">4608</span>          }<a name="line.4608"></a>
+<span class="sourceLineNo">4609</span>        }<a name="line.4609"></a>
+<span class="sourceLineNo">4610</span>      }<a name="line.4610"></a>
+<span class="sourceLineNo">4611</span>      for (Path file: files) {<a name="line.4611"></a>
+<span class="sourceLineNo">4612</span>        if (!walFS.delete(file, false)) {<a name="line.4612"></a>
+<span class="sourceLineNo">4613</span>          LOG.error("Failed delete of " + file);<a name="line.4613"></a>
+<span class="sourceLineNo">4614</span>        } else {<a name="line.4614"></a>
+<span class="sourceLineNo">4615</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4615"></a>
+<span class="sourceLineNo">4616</span>        }<a name="line.4616"></a>
+<span class="sourceLineNo">4617</span>      }<a name="line.4617"></a>
+<span class="sourceLineNo">4618</span>    }<a name="line.4618"></a>
+<span class="sourceLineNo">4619</span>    return seqid;<a name="line.4619"></a>
+<span class="sourceLineNo">4620</span>  }<a name="line.4620"></a>
+<span class="sourceLineNo">4621</span><a name="line.4621"></a>
+<span class="sourceLineNo">4622</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4622"></a>
+<span class="sourceLineNo">4623</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4623"></a>
+<span class="sourceLineNo">4624</span>      throws IOException {<a name="line.4624"></a>
+<span class="sourceLineNo">4625</span>    long seqid = minSeqIdForTheRegion;<a name="line.4625"></a>
+<span class="sourceLineNo">4626</span>    if (LOG.isDebugEnabled()) {<a name="line.4626"></a>
+<span class="sourceLineNo">4627</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4627"></a>
+<span class="sourceLineNo">4628</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4628"></a>
+<span class="sourceLineNo">4629</span>    }<a name="line.4629"></a>
+<span class="sourceLineNo">4630</span><a name="line.4630"></a>
+<span class="sourceLineNo">4631</span>    if (files == null || files.isEmpty()) {<a name="line.4631"></a>
+<span class="sourceLineNo">4632</span>      return minSeqIdForTheRegion;<a name="line.4632"></a>
+<span class="sourceLineNo">4633</span>    }<a name="line.4633"></a>
+<span class="sourceLineNo">4634</span><a name="line.4634"></a>
+<span class="sourceLineNo">4635</span>    for (Path edits: files) {<a name="line.4635"></a>
+<span class="sourceLineNo">4636</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4636"></a>
+<span class="sourceLineNo">4637</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4637"></a>
+<span class="sourceLineNo">4638</span>        continue;<a name="line.4638"></a>
+<span class="sourceLineNo">4639</span>      }<a name="line.4639"></a>
+<span class="sourceLineNo">4640</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4640"></a>
+<span class="sourceLineNo">4641</span><a name="line.4641"></a>
+<span class="sourceLineNo">4642</span>      long maxSeqId;<a name="line.4642"></a>
+<span class="sourceLineNo">4643</span>      String fileName = edits.getName();<a name="line.4643"></a>
+<span class="sourceLineNo">4644</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4644"></a>
+<span class="sourceLineNo">4645</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4645"></a>
+<span class="sourceLineNo">4646</span>        if (LOG.isDebugEnabled()) {<a name="line.4646"></a>
+<span class="sourceLineNo">4647</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4647"></a>
+<span class="sourceLineNo">4648</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4648"></a>
+<span class="sourceLineNo">4649</span>              + ", skipped the whole file, path=" + edits;<a name="line.4649"></a>
+<span class="sourceLineNo">4650</span>          LOG.debug(msg);<a name="line.4650"></a>
+<span class="sourceLineNo">4651</span>        }<a name="line.4651"></a>
+<span class="sourceLineNo">4652</span>        continue;<a name="line.4652"></a>
+<span class="sourceLineNo">4653</span>      }<a name="line.4653"></a>
+<span class="sourceLineNo">4654</span><a name="line.4654"></a>
+<span class="sourceLineNo">4655</span>      try {<a name="line.4655"></a>
+<span class="sourceLineNo">4656</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4656"></a>
+<span class="sourceLineNo">4657</span>        // if seqId is greater<a name="line.4657"></a>
+<span class="sourceLineNo">4658</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4658"></a>
+<span class="sourceLineNo">4659</span>      } catch (IOException e) {<a name="line.4659"></a>
+<span class="sourceLineNo">4660</span>        boolean skipErrors = conf.getBoolean(<a name="line.4660"></a>
+<span class="sourceLineNo">4661</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4661"></a>
+<span class="sourceLineNo">4662</span>            conf.getBoolean(<a name="line.4662"></a>
+<span class="sourceLineNo">4663</span>                "hbase.skip.errors",<a name="line.4663"></a>
+<span class="sourceLineNo">4664</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4664"></a>
+<span class="sourceLineNo">4665</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4665"></a>
+<span class="sourceLineNo">4666</span>          LOG.warn(<a name="line.4666"></a>
+<span class="sourceLineNo">4667</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4667"></a>
+<span class="sourceLineNo">4668</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4668"></a>
+<span class="sourceLineNo">4669</span>        }<a name="line.4669"></a>
+<span class="sourceLineNo">4670</span>        if (skipErrors) {<a name="line.4670"></a>
+<span class="sourceLineNo">4671</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4671"></a>
+<span class="sourceLineNo">4672</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4672"></a>
+<span class="sourceLineNo">4673</span>              + "=true so continuing. Renamed " + edits +<a name="line.4673"></a>
+<span class="sourceLineNo">4674</span>              " as " + p, e);<a name="line.4674"></a>
+<span class="sourceLineNo">4675</span>        } else {<a name="line.4675"></a>
+<span class="sourceLineNo">4676</span>          throw e;<a name="line.4676"></a>
+<span class="sourceLineNo">4677</span>        }<a name="line.4677"></a>
+<span class="sourceLineNo">4678</span>      }<a name="line.4678"></a>
+<span class="sourceLineNo">4679</span>    }<a name="line.4679"></a>
+<span class="sourceLineNo">4680</span>    return seqid;<a name="line.4680"></a>
+<span class="sourceLineNo">4681</span>  }<a name="line.4681"></a>
 <span class="sourceLineNo">4682</span><a name="line.4682"></a>
-<span class="sourceLineNo">4683</span>    status.setStatus("Opening recovered edits");<a name="line.4683"></a>
-<span class="sourceLineNo">4684</span>    WAL.Reader reader = null;<a name="line.4684"></a>
-<span class="sourceLineNo">4685</span>    try {<a name="line.4685"></a>
-<span class="sourceLineNo">4686</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4686"></a>
-<span class="sourceLineNo">4687</span>      long currentEditSeqId = -1;<a name="line.4687"></a>
-<span class="sourceLineNo">4688</span>      long currentReplaySeqId = -1;<a name="line.4688"></a>
-<span class="sourceLineNo">4689</span>      long firstSeqIdInLog = -1;<a name="line.4689"></a>
-<span class="sourceLineNo">4690</span>      long skippedEdits = 0;<a name="line.4690"></a>
-<span class="sourceLineNo">4691</span>      long editsCount = 0;<a name="line.4691"></a>
-<span class="sourceLineNo">4692</span>      long intervalEdits = 0;<a name="line.4692"></a>
-<span class="sourceLineNo">4693</span>      WAL.Entry entry;<a name="line.4693"></a>
-<span class="sourceLineNo">4694</span>      HStore store = null;<a name="line.4694"></a>
-<span class="sourceLineNo">4695</span>      boolean reported_once = false;<a name="line.4695"></a>
-<span class="sourceLineNo">4696</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4696"></a>
-<span class="sourceLineNo">4697</span><a name="line.4697"></a>
-<span class="sourceLineNo">4698</span>      try {<a name="line.4698"></a>
-<span class="sourceLineNo">4699</span>        // How many edits seen before we check elapsed time<a name="line.4699"></a>
-<span class="sourceLineNo">4700</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4700"></a>
-<span class="sourceLineNo">4701</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4701"></a>
-<span class="sourceLineNo">4702</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4702"></a>
-<span class="sourceLineNo">4703</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4703"></a>
-<span class="sourceLineNo">4704</span><a name="line.4704"></a>
-<span class="sourceLineNo">4705</span>        if (coprocessorHost != null) {<a name="line.4705"></a>
-<span class="sourceLineNo">4706</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4706"></a>
-<span class="sourceLineNo">4707</span>        }<a name="line.4707"></a>
-<span class="sourceLineNo">4708</span><a name="line.4708"></a>
-<span class="sourceLineNo">4709</span>        while ((entry = reader.next()) != null) {<a name="line.4709"></a>
-<span class="sourceLineNo">4710</span>          WALKey key = entry.getKey();<a name="line.4710"></a>
-<span class="sourceLineNo">4711</span>          WALEdit val = entry.getEdit();<a name="line.4711"></a>
-<span class="sourceLineNo">4712</span><a name="line.4712"></a>
-<span class="sourceLineNo">4713</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4713"></a>
-<span class="sourceLineNo">4714</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4714"></a>
-<span class="sourceLineNo">4715</span>          }<a name="line.4715"></a>
-<span class="sourceLineNo">4716</span><a name="line.4716"></a>
-<span class="sourceLineNo">4717</span>          if (reporter != null) {<a name="line.4717"></a>
-<span class="sourceLineNo">4718</span>            intervalEdits += val.size();<a name="line.4718"></a>
-<span class="sourceLineNo">4719</span>            if (intervalEdits &gt;= interval) {<a name="line.4719"></a>
-<span class="sourceLineNo">4720</span>              // Number of edits interval reached<a name="line.4720"></a>
-<span class="sourceLineNo">4721</span>              intervalEdits = 0;<a name="line.4721"></a>
-<span class="sourceLineNo">4722</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4722"></a>
-<span class="sourceLineNo">4723</span>              if (lastReport + period &lt;= cur) {<a name="line.4723"></a>
-<span class="sourceLineNo">4724</span>                status.setStatus("Replaying edits..." +<a name="line.4724"></a>
-<span class="sourceLineNo">4725</span>                    " skipped=" + skippedEdits +<a name="line.4725"></a>
-<span class="sourceLineNo">4726</span>                    " edits=" + editsCount);<a name="line.4726"></a>
-<span class="sourceLineNo">4727</span>                // Timeout reached<a name="line.4727"></a>
-<span class="sourceLineNo">4728</span>                if(!reporter.progress()) {<a name="line.4728"></a>
-<span class="sourceLineNo">4729</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4729"></a>
-<span class="sourceLineNo">4730</span>                  LOG.warn(msg);<a name="line.4730"></a>
-<span class="sourceLineNo">4731</span>                  status.abort(msg);<a name="line.4731"></a>
-<span class="sourceLineNo">4732</span>                  throw new IOException(msg);<a name="line.4732"></a>
-<span class="sourceLineNo">4733</span>                }<a name="line.4733"></a>
-<span class="sourceLineNo">4734</span>                reported_once = true;<a name="line.4734"></a>
-<span class="sourceLineNo">4735</span>                lastReport = cur;<a name="line.4735"></a>
-<span class="sourceLineNo">4736</span>              }<a name="line.4736"></a>
-<span class="sourceLineNo">4737</span>            }<a name="line.4737"></a>
-<span class="sourceLineNo">4738</span>          }<a name="line.4738"></a>
-<span class="sourceLineNo">4739</span><a name="line.4739"></a>
-<span class="sourceLineNo">4740</span>          if (firstSeqIdInLog == -1) {<a name="line.4740"></a>
-<span class="sourceLineNo">4741</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4741"></a>
-<span class="sourceLineNo">4742</span>          }<a name="line.4742"></a>
-<span class="sourceLineNo">4743</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4743"></a>
-<span class="sourceLineNo">4744</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4744"></a>
-<span class="sourceLineNo">4745</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4745"></a>
-<span class="sourceLineNo">4746</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4746"></a>
-<span class="sourceLineNo">4747</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4747"></a>
-<span class="sourceLineNo">4748</span>                + "; edit=" + val);<a name="line.4748"></a>
-<span class="sourceLineNo">4749</span>          } else {<a name="line.4749"></a>
-<span class="sourceLineNo">4750</span>            currentEditSeqId = key.getSequenceId();<a name="line.4750"></a>
-<span class="sourceLineNo">4751</span>          }<a name="line.4751"></a>
-<span class="sourceLineNo">4752</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4752"></a>
-<span class="sourceLineNo">4753</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4753"></a>
-<span class="sourceLineNo">4754</span><a name="line.4754"></a>
-<span class="sourceLineNo">4755</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4755"></a>
-<span class="sourceLineNo">4756</span>          // instead of a KeyValue.<a name="line.4756"></a>
-<span class="sourceLineNo">4757</span>          if (coprocessorHost != null) {<a name="line.4757"></a>
-<span class="sourceLineNo">4758</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4758"></a>
-<span class="sourceLineNo">4759</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4759"></a>
-<span class="sourceLineNo">4760</span>              // if bypass this wal entry, ignore it ...<a name="line.4760"></a>
-<span class="sourceLineNo">4761</span>              continue;<a name="line.4761"></a>
-<span class="sourceLineNo">4762</span>            }<a name="line.4762"></a>
-<span class="sourceLineNo">4763</span>          }<a name="line.4763"></a>
-<span class="sourceLineNo">4764</span>          boolean checkRowWithinBoundary = false;<a name="line.4764"></a>
-<span class="sourceLineNo">4765</span>          // Check this edit is for this region.<a name="line.4765"></a>
-<span class="sourceLineNo">4766</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4766"></a>
-<span class="sourceLineNo">4767</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4767"></a>
-<span class="sourceLineNo">4768</span>            checkRowWithinBoundary = true;<a name="line.4768"></a>
-<span class="sourceLineNo">4769</span>          }<a name="line.4769"></a>
+<span class="sourceLineNo">4683</span>  /*<a name="line.4683"></a>
+<span class="sourceLineNo">4684</span>   * @param edits File of recovered edits.<a name="line.4684"></a>
+<span class="sourceLineNo">4685</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4685"></a>
+<span class="sourceLineNo">4686</span>   * must be larger than this to be replayed for each store.<a name="line.4686"></a>
+<span class="sourceLineNo">4687</span>   * @param reporter<a name="line.4687"></a>
+<span class="sourceLineNo">4688</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4688"></a>
+<span class="sourceLineNo">4689</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4689"></a>
+<span class="sourceLineNo">4690</span>   * @throws IOException<a name="line.4690"></a>
+<span class="sourceLineNo">4691</span>   */<a name="line.4691"></a>
+<span class="sourceLineNo">4692</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4692"></a>
+<span class="sourceLineNo">4693</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4693"></a>
+<span class="sourceLineNo">4694</span>    throws IOException {<a name="line.4694"></a>
+<span class="sourceLineNo">4695</span>    String msg = "Replaying edits from " + edits;<a name="line.4695"></a>
+<span class="sourceLineNo">4696</span>    LOG.info(msg);<a name="line.4696"></a>
+<span class="sourceLineNo">4697</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4697"></a>
+<span class="sourceLineNo">4698</span><a name="line.4698"></a>
+<span class="sourceLineNo">4699</span>    status.setStatus("Opening recovered edits");<a name="line.4699"></a>
+<span class="sourceLineNo">4700</span>    WAL.Reader reader = null;<a name="line.4700"></a>
+<span class="sourceLineNo">4701</span>    try {<a name="line.4701"></a>
+<span class="sourceLineNo">4702</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4702"></a>
+<span class="sourceLineNo">4703</span>      long currentEditSeqId = -1;<a name="line.4703"></a>
+<span class="sourceLineNo">4704</span>      long currentReplaySeqId = -1;<a name="line.4704"></a>
+<span class="sourceLineNo">4705</span>      long firstSeqIdInLog = -1;<a name="line.4705"></a>
+<span class="sourceLineNo">4706</span>      long skippedEdits = 0;<a name="line.4706"></a>
+<span class="sourceLineNo">4707</span>      long editsCount = 0;<a name="line.4707"></a>
+<span class="sourceLineNo">4708</span>      long intervalEdits = 0;<a name="line.4708"></a>
+<span class="sourceLineNo">4709</span>      WAL.Entry entry;<a name="line.4709"></a>
+<span class="sourceLineNo">4710</span>      HStore store = null;<a name="line.4710"></a>
+<span class="sourceLineNo">4711</span>      boolean reported_once = false;<a name="line.4711"></a>
+<span class="sourceLineNo">4712</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4712"></a>
+<span class="sourceLineNo">4713</span><a name="line.4713"></a>
+<span class="sourceLineNo">4714</span>      try {<a name="line.4714"></a>
+<span class="sourceLineNo">4715</span>        // How many edits seen before we check elapsed time<a name="line.4715"></a>
+<span class="sourceLineNo">4716</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4716"></a>
+<span class="sourceLineNo">4717</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4717"></a>
+<span class="sourceLineNo">4718</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4718"></a>
+<span class="sourceLineNo">4719</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4719"></a>
+<span class="sourceLineNo">4720</span><a name="line.4720"></a>
+<span class="sourceLineNo">4721</span>        if (coprocessorHost != null) {<a name="line.4721"></a>
+<span class="sourceLineNo">4722</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4722"></a>
+<span class="sourceLineNo">4723</span>        }<a name="line.4723"></a>
+<span class="sourceLineNo">4724</span><a name="line.4724"></a>
+<span class="sourceLineNo">4725</span>        while ((entry = reader.next()) != null) {<a name="line.4725"></a>
+<span class="sourceLineNo">4726</span>          WALKey key = entry.getKey();<a name="line.4726"></a>
+<span class="sourceLineNo">4727</span>          WALEdit val = entry.getEdit();<a name="line.4727"></a>
+<span class="sourceLineNo">4728</span><a name="line.4728"></a>
+<span class="sourceLineNo">4729</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4729"></a>
+<span class="sourceLineNo">4730</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4730"></a>
+<span class="sourceLineNo">4731</span>          }<a name="line.4731"></a>
+<span class="sourceLineNo">4732</span><a name="line.4732"></a>
+<span class="sourceLineNo">4733</span>          if (reporter != null) {<a name="line.4733"></a>
+<span class="sourceLineNo">4734</span>            intervalEdits += val.size();<a name="line.4734"></a>
+<span class="sourceLineNo">4735</span>            if (intervalEdits &gt;= interval) {<a name="line.4735"></a>
+<span class="sourceLineNo">4736</span>              // Number of edits interval reached<a name="line.4736"></a>
+<span class="sourceLineNo">4737</span>              intervalEdits = 0;<a name="line.4737"></a>
+<span class="sourceLineNo">4738</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4738"></a>
+<span class="sourceLineNo">4739</span>              if (lastReport + period &lt;= cur) {<a name="line.4739"></a>
+<span class="sourceLineNo">4740</span>                status.setStatus("Replaying edits..." +<a name="line.4740"></a>
+<span class="sourceLineNo">4741</span>                    " skipped=" + skippedEdits +<a name="line.4741"></a>
+<span class="sourceLineNo">4742</span>                    " edits=" + editsCount);<a name="line.4742"></a>
+<span class="sourceLineNo">4743</span>                // Timeout reached<a name="line.4743"></a>
+<span class="sourceLineNo">4744</span>                if(!reporter.progress()) {<a name="line.4744"></a>
+<span class="sourceLineNo">4745</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4745"></a>
+<span class="sourceLineNo">4746</span>                  LOG.warn(msg);<a name="line.4746"></a>
+<span class="sourceLineNo">4747</span>                  status.abort(msg);<a name="line.4747"></a>
+<span class="sourceLineNo">4748</span>                  throw new IOException(msg);<a name="line.4748"></a>
+<span class="sourceLineNo">4749</span>                }<a name="line.4749"></a>
+<span class="sourceLineNo">4750</span>                reported_once = true;<a name="line.4750"></a>
+<span class="sourceLineNo">4751</span>                lastReport = cur;<a name="line.4751"></a>
+<span class="sourceLineNo">4752</span>              }<a name="line.4752"></a>
+<span class="sourceLineNo">4753</span>            }<a name="line.4753"></a>
+<span class="sourceLineNo">4754</span>          }<a name="line.4754"></a>
+<span class="sourceLineNo">4755</span><a name="line.4755"></a>
+<span class="sourceLineNo">4756</span>          if (firstSeqIdInLog == -1) {<a name="line.4756"></a>
+<span class="sourceLineNo">4757</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4757"></a>
+<span class="sourceLineNo">4758</span>          }<a name="line.4758"></a>
+<span class="sourceLineNo">4759</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4759"></a>
+<span class="sourceLineNo">4760</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4760"></a>
+<span class="sourceLineNo">4761</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4761"></a>
+<span class="sourceLineNo">4762</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4762"></a>
+<span class="sourceLineNo">4763</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4763"></a>
+<span class="sourceLineNo">4764</span>                + "; edit=" + val);<a name="line.4764"></a>
+<span class="sourceLineNo">4765</span>          } else {<a name="line.4765"></a>
+<span class="sourceLineNo">4766</span>            currentEditSeqId = key.getSequenceId();<a name="line.4766"></a>
+<span class="sourceLineNo">4767</span>          }<a name="line.4767"></a>
+<span class="sourceLineNo">4768</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4768"></a>
+<span class="sourceLineNo">4769</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4769"></a>
 <span class="sourceLineNo">4770</span><a name="line.4770"></a>
-<span class="sourceLineNo">4771</span>          boolean flush = false;<a name="line.4771"></a>
-<span class="sourceLineNo">4772</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4772"></a>
-<span class="sourceLineNo">4773</span>          for (Cell cell: val.getCells()) {<a name="line.4773"></a>
-<span class="sourceLineNo">4774</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4774"></a>
-<span class="sourceLineNo">4775</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4775"></a>
-<span class="sourceLineNo">4776</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4776"></a>
-<span class="sourceLineNo">4777</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4777"></a>
-<span class="sourceLineNo">4778</span>              if (!checkRowWithinBoundary) {<a name="line.4778"></a>
-<span class="sourceLineNo">4779</span>                //this is a special edit, we should handle it<a name="line.4779"></a>
-<span class="sourceLineNo">4780</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4780"></a>
-<span class="sourceLineNo">4781</span>                if (compaction != null) {<a name="line.4781"></a>
-<span class="sourceLineNo">4782</span>                  //replay the compaction<a name="line.4782"></a>
-<span class="sourceLineNo">4783</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4783"></a>
-<span class="sourceLineNo">4784</span>                }<a name="line.4784"></a>
-<span class="sourceLineNo">4785</span>              }<a name="line.4785"></a>
-<span class="sourceLineNo">4786</span>              skippedEdits++;<a name="line.4786"></a>
-<span class="sourceLineNo">4787</span>              continue;<a name="line.4787"></a>
-<span class="sourceLineNo">4788</span>            }<a name="line.4788"></a>
-<span class="sourceLineNo">4789</span>            // Figure which store the edit is meant for.<a name="line.4789"></a>
-<span class="sourceLineNo">4790</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4790"></a>
-<span class="sourceLineNo">4791</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4791"></a>
-<span class="sourceLineNo">4792</span>              store = getStore(cell);<a name="line.4792"></a>
-<span class="sourceLineNo">4793</span>            }<a name="line.4793"></a>
-<span class="sourceLineNo">4794</span>            if (store == null) {<a name="line.4794"></a>
-<span class="sourceLineNo">4795</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4795"></a>
-<span class="sourceLineNo">4796</span>              // crash and redeploy?<a name="line.4796"></a>
-<span class="sourceLineNo">4797</span>              LOG.warn("No family for " + cell);<a name="line.4797"></a>
-<span class="sourceLineNo">4798</span>              skippedEdits++;<a name="line.4798"></a>
-<span class="sourceLineNo">4799</span>              continue;<a name="line.4799"></a>
-<span class="sourceLineNo">4800</span>            }<a name="line.4800"></a>
-<span class="sourceLineNo">4801</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4801"></a>
-<span class="sourceLineNo">4802</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4802"></a>
-<span class="sourceLineNo">4803</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4803"></a>
-<span class="sourceLineNo">4804</span>              skippedEdits++;<a name="line.4804"></a>
-<span class="sourceLineNo">4805</span>              continue;<a name="line.4805"></a>
-<span class="sourceLineNo">4806</span>            }<a name="line.4806"></a>
-<span class="sourceLineNo">4807</span>            // Now, figure if we should skip this edit.<a name="line.4807"></a>
-<span class="sourceLineNo">4808</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4808"></a>
-<span class="sourceLineNo">4809</span>                .getName())) {<a name="line.4809"></a>
-<span class="sourceLineNo">4810</span>              skippedEdits++;<a name="line.4810"></a>
-<span class="sourceLineNo">4811</span>              continue;<a name="line.4811"></a>
-<span class="sourceLineNo">4812</span>            }<a name="line.4812"></a>
-<span class="sourceLineNo">4813</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4813"></a>
-<span class="sourceLineNo">4814</span><a name="line.4814"></a>
-<span class="sourceLineNo">4815</span>            restoreEdit(store, cell, memStoreSizing);<a name="line.4815"></a>
-<span class="sourceLineNo">4816</span>            editsCount++;<a name="line.4816"></a>
-<span class="sourceLineNo">4817</span>          }<a name="line.4817"></a>
-<span class="sourceLineNo">4818</span>          MemStoreSize mss = memStoreSizing.getMemStoreSize();<a name="line.4818"></a>
-<span class="sourceLineNo">4819</span>          incMemStoreSize(mss);<a name="line.4819"></a>
-<span class="sourceLineNo">4820</span>          flush = isFlushSize(this.memStoreSizing.getMemStoreSize());<a name="line.4820"></a>
-<span class="sourceLineNo">4821</span>          if (flush) {<a name="line.4821"></a>
-<span class="sourceLineNo">4822</span>            internalFlushcache(null, currentEditSeqId, stores.values(), status, false,<a name="line.4822"></a>
-<span class="sourceLineNo">4823</span>              FlushLifeCycleTracker.DUMMY);<a name="line.4823"></a>
-<span class="sourceLineNo">4824</span>          }<a name="line.4824"></a>
-<span class="sourceLineNo">4825</span><a name="line.4825"></a>
-<span class="sourceLineNo">4826</span>          if (coprocessorHost != null) {<a name="line.4826"></a>
-<span class="sourceLineNo">4827</span>            coprocessorHost.postWALRestore(this.getRegionInfo(), key, val);<a name="line.4827"></a>
-<span class="sourceLineNo">4828</span>          }<a name="line.4828"></a>
-<span class="sourceLineNo">4829</span>        }<a name="line.4829"></a>
+<span class="sourceLineNo">4771</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4771"></a>
+<span class="sourceLineNo">4772</span>          // instead of a KeyValue.<a name="line.4772"></a>
+<span class="sourceLineNo">4773</span>          if (coprocessorHost != null) {<a name="line.4773"></a>
+<span class="sourceLineNo">4774</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4774"></a>
+<span class="sourceLineNo">4775</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4775"></a>
+<span class="sourceLineNo">4776</span>              // if bypass this wal entry, ignore it ...<a name="line.4776"></a>
+<span class="sourceLineNo">4777</span>              continue;<a name="line.4777"></a>
+<span class="sourceLineNo">4778</span>            }<a name="line.4778"></a>
+<span class="sourceLineNo">4779</span>          }<a name="line.4779"></a>
+<span class="sourceLineNo">4780</span>          boolean checkRowWithinBoundary = false;<a name="line.4780"></a>
+<span class="sourceLineNo">4781</span>          // Check this edit is for this region.<a name="line.4781"></a>
+<span class="sourceLineNo">4782</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4782"></a>
+<span class="sourceLineNo">4783</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4783"></a>
+<span class="sourceLineNo">4784</span>            checkRowWithinBoundary = true;<a name="line.4784"></a>
+<span class="sourceLineNo">4785</span>          }<a name="line.4785"></a>
+<span class="sourceLineNo">4786</span><a name="line.4786"></a>
+<span class="sourceLineNo">4787</span>          boolean flush = false;<a name="line.4787"></a>
+<span class="sourceLineNo">4788</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4788"></a>
+<span class="sourceLineNo">4789</span>          for (Cell cell: val.getCells()) {<a name="line.4789"></a>
+<span class="sourceLineNo">4790</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4790"></a>
+<span class="sourceLineNo">4791</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4791"></a>
+<span class="sourceLineNo">4792</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4792"></a>
+<span class="sourceLineNo">4793</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4793"></a>
+<span class="sourceLineNo">4794</span>              if (!checkRowWithinBoundary) {<a name="line.4794"></a>
+<span class="sourceLineNo">4795</span>                //this is a special edit, we should handle it<a name="line.4795"></a>
+<span class="sourceLineNo">4796</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4796"></a>
+<span class="sourceLineNo">4797</span>                if (compaction != null) {<a name="line.4797"></a>
+<span class="sourceLineNo">4798</span>                  //replay the compaction<a name="line.4798"></a>
+<span class="sourceLineNo">4799</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4799"></a>
+<span class="sourceLineNo">4800</span>                }<a name="line.4800"></a>
+<span class="sourceLineNo">4801</span>              }<a name="line.4801"></a>
+<span class="sourceLineNo">4802</span>              skippedEdits++;<a name="line.4802"></a>
+<span class="sourceLineNo">4803</span>              continue;<a name="line.4803"></a>
+<span class="sourceLineNo">4804</span>            }<a name="line.4804"></a>
+<span class="sourceLineNo">4805</span>            // Figure which store the edit is meant for.<a name="line.4805"></a>
+<span class="sourceLineNo">4806</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4806"></a>
+<span class="sourceLineNo">4807</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4807"></a>
+<span class="sourceLineNo">4808</span>              store = getStore(cell);<a name="line.4808"></a>
+<span class="sourceLineNo">4809</span>            }<a name="line.4809"></a>
+<span class="sourceLineNo">4810</span>            if (store == null) {<a name="line.4810"></a>
+<span class="sourceLineNo">4811</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4811"></a>
+<span class="sourceLineNo">4812</span>              // crash and redeploy?<a name="line.4812"></a>
+<span class="sourceLineNo">4813</span>              LOG.warn("No family for " + cell);<a name="line.4813"></a>
+<span class="sourceLineNo">4814</span>              skippedEdits++;<a name="line.4814"></a>
+<span class="sourceLineNo">4815</span>              continue;<a name="line.4815"></a>
+<span class="sourceLineNo">4816</span>            }<a name="line.4816"></a>
+<span class="sourceLineNo">4817</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4817"></a>
+<span class="sourceLineNo">4818</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4818"></a>
+<span class="sourceLineNo">4819</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4819"></a>
+<span class="sourceLineNo">4820</span>              skippedEdits++;<a name="line.4820"></a>
+<span class="sourceLineNo">4821</span>              continue;<a name="line.4821"></a>
+<span class="sourceLineNo">4822</span>            }<a name="line.4822"></a>
+<span class="sourceLineNo">4823</span>            // Now, figure if we should skip this edit.<a name="line.4823"></a>
+<span class="sourceLineNo">4824</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4824"></a>
+<span class="sourceLineNo">4825</span>                .getName())) {<a name="line.4825"></a>
+<span class="sourceLineNo">4826</span>              skippedEdits++;<a name="line.4826"></a>
+<span class="sourceLineNo">4827</span>              continue;<a name="line.4827"></a>
+<span class="sourceLineNo">4828</span>            }<a name="line.4828"></a>
+<span class="sourceLineNo">4829</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4829"></a>
 <span class="sourceLineNo">4830</span><a name="line.4830"></a>
-<span class="sourceLineNo">4831</span>        if (coprocessorHost != null) {<a name="line.4831"></a>
-<span class="sourceLineNo">4832</span>          coprocessorHost.postReplayWALs(this.getRegionInfo(), edits);<a name="line.4832"></a>
-<span class="sourceLineNo">4833</span>        }<a name="line.4833"></a>
-<span class="sourceLineNo">4834</span>      } catch (EOFException eof) {<a name="line.4834"></a>
-<span class="sourceLineNo">4835</span>        Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4835"></a>
-<span class="sourceLineNo">4836</span>        msg = "EnLongAddered EOF. Most likely due to Master failure during " +<a name="line.4836"></a>
-<span class="sourceLineNo">4837</span>            "wal splitting, so we have this data in another edit.  " +<a name="line.4837"></a>
-<span class="sourceLineNo">4838</span>            "Continuing, but renaming " + edits + " as " + p;<a name="line.4838"></a>
-<span class="sourceLineNo">4839</span>        LOG.warn(msg, eof);<a name="line.4839"></a>
-<span class="sourceLineNo">4840</span>        status.abort(msg);<a name="line.4840"></a>
-<span class="sourceLineNo">4841</span>      } catch (IOException ioe) {<a name="line.4841"></a>
-<span class="sourceLineNo">4842</span>        // If the IOE resulted from bad file format,<a name="line.4842"></a>
-<span class="sourceLineNo">4843</span>        // then this problem is idempotent and retrying won't help<a name="line.4843"></a>
-<span class="sourceLineNo">4844</span>        if (ioe.getCause() instanceof ParseException) {<a name="line.4844"></a>
-<span class="sourceLineNo">4845</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4845"></a>
-<span class="sourceLineNo">4846</span>          msg = "File corruption enLongAddered!  " +<a name="line.4846"></a>
-<span class="sourceLineNo">4847</span>              "Continuing, but renaming " + edits + " as " + p;<a name="line.4847"></a>
-<span class="sourceLineNo">4848</span>          LOG.warn(msg, ioe);<a name="line.4848"></a>
-<span class="sourceLineNo">4849</span>          status.setStatus(msg);<a name="line.4849"></a>
-<span class="sourceLineNo">4850</span>        } else {<a name="line.4850"></a>
-<span class="sourceLineNo">4851</span>          status.abort(StringUtils.stringifyException(ioe));<a name="line.4851"></a>
-<span class="sourceLineNo">4852</span>          // other IO errors may be transient (bad network connection,<a name="line.4852"></a>
-<span class="sourceLineNo">4853</span>          // checksum exception on one datanode, etc).  throw &amp; retry<a name="line.4853"></a>
-<span class="sourceLineNo">4854</span>          throw ioe;<a name="line.4854"></a>
-<span class="sourceLineNo">4855</span>        }<a name="line.4855"></a>
-<span class="sourceLineNo">4856</span>      }<a name="line.4856"></a>
-<span class="sourceLineNo">4857</span>      if (reporter != null &amp;&amp; !reported_once) {<a name="line.4857"></a>
-<span class="sourceLineNo">4858</span>        reporter.progress();<a name="line.4858"></a>
-<span class="sourceLineNo">4859</span>      }<a name="line.4859"></a>
-<span class="sourceLineNo">4860</span>      msg = "Applied " + editsCount + ", skipped " + skippedEdits +<a name="line.4860"></a>
-<span class="sourceLineNo">4861</span>        ", firstSequenceIdInLog=" + firstSeqIdInLog +<a name="line.4861"></a>
-<span class="sourceLineNo">4862</span>        ", maxSequenceIdInLog=" + currentEditSeqId + ", path=" + edits;<a name="line.4862"></a>
-<span class="sourceLineNo">4863</span>      status.markComplete(msg);<a name="line.4863"></a>
-<span class="sourceLineNo">4864</span>      LOG.debug(msg);<a name="line.4864"></a>
-<span class="sourceLineNo">4865</span>      return currentEditSeqId;<a name="line.4865"></a>
-<span class="sourceLineNo">4866</span>    } finally {<a name="line.4866"></a>
-<span class="sourceLineNo">4867</span>      status.cleanup();<a name="line.4867"></a>
-<span class="sourceLineNo">4868</span>      if (reader != null) {<a name="line.4868"></a>
-<span class="sourceLineNo">4869</span>         reader.close();<a name="line.4869"></a>
-<span class="sourceLineNo">4870</span>      }<a name="line.4870"></a>
-<span class="sourceLineNo">4871</span>    }<a name="line.4871"></a>
-<span class="sourceLineNo">4872</span>  }<a name="line.4872"></a>
-<span class="sourceLineNo">4873</span><a name="line.4873"></a>
-<span class="sourceLineNo">4874</span>  /**<a name="line.4874"></a>
-<span class="sourceLineNo">4875</span>   * Call to complete a compaction. Its for the case where we find in the WAL a compaction<a name="line.4875"></a>
-<span class="sourceLineNo">4876</span>   * that was not finished.  We could find one recovering a WAL after a regionserver crash.<a name="line.4876"></a>
-<span class="sourceLineNo">4877</span>   * See HBASE-2331.<a name="line.4877"></a>
-<span class="sourceLineNo">4878</span>   */<a name="line.4878"></a>
-<span class="sourceLineNo">4879</span>  void replayWALCompactionMarker(CompactionDescriptor compaction, boolean pickCompactionFiles,<a name="line.4879"></a>
-<span class="sourceLineNo">4880</span>      boolean removeFiles, long replaySeqId)<a name="line.4880"></a>
-<span class="sourceLineNo">4881</span>      throws IOException {<a name="line.4881"></a>
-<span class="sourceLineNo">4882</span>    try {<a name="line.4882"></a>
-<span class="sourceLineNo">4883</span>      checkTargetRegion(compaction.getEncodedRegionName().toByteArray(),<a name="line.4883"></a>
-<span class="sourceLineNo">4884</span>        "Compaction marker from WAL ", compaction);<a name="line.4884"></a>
-<span class="sourceLineNo">4885</span>    } catch (WrongRegionException wre) {<a name="line.4885"></a>
-<span class="sourceLineNo">4886</span>      if (RegionReplicaUtil.isDefaultReplica(this.getRegionInfo())) {<a name="line.4886"></a>
-<span class="sourceLineNo">4887</span>        // skip the compaction marker since it is not for this region<a name="line.4887"></a>
-<span class="sourceLineNo">4888</span>        return;<a name="line.4888"></a>
-<span class="sourceLineNo">4889</span>      }<a name="line.4889"></a>
-<span class="sourceLineNo">4890</span>      throw wre;<a name="line.4890"></a>
-<span class="sourceLineNo">4891</span>    }<a name="line.4891"></a>
-<span class="sourceLineNo">4892</span><a name="line.4892"></a>
-<span class="sourceLineNo">4893</span>    synchronized (writestate) {<a name="line.4893"></a>
-<span class="sourceLineNo">4894</span>      if (replaySeqId &lt; lastReplayedOpenRegionSeqId) {<a name="line.4894"></a>
-<span class="sourceLineNo">4895</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4895"></a>
-<span class="sourceLineNo">4896</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4896"></a>
-<span class="sourceLineNo">4897</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4897"></a>
-<span class="sourceLineNo">4898</span>            + "lastReplayedOpenRegionSeqId of " + lastReplayedOpenRegionSeqId);<a name="line.4898"></a>
-<span class="sourceLineNo">4899</span>        return;<a name="line.4899"></a>
-<span class="sourceLineNo">4900</span>      }<a name="line.4900"></a>
-<span class="sourceLineNo">4901</span>      if (replaySeqId &lt; lastReplayedCompactionSeqId) {<a name="line.4901"></a>
-<span class="sourceLineNo">4902</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4902"></a>
-<span class="sourceLineNo">4903</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4903"></a>
-<span class="sourceLineNo">4904</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4904"></a>
-<span class="sourceLineNo">4905</span>            + "lastReplayedCompactionSeqId of " + lastReplayedCompactionSeqId);<a name="line.4905"></a>
-<span class="sourceLineNo">4906</span>        return;<a name="line.4906"></a>
-<span class="sourceLineNo">4907</span>      } else {<a name="line.4907"></a>
-<span class="sourceLineNo">4908</span>        lastReplayedCompactionSeqId = replaySeqId;<a name="line.4908"></a>
-<span class="sourceLin

<TRUNCATED>

[33/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index 803f0d5..e4e3146 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: 3800,
-             Errors: 15098,
+      <title>File: 3803,
+             Errors: 15094,
              Warnings: 0,
              Infos: 0
       </title>
@@ -970,6 +970,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestTableOperationException.java">org/apache/hadoop/hbase/client/TestTableOperationException.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.util.Triple.java">org/apache/hadoop/hbase/util/Triple.java</a>
                 </td>
                 <td>
@@ -23958,6 +23972,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.InvalidMutationDurabilityException.java">org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.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.wal.TestAsyncWALReplayCompressed.java">org/apache/hadoop/hbase/regionserver/wal/TestAsyncWALReplayCompressed.java</a>
                 </td>
                 <td>
@@ -24182,6 +24210,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestInvalidMutationDurabilityException.java">org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.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.client.TestAdminShell.java">org/apache/hadoop/hbase/client/TestAdminShell.java</a>
                 </td>
                 <td>
@@ -50231,7 +50273,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  212
+                  209
                 </td>
               </tr>
                           <tr>
@@ -51575,7 +51617,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  51
+                  50
                 </td>
               </tr>
                           <tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index 164dcfd..d32e73b 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -385,7 +385,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-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index 7dd2347..78ccae1 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <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" />
@@ -450,7 +450,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index a5498ca..411a550 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <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" />
@@ -889,7 +889,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index 32b3a94..ba11a8a 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <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" />
@@ -323,7 +323,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index e9ad51c..079f85c 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="20181025" />
+    <meta name="Date-Revision-yyyymmdd" content="20181026" />
     <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" />
@@ -1015,7 +1015,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-10-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-10-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/allclasses-frame.html b/devapidocs/allclasses-frame.html
index 90c0195..ec108ce 100644
--- a/devapidocs/allclasses-frame.html
+++ b/devapidocs/allclasses-frame.html
@@ -1292,6 +1292,7 @@
 <li><a href="org/apache/hadoop/hbase/InvalidFamilyOperationException.html" title="class in org.apache.hadoop.hbase" target="classFrame">InvalidFamilyOperationException</a></li>
 <li><a href="org/apache/hadoop/hbase/io/hfile/InvalidHFileException.html" title="class in org.apache.hadoop.hbase.io.hfile" target="classFrame">InvalidHFileException</a></li>
 <li><a href="org/apache/hadoop/hbase/security/visibility/InvalidLabelException.html" title="class in org.apache.hadoop.hbase.security.visibility" target="classFrame">InvalidLabelException</a></li>
+<li><a href="org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">InvalidMutationDurabilityException</a></li>
 <li><a href="org/apache/hadoop/hbase/filter/InvalidRowFilterException.html" title="class in org.apache.hadoop.hbase.filter" target="classFrame">InvalidRowFilterException</a></li>
 <li><a href="org/apache/hadoop/hbase/io/hfile/bucket/IOEngine.html" title="interface in org.apache.hadoop.hbase.io.hfile.bucket" target="classFrame"><span class="interfaceName">IOEngine</span></a></li>
 <li><a href="org/apache/hadoop/hbase/ipc/IPCUtil.html" title="class in org.apache.hadoop.hbase.ipc" target="classFrame">IPCUtil</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/devapidocs/allclasses-noframe.html b/devapidocs/allclasses-noframe.html
index efbca46..58a2eeb 100644
--- a/devapidocs/allclasses-noframe.html
+++ b/devapidocs/allclasses-noframe.html
@@ -1292,6 +1292,7 @@
 <li><a href="org/apache/hadoop/hbase/InvalidFamilyOperationException.html" title="class in org.apache.hadoop.hbase">InvalidFamilyOperationException</a></li>
 <li><a href="org/apache/hadoop/hbase/io/hfile/InvalidHFileException.html" title="class in org.apache.hadoop.hbase.io.hfile">InvalidHFileException</a></li>
 <li><a href="org/apache/hadoop/hbase/security/visibility/InvalidLabelException.html" title="class in org.apache.hadoop.hbase.security.visibility">InvalidLabelException</a></li>
+<li><a href="org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver">InvalidMutationDurabilityException</a></li>
 <li><a href="org/apache/hadoop/hbase/filter/InvalidRowFilterException.html" title="class in org.apache.hadoop.hbase.filter">InvalidRowFilterException</a></li>
 <li><a href="org/apache/hadoop/hbase/io/hfile/bucket/IOEngine.html" title="interface in org.apache.hadoop.hbase.io.hfile.bucket"><span class="interfaceName">IOEngine</span></a></li>
 <li><a href="org/apache/hadoop/hbase/ipc/IPCUtil.html" title="class in org.apache.hadoop.hbase.ipc">IPCUtil</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 00e5cf8..a6756de 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3824,7 +3824,7 @@
 <!--   -->
 </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>"Thu Oct 25 14:45:40 UTC 2018"</code></td>
+<td class="colLast"><code>"Fri Oct 26 14:44:46 UTC 2018"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
@@ -3838,7 +3838,7 @@
 <!--   -->
 </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>"b014bfc106d82698ed39111e265b6e61"</code></td>
+<td class="colLast"><code>"5655ad68eedc4f95ae249880bece0975"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.url">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index e100ed0..27fe145 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -10616,12 +10616,12 @@
 <dd>
 <div class="block">Throws an IOException back out if one is currently stored.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegion.html#checkFamilies-java.util.Collection-">checkFamilies(Collection&lt;byte[]&gt;)</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">Check the collection of families for validity.</div>
-</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegion.html#checkFamilies-java.util.Collection-org.apache.hadoop.hbase.client.Durability-">checkFamilies(Collection&lt;byte[]&gt;, Durability)</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>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#checkFamily">checkFamily</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegion.html#checkFamily-byte:A-org.apache.hadoop.hbase.client.Durability-">checkFamily(byte[], Durability)</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>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegion.html#checkFamily-byte:A-">checkFamily(byte[])</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>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterWalManager.html#checkFileSystem--">checkFileSystem()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterWalManager.html" title="class in org.apache.hadoop.hbase.master">MasterWalManager</a></dt>
@@ -45348,10 +45348,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#getOrCreateNode-long-">getOrCreateNode(long)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.<a href="org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#getOrCreateNodeNoGrowOrMerge-long-">getOrCreateNodeNoGrowOrMerge(long)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.<a href="org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#getOrCreateNodeWithGrowOrMerge-long-">getOrCreateNodeWithGrowOrMerge(long)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.<a href="org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/RegionStates.html#getOrCreateRegionStateNode-org.apache.hadoop.hbase.client.RegionInfo-">getOrCreateRegionStateNode(RegionInfo)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/RegionStates.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/RegionStates.html#getOrCreateServer-org.apache.hadoop.hbase.ServerName-">getOrCreateServer(ServerName)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/RegionStates.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates</a></dt>
@@ -62457,6 +62453,16 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/visibility/InvalidLabelException.html#InvalidLabelException-java.lang.String-">InvalidLabelException(String)</a></span> - Constructor for exception org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/InvalidLabelException.html" title="class in org.apache.hadoop.hbase.security.visibility">InvalidLabelException</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">InvalidMutationDurabilityException</span></a> - Exception in <a href="org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
+<dd>
+<div class="block">Thrown if Mutation's <a href="org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><code>Durability</code></a> is skip wal but table need replication.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html#InvalidMutationDurabilityException--">InvalidMutationDurabilityException()</a></span> - Constructor for exception org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver">InvalidMutationDurabilityException</a></dt>
+<dd>
+<div class="block">default constructor</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html#InvalidMutationDurabilityException-java.lang.String-">InvalidMutationDurabilityException(String)</a></span> - Constructor for exception org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver">InvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/filter/InvalidRowFilterException.html" title="class in org.apache.hadoop.hbase.filter"><span class="typeNameLink">InvalidRowFilterException</span></a> - Exception in <a href="org/apache/hadoop/hbase/filter/package-summary.html">org.apache.hadoop.hbase.filter</a></dt>
 <dd>
 <div class="block">Used to indicate an invalid RowFilter.</div>
@@ -122900,6 +122906,8 @@ the order they are declared.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/replication/AbstractPeerProcedure.html#waitInitialized-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">waitInitialized(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/AbstractPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">AbstractPeerProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html#waitInitialized-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">waitInitialized(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">RefreshPeerProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/Procedure.html#waitInitialized-TEnvironment-">waitInitialized(TEnvironment)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a></dt>
 <dd>
 <div class="block">The <a href="org/apache/hadoop/hbase/procedure2/Procedure.html#doAcquireLock-TEnvironment-org.apache.hadoop.hbase.procedure2.store.ProcedureStore-"><code>Procedure.doAcquireLock(Object, ProcedureStore)</code></a> will be split into two steps, first, it will

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/org/apache/hadoop/hbase/DoNotRetryIOException.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/DoNotRetryIOException.html b/devapidocs/org/apache/hadoop/hbase/DoNotRetryIOException.html
index 78b91bd..06828f1 100644
--- a/devapidocs/org/apache/hadoop/hbase/DoNotRetryIOException.html
+++ b/devapidocs/org/apache/hadoop/hbase/DoNotRetryIOException.html
@@ -127,7 +127,7 @@
 </dl>
 <dl>
 <dt>Direct Known Subclasses:</dt>
-<dd><a href="../../../../org/apache/hadoop/hbase/security/AccessDeniedException.html" title="class in org.apache.hadoop.hbase.security">AccessDeniedException</a>, <a href="../../../../org/apache/hadoop/hbase/constraint/ConstraintException.html" title="class in org.apache.hadoop.hbase.constraint">ConstraintException</a>, <a href="../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorException.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorException</a>, <a href="../../../../org/apache/hadoop/hbase/io/hfile/CorruptHFileException.html" title="class in org.apache.hadoop.hbase.io.hfile">CorruptHFileException</a>, <a href="../../../../org/apache/hadoop/hbase/client/DoNotRetryRegionException.html" title="class in org.apache.hadoop.hbase.client">DoNotRetryRegionException</a>, <a href="../../../../org/apache/hadoop/hbase/exceptions/FailedSanityCheckException.html" title="class in org.apache.hadoop.hbase.exceptions">FailedSanityCheckException</a>, <a href="../../..
 /../org/apache/hadoop/hbase/ipc/FatalConnectionException.html" title="class in org.apache.hadoop.hbase.ipc">FatalConnectionException</a>, <a href="../../../../org/apache/hadoop/hbase/snapshot/HBaseSnapshotException.html" title="class in org.apache.hadoop.hbase.snapshot">HBaseSnapshotException</a>, <a href="../../../../org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html" title="class in org.apache.hadoop.hbase.master">HMaster.MasterStoppedException</a>, <a href="../../../../org/apache/hadoop/hbase/InvalidFamilyOperationException.html" title="class in org.apache.hadoop.hbase">InvalidFamilyOperationException</a>, <a href="../../../../org/apache/hadoop/hbase/security/visibility/InvalidLabelException.html" title="class in org.apache.hadoop.hbase.security.visibility">InvalidLabelException</a>, <a href="../../../../org/apache/hadoop/hbase/security/visibility/LabelAlreadyExistsException.html" title="class in org.apache.hadoop.hbase.security.visibility">LabelAlreadyExistsExcep
 tion</a>, <a href="../../../../org/apache/hadoop/hbase/regionserver/LeaseException.html" title="class in org.apache.hadoop.hbase.regionserver">LeaseException</a>, <a href="../../../../org/apache/hadoop/hbase/NamespaceExistException.html" title="class in org.apache.hadoop.hbase">NamespaceExistException</a>, <a href="../../../../org/apache/hadoop/hbase/NamespaceNotFoundException.html" title="class in org.apache.hadoop.hbase">NamespaceNotFoundException</a>, <a href="../../../../org/apache/hadoop/hbase/regionserver/NoSuchColumnFamilyException.html" title="class in org.apache.hadoop.hbase.regionserver">NoSuchColumnFamilyException</a>, <a href="../../../../org/apache/hadoop/hbase/NotAllMetaRegionsOnlineException.html" title="class in org.apache.hadoop.hbase">NotAllMetaRegionsOnlineException</a>, <a href="../../../../org/apache/hadoop/hbase/exceptions/OutOfOrderScannerNextException.html" title="class in org.apache.hadoop.hbase.exceptions">OutOfOrderScannerNextException</a>, <a href="../../
 ../../org/apache/hadoop/hbase/quotas/QuotaExceededException.html" title="class in org.apache.hadoop.hbase.quotas">QuotaExceededException</a>, <a href="../../../../org/apache/hadoop/hbase/ReplicationPeerNotFoundException.html" title="class in org.apache.hadoop.hbase">ReplicationPeerNotFoundException</a>, <a href="../../../../org/apache/hadoop/hbase/exceptions/RequestTooBigException.html" title="class in org.apache.hadoop.hbase.exceptions">RequestTooBigException</a>, <a href="../../../../org/apache/hadoop/hbase/exceptions/ScannerResetException.html" title="class in org.apache.hadoop.hbase.exceptions">ScannerResetException</a>, <a href="../../../../org/apache/hadoop/hbase/ipc/ServerTooBusyException.html" title="class in org.apache.hadoop.hbase.ipc">ServerTooBusyException</a>, <a href="../../../../org/apache/hadoop/hbase/TableExistsException.html" title="class in org.apache.hadoop.hbase">TableExistsException</a>, <a href="../../../../org/apache/hadoop/hbase/TableNotDisabledException.htm
 l" title="class in org.apache.hadoop.hbase">TableNotDisabledException</a>, <a href="../../../../org/apache/hadoop/hbase/TableNotEnabledException.html" title="class in org.apache.hadoop.hbase">TableNotEnabledException</a>, <a href="../../../../org/apache/hadoop/hbase/TableNotFoundException.html" title="class in org.apache.hadoop.hbase">TableNotFoundException</a>, <a href="../../../../org/apache/hadoop/hbase/exceptions/UnknownProtocolException.html" title="class in org.apache.hadoop.hbase.exceptions">UnknownProtocolException</a>, <a href="../../../../org/apache/hadoop/hbase/UnknownScannerException.html" title="class in org.apache.hadoop.hbase">UnknownScannerException</a></dd>
+<dd><a href="../../../../org/apache/hadoop/hbase/security/AccessDeniedException.html" title="class in org.apache.hadoop.hbase.security">AccessDeniedException</a>, <a href="../../../../org/apache/hadoop/hbase/constraint/ConstraintException.html" title="class in org.apache.hadoop.hbase.constraint">ConstraintException</a>, <a href="../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorException.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorException</a>, <a href="../../../../org/apache/hadoop/hbase/io/hfile/CorruptHFileException.html" title="class in org.apache.hadoop.hbase.io.hfile">CorruptHFileException</a>, <a href="../../../../org/apache/hadoop/hbase/client/DoNotRetryRegionException.html" title="class in org.apache.hadoop.hbase.client">DoNotRetryRegionException</a>, <a href="../../../../org/apache/hadoop/hbase/exceptions/FailedSanityCheckException.html" title="class in org.apache.hadoop.hbase.exceptions">FailedSanityCheckException</a>, <a href="../../..
 /../org/apache/hadoop/hbase/ipc/FatalConnectionException.html" title="class in org.apache.hadoop.hbase.ipc">FatalConnectionException</a>, <a href="../../../../org/apache/hadoop/hbase/snapshot/HBaseSnapshotException.html" title="class in org.apache.hadoop.hbase.snapshot">HBaseSnapshotException</a>, <a href="../../../../org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html" title="class in org.apache.hadoop.hbase.master">HMaster.MasterStoppedException</a>, <a href="../../../../org/apache/hadoop/hbase/InvalidFamilyOperationException.html" title="class in org.apache.hadoop.hbase">InvalidFamilyOperationException</a>, <a href="../../../../org/apache/hadoop/hbase/security/visibility/InvalidLabelException.html" title="class in org.apache.hadoop.hbase.security.visibility">InvalidLabelException</a>, <a href="../../../../org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver">InvalidMutationDurabilityExcep
 tion</a>, <a href="../../../../org/apache/hadoop/hbase/security/visibility/LabelAlreadyExistsException.html" title="class in org.apache.hadoop.hbase.security.visibility">LabelAlreadyExistsException</a>, <a href="../../../../org/apache/hadoop/hbase/regionserver/LeaseException.html" title="class in org.apache.hadoop.hbase.regionserver">LeaseException</a>, <a href="../../../../org/apache/hadoop/hbase/NamespaceExistException.html" title="class in org.apache.hadoop.hbase">NamespaceExistException</a>, <a href="../../../../org/apache/hadoop/hbase/NamespaceNotFoundException.html" title="class in org.apache.hadoop.hbase">NamespaceNotFoundException</a>, <a href="../../../../org/apache/hadoop/hbase/regionserver/NoSuchColumnFamilyException.html" title="class in org.apache.hadoop.hbase.regionserver">NoSuchColumnFamilyException</a>, <a href="../../../../org/apache/hadoop/hbase/NotAllMetaRegionsOnlineException.html" title="class in org.apache.hadoop.hbase">NotAllMetaRegionsOnlineException</a>, <a 
 href="../../../../org/apache/hadoop/hbase/exceptions/OutOfOrderScannerNextException.html" title="class in org.apache.hadoop.hbase.exceptions">OutOfOrderScannerNextException</a>, <a href="../../../../org/apache/hadoop/hbase/quotas/QuotaExceededException.html" title="class in org.apache.hadoop.hbase.quotas">QuotaExceededException</a>, <a href="../../../../org/apache/hadoop/hbase/ReplicationPeerNotFoundException.html" title="class in org.apache.hadoop.hbase">ReplicationPeerNotFoundException</a>, <a href="../../../../org/apache/hadoop/hbase/exceptions/RequestTooBigException.html" title="class in org.apache.hadoop.hbase.exceptions">RequestTooBigException</a>, <a href="../../../../org/apache/hadoop/hbase/exceptions/ScannerResetException.html" title="class in org.apache.hadoop.hbase.exceptions">ScannerResetException</a>, <a href="../../../../org/apache/hadoop/hbase/ipc/ServerTooBusyException.html" title="class in org.apache.hadoop.hbase.ipc">ServerTooBusyException</a>, <a href="../../../..
 /org/apache/hadoop/hbase/TableExistsException.html" title="class in org.apache.hadoop.hbase">TableExistsException</a>, <a href="../../../../org/apache/hadoop/hbase/TableNotDisabledException.html" title="class in org.apache.hadoop.hbase">TableNotDisabledException</a>, <a href="../../../../org/apache/hadoop/hbase/TableNotEnabledException.html" title="class in org.apache.hadoop.hbase">TableNotEnabledException</a>, <a href="../../../../org/apache/hadoop/hbase/TableNotFoundException.html" title="class in org.apache.hadoop.hbase">TableNotFoundException</a>, <a href="../../../../org/apache/hadoop/hbase/exceptions/UnknownProtocolException.html" title="class in org.apache.hadoop.hbase.exceptions">UnknownProtocolException</a>, <a href="../../../../org/apache/hadoop/hbase/UnknownScannerException.html" title="class in org.apache.hadoop.hbase">UnknownScannerException</a></dd>
 </dl>
 <hr>
 <br>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 06e7f45..155a44c 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -168,9 +168,9 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.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.BackupPhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupPhase</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupState.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupRestoreConstants.BackupCommand.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupRestoreConstants.BackupCommand</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.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/BackupInfo.BackupPhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupPhase</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/org/apache/hadoop/hbase/class-use/DoNotRetryIOException.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/DoNotRetryIOException.html b/devapidocs/org/apache/hadoop/hbase/class-use/DoNotRetryIOException.html
index 973f65b..8d32575 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/DoNotRetryIOException.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/DoNotRetryIOException.html
@@ -664,11 +664,17 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver">InvalidMutationDurabilityException</a></span></code>
+<div class="block">Thrown if Mutation's <a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><code>Durability</code></a> is skip wal but table need replication.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/LeaseException.html" title="class in org.apache.hadoop.hbase.regionserver">LeaseException</a></span></code>
 <div class="block">Reports a problem with a lease</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>class&nbsp;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/NoSuchColumnFamilyException.html" title="class in org.apache.hadoop.hbase.regionserver">NoSuchColumnFamilyException</a></span></code>
 <div class="block">Thrown if request for nonexistent column family.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/org/apache/hadoop/hbase/class-use/HBaseIOException.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/HBaseIOException.html b/devapidocs/org/apache/hadoop/hbase/class-use/HBaseIOException.html
index 4ccdd15..7889644 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/HBaseIOException.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/HBaseIOException.html
@@ -1087,11 +1087,17 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.regionserver">InvalidMutationDurabilityException</a></span></code>
+<div class="block">Thrown if Mutation's <a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><code>Durability</code></a> is skip wal but table need replication.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/LeaseException.html" title="class in org.apache.hadoop.hbase.regionserver">LeaseException</a></span></code>
 <div class="block">Reports a problem with a lease</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>class&nbsp;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/NoSuchColumnFamilyException.html" title="class in org.apache.hadoop.hbase.regionserver">NoSuchColumnFamilyException</a></span></code>
 <div class="block">Thrown if request for nonexistent column family.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html b/devapidocs/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html
index 8bd02f8..3dcc862 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1232">HTable.CheckAndMutateBuilderImpl</a>
+<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1217">HTable.CheckAndMutateBuilderImpl</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAndMutateBuilder.html" title="interface in org.apache.hadoop.hbase.client">Table.CheckAndMutateBuilder</a></pre>
 </li>
@@ -265,7 +265,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAnd
 <ul class="blockList">
 <li class="blockList">
 <h4>row</h4>
-<pre>private final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1234">row</a></pre>
+<pre>private final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1219">row</a></pre>
 </li>
 </ul>
 <a name="family">
@@ -274,7 +274,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAnd
 <ul class="blockList">
 <li class="blockList">
 <h4>family</h4>
-<pre>private final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1235">family</a></pre>
+<pre>private final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1220">family</a></pre>
 </li>
 </ul>
 <a name="qualifier">
@@ -283,7 +283,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAnd
 <ul class="blockList">
 <li class="blockList">
 <h4>qualifier</h4>
-<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1236">qualifier</a></pre>
+<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1221">qualifier</a></pre>
 </li>
 </ul>
 <a name="timeRange">
@@ -292,7 +292,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAnd
 <ul class="blockList">
 <li class="blockList">
 <h4>timeRange</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/TimeRange.html" title="class in org.apache.hadoop.hbase.io">TimeRange</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1237">timeRange</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/TimeRange.html" title="class in org.apache.hadoop.hbase.io">TimeRange</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1222">timeRange</a></pre>
 </li>
 </ul>
 <a name="op">
@@ -301,7 +301,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAnd
 <ul class="blockList">
 <li class="blockList">
 <h4>op</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase">CompareOperator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1238">op</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase">CompareOperator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1223">op</a></pre>
 </li>
 </ul>
 <a name="value">
@@ -310,7 +310,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAnd
 <ul class="blockListLast">
 <li class="blockList">
 <h4>value</h4>
-<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1239">value</a></pre>
+<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1224">value</a></pre>
 </li>
 </ul>
 </li>
@@ -327,7 +327,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAnd
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CheckAndMutateBuilderImpl</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1241">CheckAndMutateBuilderImpl</a>(byte[]&nbsp;row,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1226">CheckAndMutateBuilderImpl</a>(byte[]&nbsp;row,
                           byte[]&nbsp;family)</pre>
 </li>
 </ul>
@@ -345,7 +345,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAnd
 <ul class="blockList">
 <li class="blockList">
 <h4>qualifier</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAndMutateBuilder.html" title="interface in org.apache.hadoop.hbase.client">Table.CheckAndMutateBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1247">qualifier</a>(byte[]&nbsp;qualifier)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAndMutateBuilder.html" title="interface in org.apache.hadoop.hbase.client">Table.CheckAndMutateBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1232">qualifier</a>(byte[]&nbsp;qualifier)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAndMutateBuilder.html#qualifier-byte:A-">qualifier</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAndMutateBuilder.html" title="interface in org.apache.hadoop.hbase.client">Table.CheckAndMutateBuilder</a></code></dd>
@@ -360,7 +360,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAnd
 <ul class="blockList">
 <li class="blockList">
 <h4>timeRange</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAndMutateBuilder.html" title="interface in org.apache.hadoop.hbase.client">Table.CheckAndMutateBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1254">timeRange</a>(<a href="../../../../../org/apache/hadoop/hbase/io/TimeRange.html" title="class in org.apache.hadoop.hbase.io">TimeRange</a>&nbsp;timeRange)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAndMutateBuilder.html" title="interface in org.apache.hadoop.hbase.client">Table.CheckAndMutateBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1239">timeRange</a>(<a href="../../../../../org/apache/hadoop/hbase/io/TimeRange.html" title="class in org.apache.hadoop.hbase.io">TimeRange</a>&nbsp;timeRange)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAndMutateBuilder.html#timeRange-org.apache.hadoop.hbase.io.TimeRange-">timeRange</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAndMutateBuilder.html" title="interface in org.apache.hadoop.hbase.client">Table.CheckAndMutateBuilder</a></code></dd>
@@ -375,7 +375,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAnd
 <ul class="blockList">
 <li class="blockList">
 <h4>ifNotExists</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAndMutateBuilder.html" title="interface in org.apache.hadoop.hbase.client">Table.CheckAndMutateBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1260">ifNotExists</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAndMutateBuilder.html" title="interface in org.apache.hadoop.hbase.client">Table.CheckAndMutateBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1245">ifNotExists</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAndMutateBuilder.html#ifNotExists--">Table.CheckAndMutateBuilder</a></code></span></div>
 <div class="block">Check for lack of column.</div>
 <dl>
@@ -390,7 +390,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAnd
 <ul class="blockList">
 <li class="blockList">
 <h4>ifMatches</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAndMutateBuilder.html" title="interface in org.apache.hadoop.hbase.client">Table.CheckAndMutateBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1267">ifMatches</a>(<a href="../../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase">CompareOperator</a>&nbsp;compareOp,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAndMutateBuilder.html" title="interface in org.apache.hadoop.hbase.client">Table.CheckAndMutateBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1252">ifMatches</a>(<a href="../../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase">CompareOperator</a>&nbsp;compareOp,
                                              byte[]&nbsp;value)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -407,7 +407,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAnd
 <ul class="blockList">
 <li class="blockList">
 <h4>preCheck</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1273">preCheck</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1258">preCheck</a>()</pre>
 </li>
 </ul>
 <a name="thenPut-org.apache.hadoop.hbase.client.Put-">
@@ -416,7 +416,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAnd
 <ul class="blockList">
 <li class="blockList">
 <h4>thenPut</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1279">thenPut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;put)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1264">thenPut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;put)
                 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>
@@ -436,7 +436,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAnd
 <ul class="blockList">
 <li class="blockList">
 <h4>thenDelete</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1285">thenDelete</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&nbsp;delete)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1270">thenDelete</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&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></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -456,7 +456,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAnd
 <ul class="blockListLast">
 <li class="blockList">
 <h4>thenMutate</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1291">thenMutate</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client">RowMutations</a>&nbsp;mutation)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html#line.1276">thenMutate</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client">RowMutations</a>&nbsp;mutation)
                    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>


[07/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index c49ee64..1348308 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -3391,10 +3391,14 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html#CF">CF</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html" title="class in org.apache.hadoop.hbase.client">TestGetScanPartialResult</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#CF">CF</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestMvccConsistentScanner.html#CF">CF</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestMvccConsistentScanner.html" title="class in org.apache.hadoop.hbase.client">TestMvccConsistentScanner</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html#CF">CF</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html" title="class in org.apache.hadoop.hbase.client">TestScanWithoutFetchingData</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.html#CF">CF</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/encoding/TestChangingEncoding.html#CF">CF</a></span> - Static variable in class org.apache.hadoop.hbase.io.encoding.<a href="org/apache/hadoop/hbase/io/encoding/TestChangingEncoding.html" title="class in org.apache.hadoop.hbase.io.encoding">TestChangingEncoding</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/TestForceCacheImportantBlocks.html#CF">CF</a></span> - Static variable in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestForceCacheImportantBlocks.html" title="class in org.apache.hadoop.hbase.io.hfile">TestForceCacheImportantBlocks</a></dt>
@@ -4463,6 +4467,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestIntraRowPagination.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestIntraRowPagination.html" title="class in org.apache.hadoop.hbase.client">TestIntraRowPagination</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestLeaseRenewal.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestLeaseRenewal.html" title="class in org.apache.hadoop.hbase.client">TestLeaseRenewal</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestLimitedScanWithFilter.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestLimitedScanWithFilter.html" title="class in org.apache.hadoop.hbase.client">TestLimitedScanWithFilter</a></dt>
@@ -4623,6 +4629,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableFavoredNodes.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableFavoredNodes.html" title="class in org.apache.hadoop.hbase.client">TestTableFavoredNodes</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableShell.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableShell.html" title="class in org.apache.hadoop.hbase.client">TestTableShell</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableSnapshotScanner.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableSnapshotScanner.html" title="class in org.apache.hadoop.hbase.client">TestTableSnapshotScanner</a></dt>
@@ -9482,8 +9490,12 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestAsyncTableScanRenewLease.html#CQ">CQ</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestAsyncTableScanRenewLease.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableScanRenewLease</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#CQ">CQ</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html#CQ">CQ</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html" title="class in org.apache.hadoop.hbase.client">TestScanWithoutFetchingData</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.html#CQ">CQ</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestProcedurePriority.html#CQ">CQ</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestProcedurePriority.html" title="class in org.apache.hadoop.hbase.master.procedure">TestProcedurePriority</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.html#CQ">CQ</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompactionInDeadRegionServer</a></dt>
@@ -18384,6 +18396,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestServerBusyException.SleepLongerAtFirstCoprocessor.html#getRegionObserver--">getRegionObserver()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestServerBusyException.SleepLongerAtFirstCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException.SleepLongerAtFirstCoprocessor</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html#getRegionObserver--">getRegionObserver()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html#getRegionObserver--">getRegionObserver()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException.ThrowIOExceptionCoprocessor</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/SampleRegionWALCoprocessor.html#getRegionObserver--">getRegionObserver()</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/SampleRegionWALCoprocessor.html" title="class in org.apache.hadoop.hbase.coprocessor">SampleRegionWALCoprocessor</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.html#getRegionObserver--">getRegionObserver()</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">SimpleRegionObserver</a></dt>
@@ -27765,6 +27781,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/filter/TestFilter.html#NEW_FAMILIES">NEW_FAMILIES</a></span> - Variable in class org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/TestFilter.html" title="class in org.apache.hadoop.hbase.filter">TestFilter</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#newAppendWithSkipWAL--">newAppendWithSkipWAL()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/TestProtobufRpcServiceImpl.html#newBlockingStub-org.apache.hadoop.hbase.ipc.RpcClient-java.net.InetSocketAddress-">newBlockingStub(RpcClient, InetSocketAddress)</a></span> - Static method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/TestProtobufRpcServiceImpl.html" title="class in org.apache.hadoop.hbase.ipc">TestProtobufRpcServiceImpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/TestProtobufRpcServiceImpl.html#newBlockingStub-org.apache.hadoop.hbase.ipc.RpcClient-java.net.InetSocketAddress-org.apache.hadoop.hbase.security.User-">newBlockingStub(RpcClient, InetSocketAddress, User)</a></span> - Static method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/TestProtobufRpcServiceImpl.html" title="class in org.apache.hadoop.hbase.ipc">TestProtobufRpcServiceImpl</a></dt>
@@ -27777,10 +27795,14 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestRpcControllerFactory.StaticRpcControllerFactory.html#newController-java.util.List-">newController(List&lt;CellScannable&gt;)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestRpcControllerFactory.StaticRpcControllerFactory.html" title="class in org.apache.hadoop.hbase.client">TestRpcControllerFactory.StaticRpcControllerFactory</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#newDeleteWithSkipWAL--">newDeleteWithSkipWAL()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicy.html#NewerThanIncomingWindow--">NewerThanIncomingWindow()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">TestDateTieredCompactionPolicy</a></dt>
 <dd>
 <div class="block">Test for file newer than incoming window</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#newIncrementWithSkipWAL--">newIncrementWithSkipWAL()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/MapreduceTestingShim.MapreduceV1Shim.html#newJob-org.apache.hadoop.conf.Configuration-">newJob(Configuration)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/MapreduceTestingShim.MapreduceV1Shim.html" title="class in org.apache.hadoop.hbase.mapreduce">MapreduceTestingShim.MapreduceV1Shim</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/MapreduceTestingShim.MapreduceV2Shim.html#newJob-org.apache.hadoop.conf.Configuration-">newJob(Configuration)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/MapreduceTestingShim.MapreduceV2Shim.html" title="class in org.apache.hadoop.hbase.mapreduce">MapreduceTestingShim.MapreduceV2Shim</a></dt>
@@ -27815,6 +27837,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/TestDurability.html#newPut-org.apache.hadoop.hbase.client.Durability-">newPut(Durability)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/TestDurability.html" title="class in org.apache.hadoop.hbase.regionserver.wal">TestDurability</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#newPutWithSkipWAL--">newPutWithSkipWAL()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/AbstractTestFSWAL.html#newSlowWAL-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-java.lang.String-java.lang.String-org.apache.hadoop.conf.Configuration-java.util.List-boolean-java.lang.String-java.lang.String-java.lang.Runnable-">newSlowWAL(FileSystem, Path, String, String, Configuration, List&lt;WALActionsListener&gt;, boolean, String, String, Runnable)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/AbstractTestFSWAL.html" title="class in org.apache.hadoop.hbase.regionserver.wal">AbstractTestFSWAL</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/TestAsyncFSWAL.html#newSlowWAL-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-java.lang.String-java.lang.String-org.apache.hadoop.conf.Configuration-java.util.List-boolean-java.lang.String-java.lang.String-java.lang.Runnable-">newSlowWAL(FileSystem, Path, String, String, Configuration, List&lt;WALActionsListener&gt;, boolean, String, String, Runnable)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/TestAsyncFSWAL.html" title="class in org.apache.hadoop.hbase.regionserver.wal">TestAsyncFSWAL</a></dt>
@@ -30807,6 +30831,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestMasterObserver.CPMasterObserver.html#preAndPostForQueueLockAndHeartbeatLockCalled--">preAndPostForQueueLockAndHeartbeatLockCalled()</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestMasterObserver.CPMasterObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">TestMasterObserver.CPMasterObserver</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html#preAppend-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Append-">preAppend(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Append)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html#preAppend-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Append-">preAppend(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Append)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException.ThrowIOExceptionCoprocessor</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.html#preAppend-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Append-">preAppend(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Append)</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">SimpleRegionObserver</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestAppendTimeRange.MyObserver.html#preAppend-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Append-">preAppend(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Append)</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestAppendTimeRange.MyObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">TestAppendTimeRange.MyObserver</a></dt>
@@ -30945,6 +30973,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestServerBusyException.SleepCoprocessor.html#preDelete-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Delete-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-">preDelete(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Delete, WALEdit, Durability)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestServerBusyException.SleepCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException.SleepCoprocessor</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html#preDelete-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Delete-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-">preDelete(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Delete, WALEdit, Durability)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html#preDelete-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Delete-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-">preDelete(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Delete, WALEdit, Durability)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException.ThrowIOExceptionCoprocessor</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.html#preDelete-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Delete-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-">preDelete(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Delete, WALEdit, Durability)</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">SimpleRegionObserver</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestPassCustomCellViaRegionObserver.RegionObserverImpl.html#preDelete-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Delete-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-">preDelete(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Delete, WALEdit, Durability)</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestPassCustomCellViaRegionObserver.RegionObserverImpl.html" title="class in org.apache.hadoop.hbase.coprocessor">TestPassCustomCellViaRegionObserver.RegionObserverImpl</a></dt>
@@ -31115,6 +31147,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestServerBusyException.SleepLongerAtFirstCoprocessor.html#preGetOp-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Get-java.util.List-">preGetOp(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Get, List&lt;Cell&gt;)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestServerBusyException.SleepLongerAtFirstCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException.SleepLongerAtFirstCoprocessor</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html#preGetOp-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Get-java.util.List-">preGetOp(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Get, List&lt;Cell&gt;)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html#preGetOp-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Get-java.util.List-">preGetOp(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Get, List&lt;Cell&gt;)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException.ThrowIOExceptionCoprocessor</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.html#preGetOp-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Get-java.util.List-">preGetOp(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Get, List&lt;Cell&gt;)</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">SimpleRegionObserver</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.CustomRegionObserver.html#preGetOp-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Get-java.util.List-">preGetOp(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Get, List&lt;Cell&gt;)</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.CustomRegionObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">TestCoprocessorMetrics.CustomRegionObserver</a></dt>
@@ -31161,6 +31197,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestServerBusyException.SleepCoprocessor.html#preIncrement-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Increment-">preIncrement(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Increment)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestServerBusyException.SleepCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException.SleepCoprocessor</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html#preIncrement-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Increment-">preIncrement(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Increment)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html#preIncrement-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Increment-">preIncrement(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Increment)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException.ThrowIOExceptionCoprocessor</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.html#preIncrement-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Increment-">preIncrement(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Increment)</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">SimpleRegionObserver</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestIncrementTimeRange.MyObserver.html#preIncrement-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Increment-">preIncrement(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Increment)</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestIncrementTimeRange.MyObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">TestIncrementTimeRange.MyObserver</a></dt>
@@ -31324,6 +31364,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestServerBusyException.SleepCoprocessor.html#prePut-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Put-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-">prePut(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Put, WALEdit, Durability)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestServerBusyException.SleepCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException.SleepCoprocessor</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html#prePut-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Put-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-">prePut(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Put, WALEdit, Durability)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html#prePut-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Put-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-">prePut(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Put, WALEdit, Durability)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException.ThrowIOExceptionCoprocessor</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.html#prePut-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Put-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-">prePut(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Put, WALEdit, Durability)</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">SimpleRegionObserver</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestOpenTableInCoprocessor.CustomThreadPoolCoprocessor.html#prePut-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Put-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-">prePut(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Put, WALEdit, Durability)</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestOpenTableInCoprocessor.CustomThreadPoolCoprocessor.html" title="class in org.apache.hadoop.hbase.coprocessor">TestOpenTableInCoprocessor.CustomThreadPoolCoprocessor</a></dt>
@@ -37414,6 +37458,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html#setUp--">setUp()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html" title="class in org.apache.hadoop.hbase.client">TestGetScanPartialResult</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#setUp--">setUp()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestLeaseRenewal.html#setUp--">setUp()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestLeaseRenewal.html" title="class in org.apache.hadoop.hbase.client">TestLeaseRenewal</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestLimitedScanWithFilter.html#setUp--">setUp()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestLimitedScanWithFilter.html" title="class in org.apache.hadoop.hbase.client">TestLimitedScanWithFilter</a></dt>
@@ -37458,6 +37504,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableFavoredNodes.html#setup--">setup()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableFavoredNodes.html" title="class in org.apache.hadoop.hbase.client">TestTableFavoredNodes</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.html#setUp--">setUp()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTimestampsFilter.html#setUp--">setUp()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTimestampsFilter.html" title="class in org.apache.hadoop.hbase.client">TestTimestampsFilter</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestUpdateConfiguration.html#setup--">setup()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestUpdateConfiguration.html" title="class in org.apache.hadoop.hbase.client">TestUpdateConfiguration</a></dt>
@@ -42133,6 +42181,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/IntegrationTestTableSnapshotInputFormat.html#TABLE_DIR_KEY">TABLE_DIR_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/IntegrationTestTableSnapshotInputFormat.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestTableSnapshotInputFormat</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.html#TABLE_DONOT_RETRY">TABLE_DONOT_RETRY</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableMapReduceBase.html#TABLE_FOR_NEGATIVE_TESTS">TABLE_FOR_NEGATIVE_TESTS</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableMapReduceBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableMapReduceBase</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/AcidGuaranteesTestTool.html#TABLE_NAME">TABLE_NAME</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/AcidGuaranteesTestTool.html" title="class in org.apache.hadoop.hbase">AcidGuaranteesTestTool</a></dt>
@@ -42393,10 +42443,16 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/TestQuotaThrottle.html#TABLE_NAMES">TABLE_NAMES</a></span> - Static variable in class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/TestQuotaThrottle.html" title="class in org.apache.hadoop.hbase.quotas">TestQuotaThrottle</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#TABLE_NEED_REPLICATE">TABLE_NEED_REPLICATE</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/TestSyncReplicationWALProvider.html#TABLE_NO_REP">TABLE_NO_REP</a></span> - Static variable in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/TestSyncReplicationWALProvider.html" title="class in org.apache.hadoop.hbase.wal">TestSyncReplicationWALProvider</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#TABLE_NOT_REPLICATE">TABLE_NOT_REPLICATE</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestRpcControllerFactory.CountingRpcController.html#TABLE_PRIORITY">TABLE_PRIORITY</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestRpcControllerFactory.CountingRpcController.html" title="class in org.apache.hadoop.hbase.client">TestRpcControllerFactory.CountingRpcController</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.html#TABLE_RETRY">TABLE_RETRY</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.html#TABLE_SKIPPED">TABLE_SKIPPED</a></span> - Static variable in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">SimpleRegionObserver</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/TestScannerResource.html#TABLE_TO_BE_DISABLED">TABLE_TO_BE_DISABLED</a></span> - Static variable in class org.apache.hadoop.hbase.rest.<a href="org/apache/hadoop/hbase/rest/TestScannerResource.html" title="class in org.apache.hadoop.hbase.rest">TestScannerResource</a></dt>
@@ -42449,6 +42505,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/TestWALSplit.html#TABLEDIR">TABLEDIR</a></span> - Variable in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/TestWALSplit.html" title="class in org.apache.hadoop.hbase.wal">TestWALSplit</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.html#tableDoNotRetry">tableDoNotRetry</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/BaseTestHBaseFsck.html#tableExecutorService">tableExecutorService</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/BaseTestHBaseFsck.html" title="class in org.apache.hadoop.hbase.util">BaseTestHBaseFsck</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestFSVisitor.html#tableFamilies">tableFamilies</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestFSVisitor.html" title="class in org.apache.hadoop.hbase.util">TestFSVisitor</a></dt>
@@ -42729,6 +42787,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/procedure/ShellTestProcedure.html#tableNameString">tableNameString</a></span> - Variable in class org.apache.hadoop.hbase.client.procedure.<a href="org/apache/hadoop/hbase/client/procedure/ShellTestProcedure.html" title="class in org.apache.hadoop.hbase.client.procedure">ShellTestProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#tableNeedReplicate">tableNeedReplicate</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#tableNotReplicate">tableNotReplicate</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/snapshot/TestExportSnapshot.html#tableNumFiles">tableNumFiles</a></span> - Variable in class org.apache.hadoop.hbase.snapshot.<a href="org/apache/hadoop/hbase/snapshot/TestExportSnapshot.html" title="class in org.apache.hadoop.hbase.snapshot">TestExportSnapshot</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/filter/TestScanRowPrefix.html#tableOfTwoListsOfByteArrays-java.lang.String-java.util.List-java.lang.String-java.util.List-">tableOfTwoListsOfByteArrays(String, List&lt;byte[]&gt;, String, List&lt;byte[]&gt;)</a></span> - Method in class org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/TestScanRowPrefix.html" title="class in org.apache.hadoop.hbase.filter">TestScanRowPrefix</a></dt>
@@ -42751,6 +42813,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/locking/TestLockProcedure.html#tableRegions2">tableRegions2</a></span> - Static variable in class org.apache.hadoop.hbase.master.locking.<a href="org/apache/hadoop/hbase/master/locking/TestLockProcedure.html" title="class in org.apache.hadoop.hbase.master.locking">TestLockProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.html#tableRetry">tableRetry</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/hbck/OfflineMetaRebuildTestCore.html#tableRowCount-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.TableName-">tableRowCount(Configuration, TableName)</a></span> - Method in class org.apache.hadoop.hbase.util.hbck.<a href="org/apache/hadoop/hbase/util/hbck/OfflineMetaRebuildTestCore.html" title="class in org.apache.hadoop.hbase.util.hbck">OfflineMetaRebuildTestCore</a></dt>
 <dd>
 <div class="block">Returns the number of rows in a given table.</div>
@@ -42959,6 +43023,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html#tearDown--">tearDown()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html" title="class in org.apache.hadoop.hbase.client">TestGetScanPartialResult</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#tearDown--">tearDown()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestLeaseRenewal.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestLeaseRenewal.html" title="class in org.apache.hadoop.hbase.client">TestLeaseRenewal</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestLimitedScanWithFilter.html#tearDown--">tearDown()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestLimitedScanWithFilter.html" title="class in org.apache.hadoop.hbase.client">TestLimitedScanWithFilter</a></dt>
@@ -42993,6 +43059,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSnapshotTemporaryDirectory.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSnapshotTemporaryDirectory.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotTemporaryDirectory</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.html#tearDown--">tearDown()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableSnapshotScanner.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableSnapshotScanner.html" title="class in org.apache.hadoop.hbase.client">TestTableSnapshotScanner</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTimestampsFilter.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTimestampsFilter.html" title="class in org.apache.hadoop.hbase.client">TestTimestampsFilter</a></dt>
@@ -45852,8 +45920,16 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHRegion.html#testAppendTimestampsAreMonotonic--">testAppendTimestampsAreMonotonic()</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/client/TestInvalidMutationDurabilityException.html#testAppendToTableNeedReplicate--">testAppendToTableNeedReplicate()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#testAppendToTableNotReplicate--">testAppendToTableNotReplicate()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestAppendFromClientSide.html#testAppendWithCustomTimestamp--">testAppendWithCustomTimestamp()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestAppendFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestAppendFromClientSide</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.html#testAppendWithDoNotRetryIOException--">testAppendWithDoNotRetryIOException()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.html#testAppendWithIOException--">testAppendWithIOException()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#testAppendWithMultipleFamilies--">testAppendWithMultipleFamilies()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html" title="class in org.apache.hadoop.hbase.regionserver">TestAtomicOperation</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#testAppendWithNonExistingFamily--">testAppendWithNonExistingFamily()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html" title="class in org.apache.hadoop.hbase.regionserver">TestAtomicOperation</a></dt>
@@ -47762,6 +47838,10 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCheckTestClasses.html#TestCheckTestClasses--">TestCheckTestClasses()</a></span> - Constructor for class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCheckTestClasses.html" title="class in org.apache.hadoop.hbase">TestCheckTestClasses</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#testCheckWithMutateToTableNeedReplicate--">testCheckWithMutateToTableNeedReplicate()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#testCheckWithMutateToTableNotReplicate--">testCheckWithMutateToTableNotReplicate()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/TestStateMachineProcedure.html#testChildBadRollbackStateCount--">testChildBadRollbackStateCount()</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/TestStateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">TestStateMachineProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/TestChildProcedures.html#testChildLoad--">testChildLoad()</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/TestChildProcedures.html" title="class in org.apache.hadoop.hbase.procedure2">TestChildProcedures</a></dt>
@@ -50212,6 +50292,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestDeleteTimeStamp.html#TestDeleteTimeStamp--">TestDeleteTimeStamp()</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestDeleteTimeStamp.html" title="class in org.apache.hadoop.hbase.client">TestDeleteTimeStamp</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#testDeleteToTableNeedReplicate--">testDeleteToTableNeedReplicate()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#testDeleteToTableNotReplicate--">testDeleteToTableNotReplicate()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#testDeleteTypes--">testDeleteTypes()</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationSmallTests</a></dt>
 <dd>
 <div class="block">Verify that version and column delete marker types are replicated correctly.</div>
@@ -50222,6 +50306,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#testDeleteVersionsMixedAndMultipleVersionReturn--">testDeleteVersionsMixedAndMultipleVersionReturn()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScanner</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.html#testDeleteWithDoNotRetryIOException--">testDeleteWithDoNotRetryIOException()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestFromClientSide.html#testDeleteWithFailed--">testDeleteWithFailed()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestMasterFailoverWithProcedures.html#testDeleteWithFailover--">testDeleteWithFailover()</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>
@@ -50232,6 +50318,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/access/TestCellACLWithMultipleVersions.html#testDeleteWithFutureTimestamp--">testDeleteWithFutureTimestamp()</a></span> - Method in class org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/TestCellACLWithMultipleVersions.html" title="class in org.apache.hadoop.hbase.security.access">TestCellACLWithMultipleVersions</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.html#testDeleteWithIOException--">testDeleteWithIOException()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsWithDeletes.html#testDeleteWithNoVisibilitiesForPutsAndDeletes--">testDeleteWithNoVisibilitiesForPutsAndDeletes()</a></span> - Method in class org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsWithDeletes.html" title="class in org.apache.hadoop.hbase.security.visibility">TestVisibilityLabelsWithDeletes</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandlerWithReadOnly.html#testDeleteWithReadOnly--">testDeleteWithReadOnly()</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandlerWithReadOnly.html" title="class in org.apache.hadoop.hbase.thrift2">TestThriftHBaseServiceHandlerWithReadOnly</a></dt>
@@ -52740,8 +52828,12 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#testGetWithDeleteFamily--">testGetWithDeleteFamily()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestDefaultMemStore</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.html#testGetWithDoNotRetryIOException--">testGetWithDoNotRetryIOException()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHRegion.html#testGetWithFilter--">testGetWithFilter()</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/client/TestTableOperationException.html#testGetWithIOException--">testGetWithIOException()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html#testGetWithMultipleColumnFamilies--">testGetWithMultipleColumnFamilies()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html" title="class in org.apache.hadoop.hbase.client">TestBlockEvictionFromClient</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/nio/TestMultiByteBuff.html#testGetWithPosOnMultiBuffers--">testGetWithPosOnMultiBuffers()</a></span> - Method in class org.apache.hadoop.hbase.nio.<a href="org/apache/hadoop/hbase/nio/TestMultiByteBuff.html" title="class in org.apache.hadoop.hbase.nio">TestMultiByteBuff</a></dt>
@@ -53987,10 +54079,18 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHRegion.html#testIncrementTimestampsAreMonotonic--">testIncrementTimestampsAreMonotonic()</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/client/TestInvalidMutationDurabilityException.html#testIncrementToTableNeedReplicate--">testIncrementToTableNeedReplicate()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#testIncrementToTableNotReplicate--">testIncrementToTableNotReplicate()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#testIncrementWithCustomTimestamp--">testIncrementWithCustomTimestamp()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#testIncrementWithDeletes--">testIncrementWithDeletes()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.html#testIncrementWithDoNotRetryIOException--">testIncrementWithDoNotRetryIOException()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.html#testIncrementWithIOException--">testIncrementWithIOException()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#testIncrementWithNonExistingFamily--">testIncrementWithNonExistingFamily()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html" title="class in org.apache.hadoop.hbase.regionserver">TestAtomicOperation</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandlerWithReadOnly.html#testIncrementWithReadOnly--">testIncrementWithReadOnly()</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandlerWithReadOnly.html" title="class in org.apache.hadoop.hbase.thrift2">TestThriftHBaseServiceHandlerWithReadOnly</a></dt>
@@ -54208,6 +54308,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/bucket/TestBucketCache.html#testInvalidMinFactorConfig--">testInvalidMinFactorConfig()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.bucket.<a href="org/apache/hadoop/hbase/io/hfile/bucket/TestBucketCache.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">TestBucketCache</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestInvalidMutationDurabilityException</span></a> - Class in <a href="org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#TestInvalidMutationDurabilityException--">TestInvalidMutationDurabilityException()</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestTableName.html#testInvalidNamespace--">testInvalidNamespace()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestTableName.html" title="class in org.apache.hadoop.hbase">TestTableName</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/TestNamespacesInstanceResource.html#testInvalidNamespacePostsAndPuts--">testInvalidNamespacePostsAndPuts()</a></span> - Method in class org.apache.hadoop.hbase.rest.<a href="org/apache/hadoop/hbase/rest/TestNamespacesInstanceResource.html" title="class in org.apache.hadoop.hbase.rest">TestNamespacesInstanceResource</a></dt>
@@ -58763,12 +58867,20 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreChunkPool.html#testPuttingBackChunksWithOpeningScanner--">testPuttingBackChunksWithOpeningScanner()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreChunkPool.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreChunkPool</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#testPutToTableNeedReplicate--">testPutToTableNeedReplicate()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#testPutToTableNotReplicate--">testPutToTableNotReplicate()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#testPutTTL--">testPutTTL()</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2">TestThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/client/TestPutWithDelete.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestPutWithDelete</span></a> - Class in <a href="org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestPutWithDelete.html#TestPutWithDelete--">TestPutWithDelete()</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestPutWithDelete.html" title="class in org.apache.hadoop.hbase.client">TestPutWithDelete</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.html#testPutWithDoNotRetryIOException--">testPutWithDoNotRetryIOException()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.html#testPutWithIOException--">testPutWithIOException()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHRegion.html#testPutWithLatestTS--">testPutWithLatestTS()</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">Tests that the special LATEST_TIMESTAMP option for puts gets replaced by
@@ -64690,6 +64802,14 @@
 <dd>
 <div class="block">For HADOOP-2579</div>
 </dd>
+<dt><a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestTableOperationException</span></a> - Class in <a href="org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.html#TestTableOperationException--">TestTableOperationException()</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor</span></a> - Class in <a href="org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestTableOperationException.ThrowIOExceptionCoprocessor</span></a> - Class in <a href="org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestMasterObserver.html#testTableOperations--">testTableOperations()</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestMasterObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">TestMasterObserver</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#testTableOperations--">testTableOperations()</a></span> - Method in class org.apache.hadoop.hbase.namespace.<a href="org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html" title="class in org.apache.hadoop.hbase.namespace">TestNamespaceAuditor</a></dt>
@@ -66890,6 +67010,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestFailedAppendAndSync.DodgyFSLog.html#throwAppendException">throwAppendException</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestFailedAppendAndSync.DodgyFSLog.html" title="class in org.apache.hadoop.hbase.regionserver">TestFailedAppendAndSync.DodgyFSLog</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html#ThrowDoNotRetryIOExceptionCoprocessor--">ThrowDoNotRetryIOExceptionCoprocessor()</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.CustomInnerRegionObserver.html#throwException">throwException</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.CustomInnerRegionObserver.html" title="class in org.apache.hadoop.hbase.client">TestBlockEvictionFromClient.CustomInnerRegionObserver</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestReplicaWithCluster.RegionServerHostingPrimayMetaRegionSlowOrStopCopro.html#throwException">throwException</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestReplicaWithCluster.RegionServerHostingPrimayMetaRegionSlowOrStopCopro.html" title="class in org.apache.hadoop.hbase.client">TestReplicaWithCluster.RegionServerHostingPrimayMetaRegionSlowOrStopCopro</a></dt>
@@ -66906,6 +67028,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/TestYieldProcedures.TestStateMachineProcedure.html#throwInterruptOnceOnEachStep">throwInterruptOnceOnEachStep</a></span> - Variable in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/TestYieldProcedures.TestStateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">TestYieldProcedures.TestStateMachineProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html#ThrowIOExceptionCoprocessor--">ThrowIOExceptionCoprocessor()</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException.ThrowIOExceptionCoprocessor</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestCoprocessorConfiguration.html#thrown">thrown</a></span> - Variable in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestCoprocessorConfiguration.html" title="class in org.apache.hadoop.hbase.coprocessor">TestCoprocessorConfiguration</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/GenericTestUtils.DelayAnswer.html#thrown">thrown</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/GenericTestUtils.DelayAnswer.html" title="class in org.apache.hadoop.hbase">GenericTestUtils.DelayAnswer</a></dt>
@@ -68109,6 +68233,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetProcedureResult.html#UTIL">UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetProcedureResult.html" title="class in org.apache.hadoop.hbase.client">TestGetProcedureResult</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#UTIL">UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestLimitedScanWithFilter.html#UTIL">UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestLimitedScanWithFilter.html" title="class in org.apache.hadoop.hbase.client">TestLimitedScanWithFilter</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestMultiParallel.html#UTIL">UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestMultiParallel.html" title="class in org.apache.hadoop.hbase.client">TestMultiParallel</a></dt>
@@ -68131,6 +68257,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSnapshotTemporaryDirectory.html#UTIL">UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSnapshotTemporaryDirectory.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotTemporaryDirectory</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableOperationException.html#UTIL">UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableSnapshotScanner.html#UTIL">UTIL</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableSnapshotScanner.html" title="class in org.apache.hadoop.hbase.client">TestTableSnapshotScanner</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/constraint/TestConstraint.html#util">util</a></span> - Static variable in class org.apache.hadoop.hbase.constraint.<a href="org/apache/hadoop/hbase/constraint/TestConstraint.html" title="class in org.apache.hadoop.hbase.constraint">TestConstraint</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 0bfee15..428899c 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, 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, getWALRegionDir, getWriteRequestsCount, hashCode, hasReferences, heapSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLoa
 dingCfsOnDemandDefault, 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, 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, getMaxFlushedSeqId, getMaxS
 toreSeqId, 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, getWALRegionDir, getWriteRequestsCount, hashCode, hasReferences, heapSize, increment, increment, incrementCompactionsQueuedCount, incrementFlushesQueuedCount, initialize, instantiateRegionScanner, instantiateRegionScanner, internalFlushcache, internalFlushCacheAndCommit, internalPrepareFlushCache, isAvailable, isClosed, isClosing, isLoadingCfsOnDemand
 Default, 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">


[32/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/org/apache/hadoop/hbase/client/HTable.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/HTable.html b/devapidocs/org/apache/hadoop/hbase/client/HTable.html
index ffeb8ec..ffc6168 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/HTable.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/HTable.html
@@ -1457,7 +1457,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>delete</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.522">delete</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&gt;&nbsp;deletes)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.507">delete</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&gt;&nbsp;deletes)
             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/client/Table.html#delete-java.util.List-">Table</a></code></span></div>
 <div class="block">Batch Deletes the specified cells/rows from the table.
@@ -1488,7 +1488,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>put</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.544">put</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;put)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.529">put</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;put)
          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/client/Table.html#put-org.apache.hadoop.hbase.client.Put-">Table</a></code></span></div>
 <div class="block">Puts some data in the table.</div>
@@ -1508,7 +1508,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>put</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.562">put</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&gt;&nbsp;puts)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.547">put</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&gt;&nbsp;puts)
          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/client/Table.html#put-java.util.List-">Table</a></code></span></div>
 <div class="block">Batch puts the specified data into the table.
@@ -1537,7 +1537,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>mutateRow</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.575">mutateRow</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client">RowMutations</a>&nbsp;rm)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.560">mutateRow</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client">RowMutations</a>&nbsp;rm)
                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/client/Table.html#mutateRow-org.apache.hadoop.hbase.client.RowMutations-">Table</a></code></span></div>
 <div class="block">Performs multiple mutations atomically on a single row. Currently
@@ -1558,7 +1558,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>append</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.616">append</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Append.html" title="class in org.apache.hadoop.hbase.client">Append</a>&nbsp;append)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.601">append</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Append.html" title="class in org.apache.hadoop.hbase.client">Append</a>&nbsp;append)
               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/client/Table.html#append-org.apache.hadoop.hbase.client.Append-">Table</a></code></span></div>
 <div class="block">Appends values to one or more columns within a single row.
@@ -1584,7 +1584,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>increment</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.635">increment</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Increment.html" title="class in org.apache.hadoop.hbase.client">Increment</a>&nbsp;increment)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.620">increment</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Increment.html" title="class in org.apache.hadoop.hbase.client">Increment</a>&nbsp;increment)
                  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/client/Table.html#increment-org.apache.hadoop.hbase.client.Increment-">Table</a></code></span></div>
 <div class="block">Increments one or more columns within a single row.
@@ -1611,7 +1611,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>incrementColumnValue</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.654">incrementColumnValue</a>(byte[]&nbsp;row,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.639">incrementColumnValue</a>(byte[]&nbsp;row,
                                  byte[]&nbsp;family,
                                  byte[]&nbsp;qualifier,
                                  long&nbsp;amount)
@@ -1642,7 +1642,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>incrementColumnValue</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.661">incrementColumnValue</a>(byte[]&nbsp;row,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.646">incrementColumnValue</a>(byte[]&nbsp;row,
                                  byte[]&nbsp;family,
                                  byte[]&nbsp;qualifier,
                                  long&nbsp;amount,
@@ -1680,7 +1680,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.htm
 <li class="blockList">
 <h4>checkAndPut</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.694">checkAndPut</a>(byte[]&nbsp;row,
+public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.679">checkAndPut</a>(byte[]&nbsp;row,
                                        byte[]&nbsp;family,
                                        byte[]&nbsp;qualifier,
                                        byte[]&nbsp;value,
@@ -1714,7 +1714,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>checkAndPut</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.701">checkAndPut</a>(byte[]&nbsp;row,
+public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.686">checkAndPut</a>(byte[]&nbsp;row,
                                        byte[]&nbsp;family,
                                        byte[]&nbsp;qualifier,
                                        <a href="../../../../../org/apache/hadoop/hbase/filter/CompareFilter.CompareOp.html" title="enum in org.apache.hadoop.hbase.filter">CompareFilter.CompareOp</a>&nbsp;compareOp,
@@ -1755,7 +1755,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>checkAndPut</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.708">checkAndPut</a>(byte[]&nbsp;row,
+public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.693">checkAndPut</a>(byte[]&nbsp;row,
                                        byte[]&nbsp;family,
                                        byte[]&nbsp;qualifier,
                                        <a href="../../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase">CompareOperator</a>&nbsp;op,
@@ -1795,7 +1795,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>doCheckAndPut</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.715">doCheckAndPut</a>(byte[]&nbsp;row,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.700">doCheckAndPut</a>(byte[]&nbsp;row,
                               byte[]&nbsp;family,
                               byte[]&nbsp;qualifier,
                               <a href="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;opName,
@@ -1816,7 +1816,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>checkAndDelete</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.737">checkAndDelete</a>(byte[]&nbsp;row,
+public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.722">checkAndDelete</a>(byte[]&nbsp;row,
                                           byte[]&nbsp;family,
                                           byte[]&nbsp;qualifier,
                                           byte[]&nbsp;value,
@@ -1850,7 +1850,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>checkAndDelete</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.745">checkAndDelete</a>(byte[]&nbsp;row,
+public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.730">checkAndDelete</a>(byte[]&nbsp;row,
                                           byte[]&nbsp;family,
                                           byte[]&nbsp;qualifier,
                                           <a href="../../../../../org/apache/hadoop/hbase/filter/CompareFilter.CompareOp.html" title="enum in org.apache.hadoop.hbase.filter">CompareFilter.CompareOp</a>&nbsp;compareOp,
@@ -1891,7 +1891,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>checkAndDelete</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.752">checkAndDelete</a>(byte[]&nbsp;row,
+public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.737">checkAndDelete</a>(byte[]&nbsp;row,
                                           byte[]&nbsp;family,
                                           byte[]&nbsp;qualifier,
                                           <a href="../../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase">CompareOperator</a>&nbsp;op,
@@ -1931,7 +1931,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>doCheckAndDelete</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.757">doCheckAndDelete</a>(byte[]&nbsp;row,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.742">doCheckAndDelete</a>(byte[]&nbsp;row,
                                  byte[]&nbsp;family,
                                  byte[]&nbsp;qualifier,
                                  <a href="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;opName,
@@ -1951,7 +1951,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndMutate</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAndMutateBuilder.html" title="interface in org.apache.hadoop.hbase.client">Table.CheckAndMutateBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.792">checkAndMutate</a>(byte[]&nbsp;row,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.CheckAndMutateBuilder.html" title="interface in org.apache.hadoop.hbase.client">Table.CheckAndMutateBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.777">checkAndMutate</a>(byte[]&nbsp;row,
                                                   byte[]&nbsp;family)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Table.html#checkAndMutate-byte:A-byte:A-">Table</a></code></span></div>
 <div class="block">Atomically checks if a row/family/qualifier value matches the expected value. If it does, it
@@ -1977,7 +1977,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>doCheckAndMutate</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.796">doCheckAndMutate</a>(byte[]&nbsp;row,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.781">doCheckAndMutate</a>(byte[]&nbsp;row,
                                  byte[]&nbsp;family,
                                  byte[]&nbsp;qualifier,
                                  <a href="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;opName,
@@ -1998,7 +1998,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>checkAndMutate</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.850">checkAndMutate</a>(byte[]&nbsp;row,
+public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.835">checkAndMutate</a>(byte[]&nbsp;row,
                                           byte[]&nbsp;family,
                                           byte[]&nbsp;qualifier,
                                           <a href="../../../../../org/apache/hadoop/hbase/filter/CompareFilter.CompareOp.html" title="enum in org.apache.hadoop.hbase.filter">CompareFilter.CompareOp</a>&nbsp;compareOp,
@@ -2039,7 +2039,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>checkAndMutate</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.858">checkAndMutate</a>(byte[]&nbsp;row,
+public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.843">checkAndMutate</a>(byte[]&nbsp;row,
                                           byte[]&nbsp;family,
                                           byte[]&nbsp;qualifier,
                                           <a href="../../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase">CompareOperator</a>&nbsp;op,
@@ -2079,7 +2079,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>exists</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.864">exists</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&nbsp;get)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.849">exists</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&nbsp;get)
                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/client/Table.html#exists-org.apache.hadoop.hbase.client.Get-">Table</a></code></span></div>
 <div class="block">Test for the existence of columns in the table, as specified by the Get.
@@ -2108,7 +2108,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>exists</h4>
-<pre>public&nbsp;boolean[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.871">exists</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&gt;&nbsp;gets)
+<pre>public&nbsp;boolean[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.856">exists</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&gt;&nbsp;gets)
                  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/client/Table.html#exists-java.util.List-">Table</a></code></span></div>
 <div class="block">Test for the existence of columns in the table, as specified by the Gets.
@@ -2138,7 +2138,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>processBatchCallback</h4>
-<pre>public&nbsp;&lt;R&gt;&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.911">processBatchCallback</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/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>&gt;&nbsp;list,
+<pre>public&nbsp;&lt;R&gt;&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.896">processBatchCallback</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/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>&gt;&nbsp;list,
                                      <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;results,
                                      <a href="../../../../../org/apache/hadoop/hbase/client/coprocessor/Batch.Callback.html" title="interface in org.apache.hadoop.hbase.client.coprocessor">Batch.Callback</a>&lt;R&gt;&nbsp;callback)
                               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>,
@@ -2164,7 +2164,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.918">close</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.903">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"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Table.html#close--">Table</a></code></span></div>
 <div class="block">Releases any resources held or pending changes in internal buffers.</div>
@@ -2186,7 +2186,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>validatePut</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.939">validatePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;put)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.924">validatePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;put)
                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2200,7 +2200,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>validatePut</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.944">validatePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;put,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.929">validatePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;put,
                                int&nbsp;maxKeyValueSize)
                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></pre>
 <dl>
@@ -2215,7 +2215,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getPool</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.963">getPool</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.948">getPool</a>()</pre>
 <div class="block">The pool is used for mutli requests for this HTable</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -2229,7 +2229,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>clearRegionCache</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.971">clearRegionCache</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.956">clearRegionCache</a>()</pre>
 <div class="block">Explicitly clears the region cache to fetch the latest value from META.
  This is a power user function: avoid unless you know the ramifications.</div>
 </li>
@@ -2240,7 +2240,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>coprocessorService</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/CoprocessorRpcChannel.html" title="interface in org.apache.hadoop.hbase.ipc">CoprocessorRpcChannel</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.976">coprocessorService</a>(byte[]&nbsp;row)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/CoprocessorRpcChannel.html" title="interface in org.apache.hadoop.hbase.ipc">CoprocessorRpcChannel</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.961">coprocessorService</a>(byte[]&nbsp;row)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Table.html#coprocessorService-byte:A-">Table</a></code></span></div>
 <div class="block">Creates and returns a <code>RpcChannel</code> instance connected to the
  table region containing the specified row.  The row given does not actually have
@@ -2280,7 +2280,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>coprocessorService</h4>
-<pre>public&nbsp;&lt;T extends com.google.protobuf.Service,R&gt;&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[],R&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.981">coprocessorService</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;service,
+<pre>public&nbsp;&lt;T extends com.google.protobuf.Service,R&gt;&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[],R&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.966">coprocessorService</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;service,
                                                                                   byte[]&nbsp;startKey,
                                                                                   byte[]&nbsp;endKey,
                                                                                   <a href="../../../../../org/apache/hadoop/hbase/client/coprocessor/Batch.Call.html" title="interface in org.apache.hadoop.hbase.client.coprocessor">Batch.Call</a>&lt;T,R&gt;&nbsp;callable)
@@ -2321,7 +2321,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>coprocessorService</h4>
-<pre>public&nbsp;&lt;T extends com.google.protobuf.Service,R&gt;&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.998">coprocessorService</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;service,
+<pre>public&nbsp;&lt;T extends com.google.protobuf.Service,R&gt;&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.983">coprocessorService</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;service,
                                                                          byte[]&nbsp;startKey,
                                                                          byte[]&nbsp;endKey,
                                                                          <a href="../../../../../org/apache/hadoop/hbase/client/coprocessor/Batch.Call.html" title="interface in org.apache.hadoop.hbase.client.coprocessor">Batch.Call</a>&lt;T,R&gt;&nbsp;callable,
@@ -2366,7 +2366,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getStartKeysInRange</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;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1036">getStartKeysInRange</a>(byte[]&nbsp;start,
+<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;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1021">getStartKeysInRange</a>(byte[]&nbsp;start,
                                          byte[]&nbsp;end)
                                   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>
@@ -2381,7 +2381,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getRpcTimeout</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1048">getRpcTimeout</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a>&nbsp;unit)</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1033">getRpcTimeout</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a>&nbsp;unit)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Table.html#getRpcTimeout-java.util.concurrent.TimeUnit-">Table</a></code></span></div>
 <div class="block">Get timeout of each rpc request in this Table instance. It will be overridden by a more
  specific rpc timeout config such as readRpcTimeout or writeRpcTimeout.</div>
@@ -2405,7 +2405,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>getRpcTimeout</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1054">getRpcTimeout</a>()</pre>
+public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1039">getRpcTimeout</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Table.html#getRpcTimeout--">Table</a></code></span></div>
 <div class="block">Get timeout (millisecond) of each rpc request in this Table instance.</div>
@@ -2424,7 +2424,7 @@ public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/cl
 <li class="blockList">
 <h4>setRpcTimeout</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1060">setRpcTimeout</a>(int&nbsp;rpcTimeout)</pre>
+public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1045">setRpcTimeout</a>(int&nbsp;rpcTimeout)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Table.html#setRpcTimeout-int-">Table</a></code></span></div>
 <div class="block">Set timeout (millisecond) of each rpc request in operations of this Table instance, will
@@ -2447,7 +2447,7 @@ public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/c
 <ul class="blockList">
 <li class="blockList">
 <h4>getReadRpcTimeout</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1066">getReadRpcTimeout</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a>&nbsp;unit)</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1051">getReadRpcTimeout</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a>&nbsp;unit)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Table.html#getReadRpcTimeout-java.util.concurrent.TimeUnit-">Table</a></code></span></div>
 <div class="block">Get timeout of each rpc read request in this Table instance.</div>
 <dl>
@@ -2467,7 +2467,7 @@ public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/c
 <li class="blockList">
 <h4>getReadRpcTimeout</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1072">getReadRpcTimeout</a>()</pre>
+public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1057">getReadRpcTimeout</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Table.html#getReadRpcTimeout--">Table</a></code></span></div>
 <div class="block">Get timeout (millisecond) of each rpc read request in this Table instance.</div>
@@ -2484,7 +2484,7 @@ public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/cl
 <li class="blockList">
 <h4>setReadRpcTimeout</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1078">setReadRpcTimeout</a>(int&nbsp;readRpcTimeout)</pre>
+public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1063">setReadRpcTimeout</a>(int&nbsp;readRpcTimeout)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Table.html#setReadRpcTimeout-int-">Table</a></code></span></div>
 <div class="block">Set timeout (millisecond) of each rpc read request in operations of this Table instance, will
@@ -2505,7 +2505,7 @@ public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/c
 <ul class="blockList">
 <li class="blockList">
 <h4>getWriteRpcTimeout</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1083">getWriteRpcTimeout</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a>&nbsp;unit)</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1068">getWriteRpcTimeout</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a>&nbsp;unit)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Table.html#getWriteRpcTimeout-java.util.concurrent.TimeUnit-">Table</a></code></span></div>
 <div class="block">Get timeout of each rpc write request in this Table instance.</div>
 <dl>
@@ -2525,7 +2525,7 @@ public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/c
 <li class="blockList">
 <h4>getWriteRpcTimeout</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1089">getWriteRpcTimeout</a>()</pre>
+public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1074">getWriteRpcTimeout</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Table.html#getWriteRpcTimeout--">Table</a></code></span></div>
 <div class="block">Get timeout (millisecond) of each rpc write request in this Table instance.</div>
@@ -2542,7 +2542,7 @@ public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/cl
 <li class="blockList">
 <h4>setWriteRpcTimeout</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1095">setWriteRpcTimeout</a>(int&nbsp;writeRpcTimeout)</pre>
+public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1080">setWriteRpcTimeout</a>(int&nbsp;writeRpcTimeout)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Table.html#setWriteRpcTimeout-int-">Table</a></code></span></div>
 <div class="block">Set timeout (millisecond) of each rpc write request in operations of this Table instance, will
@@ -2563,7 +2563,7 @@ public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/c
 <ul class="blockList">
 <li class="blockList">
 <h4>getOperationTimeout</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1100">getOperationTimeout</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a>&nbsp;unit)</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1085">getOperationTimeout</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a>&nbsp;unit)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Table.html#getOperationTimeout-java.util.concurrent.TimeUnit-">Table</a></code></span></div>
 <div class="block">Get timeout of each operation in Table instance.</div>
 <dl>
@@ -2583,7 +2583,7 @@ public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/c
 <li class="blockList">
 <h4>getOperationTimeout</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1106">getOperationTimeout</a>()</pre>
+public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1091">getOperationTimeout</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Table.html#getOperationTimeout--">Table</a></code></span></div>
 <div class="block">Get timeout (millisecond) of each operation for in Table instance.</div>
@@ -2600,7 +2600,7 @@ public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/cl
 <li class="blockList">
 <h4>setOperationTimeout</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1112">setOperationTimeout</a>(int&nbsp;operationTimeout)</pre>
+public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1097">setOperationTimeout</a>(int&nbsp;operationTimeout)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Table.html#setOperationTimeout-int-">Table</a></code></span></div>
 <div class="block">Set timeout (millisecond) of each operation in this Table instance, will override the value
@@ -2624,7 +2624,7 @@ public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/c
 <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/client/HTable.html#line.1117">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/client/HTable.html#line.1102">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>
@@ -2639,7 +2639,7 @@ public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/c
 <ul class="blockList">
 <li class="blockList">
 <h4>batchCoprocessorService</h4>
-<pre>public&nbsp;&lt;R extends com.google.protobuf.Message&gt;&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[],R&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1122">batchCoprocessorService</a>(com.google.protobuf.Descriptors.MethodDescriptor&nbsp;methodDescriptor,
+<pre>public&nbsp;&lt;R extends com.google.protobuf.Message&gt;&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[],R&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1107">batchCoprocessorService</a>(com.google.protobuf.Descriptors.MethodDescriptor&nbsp;methodDescriptor,
                                                                                      com.google.protobuf.Message&nbsp;request,
                                                                                      byte[]&nbsp;startKey,
                                                                                      byte[]&nbsp;endKey,
@@ -2680,7 +2680,7 @@ public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/c
 <ul class="blockList">
 <li class="blockList">
 <h4>batchCoprocessorService</h4>
-<pre>public&nbsp;&lt;R extends com.google.protobuf.Message&gt;&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1140">batchCoprocessorService</a>(com.google.protobuf.Descriptors.MethodDescriptor&nbsp;methodDescriptor,
+<pre>public&nbsp;&lt;R extends com.google.protobuf.Message&gt;&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1125">batchCoprocessorService</a>(com.google.protobuf.Descriptors.MethodDescriptor&nbsp;methodDescriptor,
                                                                             com.google.protobuf.Message&nbsp;request,
                                                                             byte[]&nbsp;startKey,
                                                                             byte[]&nbsp;endKey,
@@ -2725,7 +2725,7 @@ public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/c
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getRegionLocator</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1228">getRegionLocator</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/HTable.html#line.1213">getRegionLocator</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/org/apache/hadoop/hbase/client/class-use/Durability.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/Durability.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/Durability.html
index 8f829d7..a669fe5 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/Durability.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/Durability.html
@@ -474,6 +474,16 @@ the order they are declared.</div>
 </tr>
 <tbody>
 <tr class="altColor">
+<td class="colFirst"><code>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#checkFamilies-java.util.Collection-org.apache.hadoop.hbase.client.Durability-">checkFamilies</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;byte[]&gt;&nbsp;families,
+             <a href="../../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;durability)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>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#checkFamily-byte:A-org.apache.hadoop.hbase.client.Durability-">checkFamily</a></span>(byte[]&nbsp;family,
+           <a href="../../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;durability)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <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#delete-java.util.NavigableMap-org.apache.hadoop.hbase.client.Durability-">delete</a></span>(<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;<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/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;durability)</code>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 a6ab5bf..1611e3c 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -555,24 +555,24 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Scan.ReadType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Consistency</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TableState.State.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">TableState.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/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/AsyncRequestFutureImpl.Retry.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncRequestFutureImpl.Retry</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MobCompactPartitionPolicy.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MobCompactPartitionPolicy</span></a></li>
 <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/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/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/AsyncRequestFutureImpl.Retry.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncRequestFutureImpl.Retry</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Durability</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/TableState.State.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">TableState.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MasterSwitchType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/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/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Durability</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 8742be7..15679a9 100644
--- a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
@@ -183,14 +183,14 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.Order.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.Order</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/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/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">Filter.ReturnCode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.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/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/RegexStringComparator.EngineType.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">RegexStringComparator.EngineType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterWrapper.FilterRowRetCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterWrapper.FilterRowRetCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/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/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/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/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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 0fb99aa..28a475d 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/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/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockPriority</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.ExternalBlockCaches.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">CacheConfig.ExternalBlockCaches</span></a></li>
+<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.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/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.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/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/fa850293/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 b08012e..427b9f5 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
@@ -353,9 +353,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.BufferCallAction.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">BufferCallBeforeInitHandler.BufferCallAction</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/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/MetricsHBaseServerSourceFactoryImpl.SourceStorage.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">MetricsHBaseServerSourceFactoryImpl.SourceStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.BufferCallAction.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">BufferCallBeforeInitHandler.BufferCallAction</span></a></li>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 1799704..abd92a9 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.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>
+<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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 475b436..9f448f9 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/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/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/MasterRpcServices.BalanceSwitchMode.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MasterRpcServices.BalanceSwitchMode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">RegionState.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/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/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/SplitLogManager.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.ResubmitDirective</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MasterProcedureEnv.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MasterProcedureEnv.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MasterProcedureEnv.html
index 49e372e..8d04c92 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MasterProcedureEnv.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MasterProcedureEnv.html
@@ -2564,6 +2564,10 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">RefreshPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html#waitInitialized-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">waitInitialized</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">AbstractPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/AbstractPeerProcedure.html#waitInitialized-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">waitInitialized</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
 </tbody>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 c635905..0bc680d 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
@@ -215,8 +215,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.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/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/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TableProcedureInterface.TableOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.PeerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">PeerProcedureInterface.PeerOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.ServerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">ServerProcedureInterface.ServerOperationType</span></a></li>
 </ul>


[15/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 da040ad..d6702a7 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
@@ -2957,7 +2957,7 @@
 <span class="sourceLineNo">2949</span>        if(family == null) {<a name="line.2949"></a>
 <span class="sourceLineNo">2950</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2950"></a>
 <span class="sourceLineNo">2951</span>        }<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>        checkFamily(family);<a name="line.2952"></a>
+<span class="sourceLineNo">2952</span>        checkFamily(family, delete.getDurability());<a name="line.2952"></a>
 <span class="sourceLineNo">2953</span>      }<a name="line.2953"></a>
 <span class="sourceLineNo">2954</span>    }<a name="line.2954"></a>
 <span class="sourceLineNo">2955</span>  }<a name="line.2955"></a>
@@ -3569,7 +3569,7 @@
 <span class="sourceLineNo">3561</span><a name="line.3561"></a>
 <span class="sourceLineNo">3562</span>    @Override<a name="line.3562"></a>
 <span class="sourceLineNo">3563</span>    public void checkAndPreparePut(Put p) throws IOException {<a name="line.3563"></a>
-<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet());<a name="line.3564"></a>
+<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet(), p.getDurability());<a name="line.3564"></a>
 <span class="sourceLineNo">3565</span>    }<a name="line.3565"></a>
 <span class="sourceLineNo">3566</span><a name="line.3566"></a>
 <span class="sourceLineNo">3567</span>    @Override<a name="line.3567"></a>
@@ -4462,4304 +4462,4307 @@
 <span class="sourceLineNo">4454</span>    store.add(cell, memstoreAccounting);<a name="line.4454"></a>
 <span class="sourceLineNo">4455</span>  }<a name="line.4455"></a>
 <span class="sourceLineNo">4456</span><a name="line.4456"></a>
-<span class="sourceLineNo">4457</span>  /**<a name="line.4457"></a>
-<span class="sourceLineNo">4458</span>   * Check the collection of families for validity.<a name="line.4458"></a>
-<span class="sourceLineNo">4459</span>   * @param families<a name="line.4459"></a>
-<span class="sourceLineNo">4460</span>   * @throws NoSuchColumnFamilyException<a name="line.4460"></a>
-<span class="sourceLineNo">4461</span>   */<a name="line.4461"></a>
-<span class="sourceLineNo">4462</span>  public void checkFamilies(Collection&lt;byte[]&gt; families) throws NoSuchColumnFamilyException {<a name="line.4462"></a>
-<span class="sourceLineNo">4463</span>    for (byte[] family : families) {<a name="line.4463"></a>
-<span class="sourceLineNo">4464</span>      checkFamily(family);<a name="line.4464"></a>
-<span class="sourceLineNo">4465</span>    }<a name="line.4465"></a>
-<span class="sourceLineNo">4466</span>  }<a name="line.4466"></a>
-<span class="sourceLineNo">4467</span><a name="line.4467"></a>
-<span class="sourceLineNo">4468</span>  /**<a name="line.4468"></a>
-<span class="sourceLineNo">4469</span>   * Check the collection of families for valid timestamps<a name="line.4469"></a>
-<span class="sourceLineNo">4470</span>   * @param familyMap<a name="line.4470"></a>
-<span class="sourceLineNo">4471</span>   * @param now current timestamp<a name="line.4471"></a>
-<span class="sourceLineNo">4472</span>   * @throws FailedSanityCheckException<a name="line.4472"></a>
-<span class="sourceLineNo">4473</span>   */<a name="line.4473"></a>
-<span class="sourceLineNo">4474</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4474"></a>
-<span class="sourceLineNo">4475</span>      throws FailedSanityCheckException {<a name="line.4475"></a>
-<span class="sourceLineNo">4476</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4476"></a>
-<span class="sourceLineNo">4477</span>      return;<a name="line.4477"></a>
-<span class="sourceLineNo">4478</span>    }<a name="line.4478"></a>
-<span class="sourceLineNo">4479</span>    long maxTs = now + timestampSlop;<a name="line.4479"></a>
-<span class="sourceLineNo">4480</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4480"></a>
-<span class="sourceLineNo">4481</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4481"></a>
-<span class="sourceLineNo">4482</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4482"></a>
-<span class="sourceLineNo">4483</span>      assert kvs instanceof RandomAccess;<a name="line.4483"></a>
-<span class="sourceLineNo">4484</span>      int listSize  = kvs.size();<a name="line.4484"></a>
-<span class="sourceLineNo">4485</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4485"></a>
-<span class="sourceLineNo">4486</span>        Cell cell = kvs.get(i);<a name="line.4486"></a>
-<span class="sourceLineNo">4487</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4487"></a>
-<span class="sourceLineNo">4488</span>        long ts = cell.getTimestamp();<a name="line.4488"></a>
-<span class="sourceLineNo">4489</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4489"></a>
-<span class="sourceLineNo">4490</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4490"></a>
-<span class="sourceLineNo">4491</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4491"></a>
-<span class="sourceLineNo">4492</span>        }<a name="line.4492"></a>
-<span class="sourceLineNo">4493</span>      }<a name="line.4493"></a>
+<span class="sourceLineNo">4457</span>  private void checkFamilies(Collection&lt;byte[]&gt; families, Durability durability)<a name="line.4457"></a>
+<span class="sourceLineNo">4458</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4458"></a>
+<span class="sourceLineNo">4459</span>    for (byte[] family : families) {<a name="line.4459"></a>
+<span class="sourceLineNo">4460</span>      checkFamily(family, durability);<a name="line.4460"></a>
+<span class="sourceLineNo">4461</span>    }<a name="line.4461"></a>
+<span class="sourceLineNo">4462</span>  }<a name="line.4462"></a>
+<span class="sourceLineNo">4463</span><a name="line.4463"></a>
+<span class="sourceLineNo">4464</span>  private void checkFamily(final byte[] family, Durability durability)<a name="line.4464"></a>
+<span class="sourceLineNo">4465</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4465"></a>
+<span class="sourceLineNo">4466</span>    checkFamily(family);<a name="line.4466"></a>
+<span class="sourceLineNo">4467</span>    if (durability.equals(Durability.SKIP_WAL)<a name="line.4467"></a>
+<span class="sourceLineNo">4468</span>        &amp;&amp; htableDescriptor.getColumnFamily(family).getScope()<a name="line.4468"></a>
+<span class="sourceLineNo">4469</span>        != HConstants.REPLICATION_SCOPE_LOCAL) {<a name="line.4469"></a>
+<span class="sourceLineNo">4470</span>      throw new InvalidMutationDurabilityException(<a name="line.4470"></a>
+<span class="sourceLineNo">4471</span>          "Mutation's durability is SKIP_WAL but table's column family " + Bytes.toString(family)<a name="line.4471"></a>
+<span class="sourceLineNo">4472</span>              + " need replication");<a name="line.4472"></a>
+<span class="sourceLineNo">4473</span>    }<a name="line.4473"></a>
+<span class="sourceLineNo">4474</span>  }<a name="line.4474"></a>
+<span class="sourceLineNo">4475</span><a name="line.4475"></a>
+<span class="sourceLineNo">4476</span>  void checkFamily(final byte[] family) throws NoSuchColumnFamilyException {<a name="line.4476"></a>
+<span class="sourceLineNo">4477</span>    if (!this.htableDescriptor.hasColumnFamily(family)) {<a name="line.4477"></a>
+<span class="sourceLineNo">4478</span>      throw new NoSuchColumnFamilyException(<a name="line.4478"></a>
+<span class="sourceLineNo">4479</span>          "Column family " + Bytes.toString(family) + " does not exist in region " + this<a name="line.4479"></a>
+<span class="sourceLineNo">4480</span>              + " in table " + this.htableDescriptor);<a name="line.4480"></a>
+<span class="sourceLineNo">4481</span>    }<a name="line.4481"></a>
+<span class="sourceLineNo">4482</span>  }<a name="line.4482"></a>
+<span class="sourceLineNo">4483</span><a name="line.4483"></a>
+<span class="sourceLineNo">4484</span>  /**<a name="line.4484"></a>
+<span class="sourceLineNo">4485</span>   * Check the collection of families for valid timestamps<a name="line.4485"></a>
+<span class="sourceLineNo">4486</span>   * @param familyMap<a name="line.4486"></a>
+<span class="sourceLineNo">4487</span>   * @param now current timestamp<a name="line.4487"></a>
+<span class="sourceLineNo">4488</span>   * @throws FailedSanityCheckException<a name="line.4488"></a>
+<span class="sourceLineNo">4489</span>   */<a name="line.4489"></a>
+<span class="sourceLineNo">4490</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4490"></a>
+<span class="sourceLineNo">4491</span>      throws FailedSanityCheckException {<a name="line.4491"></a>
+<span class="sourceLineNo">4492</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4492"></a>
+<span class="sourceLineNo">4493</span>      return;<a name="line.4493"></a>
 <span class="sourceLineNo">4494</span>    }<a name="line.4494"></a>
-<span class="sourceLineNo">4495</span>  }<a name="line.4495"></a>
-<span class="sourceLineNo">4496</span><a name="line.4496"></a>
-<span class="sourceLineNo">4497</span>  /*<a name="line.4497"></a>
-<span class="sourceLineNo">4498</span>   * @param size<a name="line.4498"></a>
-<span class="sourceLineNo">4499</span>   * @return True if size is over the flush threshold<a name="line.4499"></a>
-<span class="sourceLineNo">4500</span>   */<a name="line.4500"></a>
-<span class="sourceLineNo">4501</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4501"></a>
-<span class="sourceLineNo">4502</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4502"></a>
-<span class="sourceLineNo">4503</span>  }<a name="line.4503"></a>
-<span class="sourceLineNo">4504</span><a name="line.4504"></a>
-<span class="sourceLineNo">4505</span>  /**<a name="line.4505"></a>
-<span class="sourceLineNo">4506</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4506"></a>
-<span class="sourceLineNo">4507</span>   * the recovered edits back up into this region.<a name="line.4507"></a>
-<span class="sourceLineNo">4508</span>   *<a name="line.4508"></a>
-<span class="sourceLineNo">4509</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4509"></a>
-<span class="sourceLineNo">4510</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4510"></a>
-<span class="sourceLineNo">4511</span>   * reflected in the HFiles.)<a name="line.4511"></a>
-<span class="sourceLineNo">4512</span>   *<a name="line.4512"></a>
-<span class="sourceLineNo">4513</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4513"></a>
-<span class="sourceLineNo">4514</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4514"></a>
-<span class="sourceLineNo">4515</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4515"></a>
-<span class="sourceLineNo">4516</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4516"></a>
-<span class="sourceLineNo">4517</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4517"></a>
-<span class="sourceLineNo">4518</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4518"></a>
-<span class="sourceLineNo">4519</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4519"></a>
-<span class="sourceLineNo">4520</span>   * edits.<a name="line.4520"></a>
-<span class="sourceLineNo">4521</span>   *<a name="line.4521"></a>
-<span class="sourceLineNo">4522</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4522"></a>
-<span class="sourceLineNo">4523</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4523"></a>
-<span class="sourceLineNo">4524</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4524"></a>
-<span class="sourceLineNo">4525</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4525"></a>
-<span class="sourceLineNo">4526</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4526"></a>
-<span class="sourceLineNo">4527</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4527"></a>
-<span class="sourceLineNo">4528</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4528"></a>
-<span class="sourceLineNo">4529</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4529"></a>
-<span class="sourceLineNo">4530</span>   * make sense in a this single region context only -- until we online.<a name="line.4530"></a>
-<span class="sourceLineNo">4531</span>   *<a name="line.4531"></a>
-<span class="sourceLineNo">4532</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4532"></a>
-<span class="sourceLineNo">4533</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4533"></a>
-<span class="sourceLineNo">4534</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4534"></a>
-<span class="sourceLineNo">4535</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4535"></a>
-<span class="sourceLineNo">4536</span>   * @throws IOException<a name="line.4536"></a>
-<span class="sourceLineNo">4537</span>   */<a name="line.4537"></a>
-<span class="sourceLineNo">4538</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4538"></a>
-<span class="sourceLineNo">4539</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4539"></a>
-<span class="sourceLineNo">4540</span>      throws IOException {<a name="line.4540"></a>
-<span class="sourceLineNo">4541</span>    long minSeqIdForTheRegion = -1;<a name="line.4541"></a>
-<span class="sourceLineNo">4542</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4542"></a>
-<span class="sourceLineNo">4543</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4543"></a>
-<span class="sourceLineNo">4544</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4544"></a>
-<span class="sourceLineNo">4545</span>      }<a name="line.4545"></a>
-<span class="sourceLineNo">4546</span>    }<a name="line.4546"></a>
-<span class="sourceLineNo">4547</span>    long seqid = minSeqIdForTheRegion;<a name="line.4547"></a>
-<span class="sourceLineNo">4548</span><a name="line.4548"></a>
-<span class="sourceLineNo">4549</span>    FileSystem walFS = getWalFileSystem();<a name="line.4549"></a>
-<span class="sourceLineNo">4550</span>    FileSystem rootFS = getFilesystem();<a name="line.4550"></a>
-<span class="sourceLineNo">4551</span>    Path regionDir = getWALRegionDir();<a name="line.4551"></a>
-<span class="sourceLineNo">4552</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4552"></a>
-<span class="sourceLineNo">4553</span><a name="line.4553"></a>
-<span class="sourceLineNo">4554</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4554"></a>
-<span class="sourceLineNo">4555</span>    // under the root dir even if walDir is set.<a name="line.4555"></a>
-<span class="sourceLineNo">4556</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4556"></a>
-<span class="sourceLineNo">4557</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4557"></a>
-<span class="sourceLineNo">4558</span>      filesUnderRootDir =<a name="line.4558"></a>
-<span class="sourceLineNo">4559</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4559"></a>
-<span class="sourceLineNo">4560</span>      seqid = Math.max(seqid,<a name="line.4560"></a>
-<span class="sourceLineNo">4561</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4561"></a>
-<span class="sourceLineNo">4562</span>              defaultRegionDir));<a name="line.4562"></a>
-<span class="sourceLineNo">4563</span>    }<a name="line.4563"></a>
+<span class="sourceLineNo">4495</span>    long maxTs = now + timestampSlop;<a name="line.4495"></a>
+<span class="sourceLineNo">4496</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4496"></a>
+<span class="sourceLineNo">4497</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4497"></a>
+<span class="sourceLineNo">4498</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4498"></a>
+<span class="sourceLineNo">4499</span>      assert kvs instanceof RandomAccess;<a name="line.4499"></a>
+<span class="sourceLineNo">4500</span>      int listSize  = kvs.size();<a name="line.4500"></a>
+<span class="sourceLineNo">4501</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4501"></a>
+<span class="sourceLineNo">4502</span>        Cell cell = kvs.get(i);<a name="line.4502"></a>
+<span class="sourceLineNo">4503</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4503"></a>
+<span class="sourceLineNo">4504</span>        long ts = cell.getTimestamp();<a name="line.4504"></a>
+<span class="sourceLineNo">4505</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4505"></a>
+<span class="sourceLineNo">4506</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4506"></a>
+<span class="sourceLineNo">4507</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4507"></a>
+<span class="sourceLineNo">4508</span>        }<a name="line.4508"></a>
+<span class="sourceLineNo">4509</span>      }<a name="line.4509"></a>
+<span class="sourceLineNo">4510</span>    }<a name="line.4510"></a>
+<span class="sourceLineNo">4511</span>  }<a name="line.4511"></a>
+<span class="sourceLineNo">4512</span><a name="line.4512"></a>
+<span class="sourceLineNo">4513</span>  /*<a name="line.4513"></a>
+<span class="sourceLineNo">4514</span>   * @param size<a name="line.4514"></a>
+<span class="sourceLineNo">4515</span>   * @return True if size is over the flush threshold<a name="line.4515"></a>
+<span class="sourceLineNo">4516</span>   */<a name="line.4516"></a>
+<span class="sourceLineNo">4517</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4517"></a>
+<span class="sourceLineNo">4518</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4518"></a>
+<span class="sourceLineNo">4519</span>  }<a name="line.4519"></a>
+<span class="sourceLineNo">4520</span><a name="line.4520"></a>
+<span class="sourceLineNo">4521</span>  /**<a name="line.4521"></a>
+<span class="sourceLineNo">4522</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4522"></a>
+<span class="sourceLineNo">4523</span>   * the recovered edits back up into this region.<a name="line.4523"></a>
+<span class="sourceLineNo">4524</span>   *<a name="line.4524"></a>
+<span class="sourceLineNo">4525</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4525"></a>
+<span class="sourceLineNo">4526</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4526"></a>
+<span class="sourceLineNo">4527</span>   * reflected in the HFiles.)<a name="line.4527"></a>
+<span class="sourceLineNo">4528</span>   *<a name="line.4528"></a>
+<span class="sourceLineNo">4529</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4529"></a>
+<span class="sourceLineNo">4530</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4530"></a>
+<span class="sourceLineNo">4531</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4531"></a>
+<span class="sourceLineNo">4532</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4532"></a>
+<span class="sourceLineNo">4533</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4533"></a>
+<span class="sourceLineNo">4534</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4534"></a>
+<span class="sourceLineNo">4535</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4535"></a>
+<span class="sourceLineNo">4536</span>   * edits.<a name="line.4536"></a>
+<span class="sourceLineNo">4537</span>   *<a name="line.4537"></a>
+<span class="sourceLineNo">4538</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4538"></a>
+<span class="sourceLineNo">4539</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4539"></a>
+<span class="sourceLineNo">4540</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4540"></a>
+<span class="sourceLineNo">4541</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4541"></a>
+<span class="sourceLineNo">4542</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4542"></a>
+<span class="sourceLineNo">4543</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4543"></a>
+<span class="sourceLineNo">4544</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4544"></a>
+<span class="sourceLineNo">4545</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4545"></a>
+<span class="sourceLineNo">4546</span>   * make sense in a this single region context only -- until we online.<a name="line.4546"></a>
+<span class="sourceLineNo">4547</span>   *<a name="line.4547"></a>
+<span class="sourceLineNo">4548</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4548"></a>
+<span class="sourceLineNo">4549</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4549"></a>
+<span class="sourceLineNo">4550</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4550"></a>
+<span class="sourceLineNo">4551</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4551"></a>
+<span class="sourceLineNo">4552</span>   * @throws IOException<a name="line.4552"></a>
+<span class="sourceLineNo">4553</span>   */<a name="line.4553"></a>
+<span class="sourceLineNo">4554</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4554"></a>
+<span class="sourceLineNo">4555</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4555"></a>
+<span class="sourceLineNo">4556</span>      throws IOException {<a name="line.4556"></a>
+<span class="sourceLineNo">4557</span>    long minSeqIdForTheRegion = -1;<a name="line.4557"></a>
+<span class="sourceLineNo">4558</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4558"></a>
+<span class="sourceLineNo">4559</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4559"></a>
+<span class="sourceLineNo">4560</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4560"></a>
+<span class="sourceLineNo">4561</span>      }<a name="line.4561"></a>
+<span class="sourceLineNo">4562</span>    }<a name="line.4562"></a>
+<span class="sourceLineNo">4563</span>    long seqid = minSeqIdForTheRegion;<a name="line.4563"></a>
 <span class="sourceLineNo">4564</span><a name="line.4564"></a>
-<span class="sourceLineNo">4565</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4565"></a>
-<span class="sourceLineNo">4566</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4566"></a>
-<span class="sourceLineNo">4567</span>        files, reporter, regionDir));<a name="line.4567"></a>
-<span class="sourceLineNo">4568</span><a name="line.4568"></a>
-<span class="sourceLineNo">4569</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4569"></a>
-<span class="sourceLineNo">4570</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4570"></a>
-<span class="sourceLineNo">4571</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4571"></a>
-<span class="sourceLineNo">4572</span>    }<a name="line.4572"></a>
-<span class="sourceLineNo">4573</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4573"></a>
-<span class="sourceLineNo">4574</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4574"></a>
-<span class="sourceLineNo">4575</span>      // For debugging data loss issues!<a name="line.4575"></a>
-<span class="sourceLineNo">4576</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4576"></a>
-<span class="sourceLineNo">4577</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4577"></a>
-<span class="sourceLineNo">4578</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4578"></a>
-<span class="sourceLineNo">4579</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4579"></a>
-<span class="sourceLineNo">4580</span>      for (Path file: files) {<a name="line.4580"></a>
-<span class="sourceLineNo">4581</span>        fakeStoreFiles.add(<a name="line.4581"></a>
-<span class="sourceLineNo">4582</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4582"></a>
-<span class="sourceLineNo">4583</span>      }<a name="line.4583"></a>
-<span class="sourceLineNo">4584</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4584"></a>
-<span class="sourceLineNo">4585</span>    } else {<a name="line.4585"></a>
-<span class="sourceLineNo">4586</span>      if (filesUnderRootDir != null) {<a name="line.4586"></a>
-<span class="sourceLineNo">4587</span>        for (Path file : filesUnderRootDir) {<a name="line.4587"></a>
-<span class="sourceLineNo">4588</span>          if (!rootFS.delete(file, false)) {<a name="line.4588"></a>
-<span class="sourceLineNo">4589</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4589"></a>
-<span class="sourceLineNo">4590</span>          } else {<a name="line.4590"></a>
-<span class="sourceLineNo">4591</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4591"></a>
-<span class="sourceLineNo">4592</span>          }<a name="line.4592"></a>
-<span class="sourceLineNo">4593</span>        }<a name="line.4593"></a>
-<span class="sourceLineNo">4594</span>      }<a name="line.4594"></a>
-<span class="sourceLineNo">4595</span>      for (Path file: files) {<a name="line.4595"></a>
-<span class="sourceLineNo">4596</span>        if (!walFS.delete(file, false)) {<a name="line.4596"></a>
-<span class="sourceLineNo">4597</span>          LOG.error("Failed delete of " + file);<a name="line.4597"></a>
-<span class="sourceLineNo">4598</span>        } else {<a name="line.4598"></a>
-<span class="sourceLineNo">4599</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4599"></a>
-<span class="sourceLineNo">4600</span>        }<a name="line.4600"></a>
-<span class="sourceLineNo">4601</span>      }<a name="line.4601"></a>
-<span class="sourceLineNo">4602</span>    }<a name="line.4602"></a>
-<span class="sourceLineNo">4603</span>    return seqid;<a name="line.4603"></a>
-<span class="sourceLineNo">4604</span>  }<a name="line.4604"></a>
-<span class="sourceLineNo">4605</span><a name="line.4605"></a>
-<span class="sourceLineNo">4606</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4606"></a>
-<span class="sourceLineNo">4607</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4607"></a>
-<span class="sourceLineNo">4608</span>      throws IOException {<a name="line.4608"></a>
-<span class="sourceLineNo">4609</span>    long seqid = minSeqIdForTheRegion;<a name="line.4609"></a>
-<span class="sourceLineNo">4610</span>    if (LOG.isDebugEnabled()) {<a name="line.4610"></a>
-<span class="sourceLineNo">4611</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4611"></a>
-<span class="sourceLineNo">4612</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4612"></a>
-<span class="sourceLineNo">4613</span>    }<a name="line.4613"></a>
-<span class="sourceLineNo">4614</span><a name="line.4614"></a>
-<span class="sourceLineNo">4615</span>    if (files == null || files.isEmpty()) {<a name="line.4615"></a>
-<span class="sourceLineNo">4616</span>      return minSeqIdForTheRegion;<a name="line.4616"></a>
-<span class="sourceLineNo">4617</span>    }<a name="line.4617"></a>
-<span class="sourceLineNo">4618</span><a name="line.4618"></a>
-<span class="sourceLineNo">4619</span>    for (Path edits: files) {<a name="line.4619"></a>
-<span class="sourceLineNo">4620</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4620"></a>
-<span class="sourceLineNo">4621</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4621"></a>
-<span class="sourceLineNo">4622</span>        continue;<a name="line.4622"></a>
-<span class="sourceLineNo">4623</span>      }<a name="line.4623"></a>
-<span class="sourceLineNo">4624</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4624"></a>
-<span class="sourceLineNo">4625</span><a name="line.4625"></a>
-<span class="sourceLineNo">4626</span>      long maxSeqId;<a name="line.4626"></a>
-<span class="sourceLineNo">4627</span>      String fileName = edits.getName();<a name="line.4627"></a>
-<span class="sourceLineNo">4628</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4628"></a>
-<span class="sourceLineNo">4629</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4629"></a>
-<span class="sourceLineNo">4630</span>        if (LOG.isDebugEnabled()) {<a name="line.4630"></a>
-<span class="sourceLineNo">4631</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4631"></a>
-<span class="sourceLineNo">4632</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4632"></a>
-<span class="sourceLineNo">4633</span>              + ", skipped the whole file, path=" + edits;<a name="line.4633"></a>
-<span class="sourceLineNo">4634</span>          LOG.debug(msg);<a name="line.4634"></a>
-<span class="sourceLineNo">4635</span>        }<a name="line.4635"></a>
-<span class="sourceLineNo">4636</span>        continue;<a name="line.4636"></a>
-<span class="sourceLineNo">4637</span>      }<a name="line.4637"></a>
-<span class="sourceLineNo">4638</span><a name="line.4638"></a>
-<span class="sourceLineNo">4639</span>      try {<a name="line.4639"></a>
-<span class="sourceLineNo">4640</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4640"></a>
-<span class="sourceLineNo">4641</span>        // if seqId is greater<a name="line.4641"></a>
-<span class="sourceLineNo">4642</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4642"></a>
-<span class="sourceLineNo">4643</span>      } catch (IOException e) {<a name="line.4643"></a>
-<span class="sourceLineNo">4644</span>        boolean skipErrors = conf.getBoolean(<a name="line.4644"></a>
-<span class="sourceLineNo">4645</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4645"></a>
-<span class="sourceLineNo">4646</span>            conf.getBoolean(<a name="line.4646"></a>
-<span class="sourceLineNo">4647</span>                "hbase.skip.errors",<a name="line.4647"></a>
-<span class="sourceLineNo">4648</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4648"></a>
-<span class="sourceLineNo">4649</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4649"></a>
-<span class="sourceLineNo">4650</span>          LOG.warn(<a name="line.4650"></a>
-<span class="sourceLineNo">4651</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4651"></a>
-<span class="sourceLineNo">4652</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4652"></a>
-<span class="sourceLineNo">4653</span>        }<a name="line.4653"></a>
-<span class="sourceLineNo">4654</span>        if (skipErrors) {<a name="line.4654"></a>
-<span class="sourceLineNo">4655</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4655"></a>
-<span class="sourceLineNo">4656</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4656"></a>
-<span class="sourceLineNo">4657</span>              + "=true so continuing. Renamed " + edits +<a name="line.4657"></a>
-<span class="sourceLineNo">4658</span>              " as " + p, e);<a name="line.4658"></a>
-<span class="sourceLineNo">4659</span>        } else {<a name="line.4659"></a>
-<span class="sourceLineNo">4660</span>          throw e;<a name="line.4660"></a>
-<span class="sourceLineNo">4661</span>        }<a name="line.4661"></a>
-<span class="sourceLineNo">4662</span>      }<a name="line.4662"></a>
-<span class="sourceLineNo">4663</span>    }<a name="line.4663"></a>
-<span class="sourceLineNo">4664</span>    return seqid;<a name="line.4664"></a>
-<span class="sourceLineNo">4665</span>  }<a name="line.4665"></a>
-<span class="sourceLineNo">4666</span><a name="line.4666"></a>
-<span class="sourceLineNo">4667</span>  /*<a name="line.4667"></a>
-<span class="sourceLineNo">4668</span>   * @param edits File of recovered edits.<a name="line.4668"></a>
-<span class="sourceLineNo">4669</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4669"></a>
-<span class="sourceLineNo">4670</span>   * must be larger than this to be replayed for each store.<a name="line.4670"></a>
-<span class="sourceLineNo">4671</span>   * @param reporter<a name="line.4671"></a>
-<span class="sourceLineNo">4672</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4672"></a>
-<span class="sourceLineNo">4673</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4673"></a>
-<span class="sourceLineNo">4674</span>   * @throws IOException<a name="line.4674"></a>
-<span class="sourceLineNo">4675</span>   */<a name="line.4675"></a>
-<span class="sourceLineNo">4676</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4676"></a>
-<span class="sourceLineNo">4677</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4677"></a>
-<span class="sourceLineNo">4678</span>    throws IOException {<a name="line.4678"></a>
-<span class="sourceLineNo">4679</span>    String msg = "Replaying edits from " + edits;<a name="line.4679"></a>
-<span class="sourceLineNo">4680</span>    LOG.info(msg);<a name="line.4680"></a>
-<span class="sourceLineNo">4681</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4681"></a>
+<span class="sourceLineNo">4565</span>    FileSystem walFS = getWalFileSystem();<a name="line.4565"></a>
+<span class="sourceLineNo">4566</span>    FileSystem rootFS = getFilesystem();<a name="line.4566"></a>
+<span class="sourceLineNo">4567</span>    Path regionDir = getWALRegionDir();<a name="line.4567"></a>
+<span class="sourceLineNo">4568</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4568"></a>
+<span class="sourceLineNo">4569</span><a name="line.4569"></a>
+<span class="sourceLineNo">4570</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4570"></a>
+<span class="sourceLineNo">4571</span>    // under the root dir even if walDir is set.<a name="line.4571"></a>
+<span class="sourceLineNo">4572</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4572"></a>
+<span class="sourceLineNo">4573</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4573"></a>
+<span class="sourceLineNo">4574</span>      filesUnderRootDir =<a name="line.4574"></a>
+<span class="sourceLineNo">4575</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4575"></a>
+<span class="sourceLineNo">4576</span>      seqid = Math.max(seqid,<a name="line.4576"></a>
+<span class="sourceLineNo">4577</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4577"></a>
+<span class="sourceLineNo">4578</span>              defaultRegionDir));<a name="line.4578"></a>
+<span class="sourceLineNo">4579</span>    }<a name="line.4579"></a>
+<span class="sourceLineNo">4580</span><a name="line.4580"></a>
+<span class="sourceLineNo">4581</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4581"></a>
+<span class="sourceLineNo">4582</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4582"></a>
+<span class="sourceLineNo">4583</span>        files, reporter, regionDir));<a name="line.4583"></a>
+<span class="sourceLineNo">4584</span><a name="line.4584"></a>
+<span class="sourceLineNo">4585</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4585"></a>
+<span class="sourceLineNo">4586</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4586"></a>
+<span class="sourceLineNo">4587</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4587"></a>
+<span class="sourceLineNo">4588</span>    }<a name="line.4588"></a>
+<span class="sourceLineNo">4589</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4589"></a>
+<span class="sourceLineNo">4590</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4590"></a>
+<span class="sourceLineNo">4591</span>      // For debugging data loss issues!<a name="line.4591"></a>
+<span class="sourceLineNo">4592</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4592"></a>
+<span class="sourceLineNo">4593</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4593"></a>
+<span class="sourceLineNo">4594</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4594"></a>
+<span class="sourceLineNo">4595</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4595"></a>
+<span class="sourceLineNo">4596</span>      for (Path file: files) {<a name="line.4596"></a>
+<span class="sourceLineNo">4597</span>        fakeStoreFiles.add(<a name="line.4597"></a>
+<span class="sourceLineNo">4598</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4598"></a>
+<span class="sourceLineNo">4599</span>      }<a name="line.4599"></a>
+<span class="sourceLineNo">4600</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4600"></a>
+<span class="sourceLineNo">4601</span>    } else {<a name="line.4601"></a>
+<span class="sourceLineNo">4602</span>      if (filesUnderRootDir != null) {<a name="line.4602"></a>
+<span class="sourceLineNo">4603</span>        for (Path file : filesUnderRootDir) {<a name="line.4603"></a>
+<span class="sourceLineNo">4604</span>          if (!rootFS.delete(file, false)) {<a name="line.4604"></a>
+<span class="sourceLineNo">4605</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4605"></a>
+<span class="sourceLineNo">4606</span>          } else {<a name="line.4606"></a>
+<span class="sourceLineNo">4607</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4607"></a>
+<span class="sourceLineNo">4608</span>          }<a name="line.4608"></a>
+<span class="sourceLineNo">4609</span>        }<a name="line.4609"></a>
+<span class="sourceLineNo">4610</span>      }<a name="line.4610"></a>
+<span class="sourceLineNo">4611</span>      for (Path file: files) {<a name="line.4611"></a>
+<span class="sourceLineNo">4612</span>        if (!walFS.delete(file, false)) {<a name="line.4612"></a>
+<span class="sourceLineNo">4613</span>          LOG.error("Failed delete of " + file);<a name="line.4613"></a>
+<span class="sourceLineNo">4614</span>        } else {<a name="line.4614"></a>
+<span class="sourceLineNo">4615</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4615"></a>
+<span class="sourceLineNo">4616</span>        }<a name="line.4616"></a>
+<span class="sourceLineNo">4617</span>      }<a name="line.4617"></a>
+<span class="sourceLineNo">4618</span>    }<a name="line.4618"></a>
+<span class="sourceLineNo">4619</span>    return seqid;<a name="line.4619"></a>
+<span class="sourceLineNo">4620</span>  }<a name="line.4620"></a>
+<span class="sourceLineNo">4621</span><a name="line.4621"></a>
+<span class="sourceLineNo">4622</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4622"></a>
+<span class="sourceLineNo">4623</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4623"></a>
+<span class="sourceLineNo">4624</span>      throws IOException {<a name="line.4624"></a>
+<span class="sourceLineNo">4625</span>    long seqid = minSeqIdForTheRegion;<a name="line.4625"></a>
+<span class="sourceLineNo">4626</span>    if (LOG.isDebugEnabled()) {<a name="line.4626"></a>
+<span class="sourceLineNo">4627</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4627"></a>
+<span class="sourceLineNo">4628</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4628"></a>
+<span class="sourceLineNo">4629</span>    }<a name="line.4629"></a>
+<span class="sourceLineNo">4630</span><a name="line.4630"></a>
+<span class="sourceLineNo">4631</span>    if (files == null || files.isEmpty()) {<a name="line.4631"></a>
+<span class="sourceLineNo">4632</span>      return minSeqIdForTheRegion;<a name="line.4632"></a>
+<span class="sourceLineNo">4633</span>    }<a name="line.4633"></a>
+<span class="sourceLineNo">4634</span><a name="line.4634"></a>
+<span class="sourceLineNo">4635</span>    for (Path edits: files) {<a name="line.4635"></a>
+<span class="sourceLineNo">4636</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4636"></a>
+<span class="sourceLineNo">4637</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4637"></a>
+<span class="sourceLineNo">4638</span>        continue;<a name="line.4638"></a>
+<span class="sourceLineNo">4639</span>      }<a name="line.4639"></a>
+<span class="sourceLineNo">4640</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4640"></a>
+<span class="sourceLineNo">4641</span><a name="line.4641"></a>
+<span class="sourceLineNo">4642</span>      long maxSeqId;<a name="line.4642"></a>
+<span class="sourceLineNo">4643</span>      String fileName = edits.getName();<a name="line.4643"></a>
+<span class="sourceLineNo">4644</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4644"></a>
+<span class="sourceLineNo">4645</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4645"></a>
+<span class="sourceLineNo">4646</span>        if (LOG.isDebugEnabled()) {<a name="line.4646"></a>
+<span class="sourceLineNo">4647</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4647"></a>
+<span class="sourceLineNo">4648</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4648"></a>
+<span class="sourceLineNo">4649</span>              + ", skipped the whole file, path=" + edits;<a name="line.4649"></a>
+<span class="sourceLineNo">4650</span>          LOG.debug(msg);<a name="line.4650"></a>
+<span class="sourceLineNo">4651</span>        }<a name="line.4651"></a>
+<span class="sourceLineNo">4652</span>        continue;<a name="line.4652"></a>
+<span class="sourceLineNo">4653</span>      }<a name="line.4653"></a>
+<span class="sourceLineNo">4654</span><a name="line.4654"></a>
+<span class="sourceLineNo">4655</span>      try {<a name="line.4655"></a>
+<span class="sourceLineNo">4656</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4656"></a>
+<span class="sourceLineNo">4657</span>        // if seqId is greater<a name="line.4657"></a>
+<span class="sourceLineNo">4658</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4658"></a>
+<span class="sourceLineNo">4659</span>      } catch (IOException e) {<a name="line.4659"></a>
+<span class="sourceLineNo">4660</span>        boolean skipErrors = conf.getBoolean(<a name="line.4660"></a>
+<span class="sourceLineNo">4661</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4661"></a>
+<span class="sourceLineNo">4662</span>            conf.getBoolean(<a name="line.4662"></a>
+<span class="sourceLineNo">4663</span>                "hbase.skip.errors",<a name="line.4663"></a>
+<span class="sourceLineNo">4664</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4664"></a>
+<span class="sourceLineNo">4665</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4665"></a>
+<span class="sourceLineNo">4666</span>          LOG.warn(<a name="line.4666"></a>
+<span class="sourceLineNo">4667</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4667"></a>
+<span class="sourceLineNo">4668</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4668"></a>
+<span class="sourceLineNo">4669</span>        }<a name="line.4669"></a>
+<span class="sourceLineNo">4670</span>        if (skipErrors) {<a name="line.4670"></a>
+<span class="sourceLineNo">4671</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4671"></a>
+<span class="sourceLineNo">4672</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4672"></a>
+<span class="sourceLineNo">4673</span>              + "=true so continuing. Renamed " + edits +<a name="line.4673"></a>
+<span class="sourceLineNo">4674</span>              " as " + p, e);<a name="line.4674"></a>
+<span class="sourceLineNo">4675</span>        } else {<a name="line.4675"></a>
+<span class="sourceLineNo">4676</span>          throw e;<a name="line.4676"></a>
+<span class="sourceLineNo">4677</span>        }<a name="line.4677"></a>
+<span class="sourceLineNo">4678</span>      }<a name="line.4678"></a>
+<span class="sourceLineNo">4679</span>    }<a name="line.4679"></a>
+<span class="sourceLineNo">4680</span>    return seqid;<a name="line.4680"></a>
+<span class="sourceLineNo">4681</span>  }<a name="line.4681"></a>
 <span class="sourceLineNo">4682</span><a name="line.4682"></a>
-<span class="sourceLineNo">4683</span>    status.setStatus("Opening recovered edits");<a name="line.4683"></a>
-<span class="sourceLineNo">4684</span>    WAL.Reader reader = null;<a name="line.4684"></a>
-<span class="sourceLineNo">4685</span>    try {<a name="line.4685"></a>
-<span class="sourceLineNo">4686</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4686"></a>
-<span class="sourceLineNo">4687</span>      long currentEditSeqId = -1;<a name="line.4687"></a>
-<span class="sourceLineNo">4688</span>      long currentReplaySeqId = -1;<a name="line.4688"></a>
-<span class="sourceLineNo">4689</span>      long firstSeqIdInLog = -1;<a name="line.4689"></a>
-<span class="sourceLineNo">4690</span>      long skippedEdits = 0;<a name="line.4690"></a>
-<span class="sourceLineNo">4691</span>      long editsCount = 0;<a name="line.4691"></a>
-<span class="sourceLineNo">4692</span>      long intervalEdits = 0;<a name="line.4692"></a>
-<span class="sourceLineNo">4693</span>      WAL.Entry entry;<a name="line.4693"></a>
-<span class="sourceLineNo">4694</span>      HStore store = null;<a name="line.4694"></a>
-<span class="sourceLineNo">4695</span>      boolean reported_once = false;<a name="line.4695"></a>
-<span class="sourceLineNo">4696</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4696"></a>
-<span class="sourceLineNo">4697</span><a name="line.4697"></a>
-<span class="sourceLineNo">4698</span>      try {<a name="line.4698"></a>
-<span class="sourceLineNo">4699</span>        // How many edits seen before we check elapsed time<a name="line.4699"></a>
-<span class="sourceLineNo">4700</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4700"></a>
-<span class="sourceLineNo">4701</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4701"></a>
-<span class="sourceLineNo">4702</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4702"></a>
-<span class="sourceLineNo">4703</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4703"></a>
-<span class="sourceLineNo">4704</span><a name="line.4704"></a>
-<span class="sourceLineNo">4705</span>        if (coprocessorHost != null) {<a name="line.4705"></a>
-<span class="sourceLineNo">4706</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4706"></a>
-<span class="sourceLineNo">4707</span>        }<a name="line.4707"></a>
-<span class="sourceLineNo">4708</span><a name="line.4708"></a>
-<span class="sourceLineNo">4709</span>        while ((entry = reader.next()) != null) {<a name="line.4709"></a>
-<span class="sourceLineNo">4710</span>          WALKey key = entry.getKey();<a name="line.4710"></a>
-<span class="sourceLineNo">4711</span>          WALEdit val = entry.getEdit();<a name="line.4711"></a>
-<span class="sourceLineNo">4712</span><a name="line.4712"></a>
-<span class="sourceLineNo">4713</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4713"></a>
-<span class="sourceLineNo">4714</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4714"></a>
-<span class="sourceLineNo">4715</span>          }<a name="line.4715"></a>
-<span class="sourceLineNo">4716</span><a name="line.4716"></a>
-<span class="sourceLineNo">4717</span>          if (reporter != null) {<a name="line.4717"></a>
-<span class="sourceLineNo">4718</span>            intervalEdits += val.size();<a name="line.4718"></a>
-<span class="sourceLineNo">4719</span>            if (intervalEdits &gt;= interval) {<a name="line.4719"></a>
-<span class="sourceLineNo">4720</span>              // Number of edits interval reached<a name="line.4720"></a>
-<span class="sourceLineNo">4721</span>              intervalEdits = 0;<a name="line.4721"></a>
-<span class="sourceLineNo">4722</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4722"></a>
-<span class="sourceLineNo">4723</span>              if (lastReport + period &lt;= cur) {<a name="line.4723"></a>
-<span class="sourceLineNo">4724</span>                status.setStatus("Replaying edits..." +<a name="line.4724"></a>
-<span class="sourceLineNo">4725</span>                    " skipped=" + skippedEdits +<a name="line.4725"></a>
-<span class="sourceLineNo">4726</span>                    " edits=" + editsCount);<a name="line.4726"></a>
-<span class="sourceLineNo">4727</span>                // Timeout reached<a name="line.4727"></a>
-<span class="sourceLineNo">4728</span>                if(!reporter.progress()) {<a name="line.4728"></a>
-<span class="sourceLineNo">4729</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4729"></a>
-<span class="sourceLineNo">4730</span>                  LOG.warn(msg);<a name="line.4730"></a>
-<span class="sourceLineNo">4731</span>                  status.abort(msg);<a name="line.4731"></a>
-<span class="sourceLineNo">4732</span>                  throw new IOException(msg);<a name="line.4732"></a>
-<span class="sourceLineNo">4733</span>                }<a name="line.4733"></a>
-<span class="sourceLineNo">4734</span>                reported_once = true;<a name="line.4734"></a>
-<span class="sourceLineNo">4735</span>                lastReport = cur;<a name="line.4735"></a>
-<span class="sourceLineNo">4736</span>              }<a name="line.4736"></a>
-<span class="sourceLineNo">4737</span>            }<a name="line.4737"></a>
-<span class="sourceLineNo">4738</span>          }<a name="line.4738"></a>
-<span class="sourceLineNo">4739</span><a name="line.4739"></a>
-<span class="sourceLineNo">4740</span>          if (firstSeqIdInLog == -1) {<a name="line.4740"></a>
-<span class="sourceLineNo">4741</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4741"></a>
-<span class="sourceLineNo">4742</span>          }<a name="line.4742"></a>
-<span class="sourceLineNo">4743</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4743"></a>
-<span class="sourceLineNo">4744</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4744"></a>
-<span class="sourceLineNo">4745</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4745"></a>
-<span class="sourceLineNo">4746</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4746"></a>
-<span class="sourceLineNo">4747</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4747"></a>
-<span class="sourceLineNo">4748</span>                + "; edit=" + val);<a name="line.4748"></a>
-<span class="sourceLineNo">4749</span>          } else {<a name="line.4749"></a>
-<span class="sourceLineNo">4750</span>            currentEditSeqId = key.getSequenceId();<a name="line.4750"></a>
-<span class="sourceLineNo">4751</span>          }<a name="line.4751"></a>
-<span class="sourceLineNo">4752</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4752"></a>
-<span class="sourceLineNo">4753</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4753"></a>
-<span class="sourceLineNo">4754</span><a name="line.4754"></a>
-<span class="sourceLineNo">4755</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4755"></a>
-<span class="sourceLineNo">4756</span>          // instead of a KeyValue.<a name="line.4756"></a>
-<span class="sourceLineNo">4757</span>          if (coprocessorHost != null) {<a name="line.4757"></a>
-<span class="sourceLineNo">4758</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4758"></a>
-<span class="sourceLineNo">4759</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4759"></a>
-<span class="sourceLineNo">4760</span>              // if bypass this wal entry, ignore it ...<a name="line.4760"></a>
-<span class="sourceLineNo">4761</span>              continue;<a name="line.4761"></a>
-<span class="sourceLineNo">4762</span>            }<a name="line.4762"></a>
-<span class="sourceLineNo">4763</span>          }<a name="line.4763"></a>
-<span class="sourceLineNo">4764</span>          boolean checkRowWithinBoundary = false;<a name="line.4764"></a>
-<span class="sourceLineNo">4765</span>          // Check this edit is for this region.<a name="line.4765"></a>
-<span class="sourceLineNo">4766</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4766"></a>
-<span class="sourceLineNo">4767</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4767"></a>
-<span class="sourceLineNo">4768</span>            checkRowWithinBoundary = true;<a name="line.4768"></a>
-<span class="sourceLineNo">4769</span>          }<a name="line.4769"></a>
+<span class="sourceLineNo">4683</span>  /*<a name="line.4683"></a>
+<span class="sourceLineNo">4684</span>   * @param edits File of recovered edits.<a name="line.4684"></a>
+<span class="sourceLineNo">4685</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4685"></a>
+<span class="sourceLineNo">4686</span>   * must be larger than this to be replayed for each store.<a name="line.4686"></a>
+<span class="sourceLineNo">4687</span>   * @param reporter<a name="line.4687"></a>
+<span class="sourceLineNo">4688</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4688"></a>
+<span class="sourceLineNo">4689</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4689"></a>
+<span class="sourceLineNo">4690</span>   * @throws IOException<a name="line.4690"></a>
+<span class="sourceLineNo">4691</span>   */<a name="line.4691"></a>
+<span class="sourceLineNo">4692</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4692"></a>
+<span class="sourceLineNo">4693</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4693"></a>
+<span class="sourceLineNo">4694</span>    throws IOException {<a name="line.4694"></a>
+<span class="sourceLineNo">4695</span>    String msg = "Replaying edits from " + edits;<a name="line.4695"></a>
+<span class="sourceLineNo">4696</span>    LOG.info(msg);<a name="line.4696"></a>
+<span class="sourceLineNo">4697</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4697"></a>
+<span class="sourceLineNo">4698</span><a name="line.4698"></a>
+<span class="sourceLineNo">4699</span>    status.setStatus("Opening recovered edits");<a name="line.4699"></a>
+<span class="sourceLineNo">4700</span>    WAL.Reader reader = null;<a name="line.4700"></a>
+<span class="sourceLineNo">4701</span>    try {<a name="line.4701"></a>
+<span class="sourceLineNo">4702</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4702"></a>
+<span class="sourceLineNo">4703</span>      long currentEditSeqId = -1;<a name="line.4703"></a>
+<span class="sourceLineNo">4704</span>      long currentReplaySeqId = -1;<a name="line.4704"></a>
+<span class="sourceLineNo">4705</span>      long firstSeqIdInLog = -1;<a name="line.4705"></a>
+<span class="sourceLineNo">4706</span>      long skippedEdits = 0;<a name="line.4706"></a>
+<span class="sourceLineNo">4707</span>      long editsCount = 0;<a name="line.4707"></a>
+<span class="sourceLineNo">4708</span>      long intervalEdits = 0;<a name="line.4708"></a>
+<span class="sourceLineNo">4709</span>      WAL.Entry entry;<a name="line.4709"></a>
+<span class="sourceLineNo">4710</span>      HStore store = null;<a name="line.4710"></a>
+<span class="sourceLineNo">4711</span>      boolean reported_once = false;<a name="line.4711"></a>
+<span class="sourceLineNo">4712</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4712"></a>
+<span class="sourceLineNo">4713</span><a name="line.4713"></a>
+<span class="sourceLineNo">4714</span>      try {<a name="line.4714"></a>
+<span class="sourceLineNo">4715</span>        // How many edits seen before we check elapsed time<a name="line.4715"></a>
+<span class="sourceLineNo">4716</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4716"></a>
+<span class="sourceLineNo">4717</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4717"></a>
+<span class="sourceLineNo">4718</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4718"></a>
+<span class="sourceLineNo">4719</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4719"></a>
+<span class="sourceLineNo">4720</span><a name="line.4720"></a>
+<span class="sourceLineNo">4721</span>        if (coprocessorHost != null) {<a name="line.4721"></a>
+<span class="sourceLineNo">4722</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4722"></a>
+<span class="sourceLineNo">4723</span>        }<a name="line.4723"></a>
+<span class="sourceLineNo">4724</span><a name="line.4724"></a>
+<span class="sourceLineNo">4725</span>        while ((entry = reader.next()) != null) {<a name="line.4725"></a>
+<span class="sourceLineNo">4726</span>          WALKey key = entry.getKey();<a name="line.4726"></a>
+<span class="sourceLineNo">4727</span>          WALEdit val = entry.getEdit();<a name="line.4727"></a>
+<span class="sourceLineNo">4728</span><a name="line.4728"></a>
+<span class="sourceLineNo">4729</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4729"></a>
+<span class="sourceLineNo">4730</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4730"></a>
+<span class="sourceLineNo">4731</span>          }<a name="line.4731"></a>
+<span class="sourceLineNo">4732</span><a name="line.4732"></a>
+<span class="sourceLineNo">4733</span>          if (reporter != null) {<a name="line.4733"></a>
+<span class="sourceLineNo">4734</span>            intervalEdits += val.size();<a name="line.4734"></a>
+<span class="sourceLineNo">4735</span>            if (intervalEdits &gt;= interval) {<a name="line.4735"></a>
+<span class="sourceLineNo">4736</span>              // Number of edits interval reached<a name="line.4736"></a>
+<span class="sourceLineNo">4737</span>              intervalEdits = 0;<a name="line.4737"></a>
+<span class="sourceLineNo">4738</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4738"></a>
+<span class="sourceLineNo">4739</span>              if (lastReport + period &lt;= cur) {<a name="line.4739"></a>
+<span class="sourceLineNo">4740</span>                status.setStatus("Replaying edits..." +<a name="line.4740"></a>
+<span class="sourceLineNo">4741</span>                    " skipped=" + skippedEdits +<a name="line.4741"></a>
+<span class="sourceLineNo">4742</span>                    " edits=" + editsCount);<a name="line.4742"></a>
+<span class="sourceLineNo">4743</span>                // Timeout reached<a name="line.4743"></a>
+<span class="sourceLineNo">4744</span>                if(!reporter.progress()) {<a name="line.4744"></a>
+<span class="sourceLineNo">4745</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4745"></a>
+<span class="sourceLineNo">4746</span>                  LOG.warn(msg);<a name="line.4746"></a>
+<span class="sourceLineNo">4747</span>                  status.abort(msg);<a name="line.4747"></a>
+<span class="sourceLineNo">4748</span>                  throw new IOException(msg);<a name="line.4748"></a>
+<span class="sourceLineNo">4749</span>                }<a name="line.4749"></a>
+<span class="sourceLineNo">4750</span>                reported_once = true;<a name="line.4750"></a>
+<span class="sourceLineNo">4751</span>                lastReport = cur;<a name="line.4751"></a>
+<span class="sourceLineNo">4752</span>              }<a name="line.4752"></a>
+<span class="sourceLineNo">4753</span>            }<a name="line.4753"></a>
+<span class="sourceLineNo">4754</span>          }<a name="line.4754"></a>
+<span class="sourceLineNo">4755</span><a name="line.4755"></a>
+<span class="sourceLineNo">4756</span>          if (firstSeqIdInLog == -1) {<a name="line.4756"></a>
+<span class="sourceLineNo">4757</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4757"></a>
+<span class="sourceLineNo">4758</span>          }<a name="line.4758"></a>
+<span class="sourceLineNo">4759</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4759"></a>
+<span class="sourceLineNo">4760</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4760"></a>
+<span class="sourceLineNo">4761</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4761"></a>
+<span class="sourceLineNo">4762</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4762"></a>
+<span class="sourceLineNo">4763</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4763"></a>
+<span class="sourceLineNo">4764</span>                + "; edit=" + val);<a name="line.4764"></a>
+<span class="sourceLineNo">4765</span>          } else {<a name="line.4765"></a>
+<span class="sourceLineNo">4766</span>            currentEditSeqId = key.getSequenceId();<a name="line.4766"></a>
+<span class="sourceLineNo">4767</span>          }<a name="line.4767"></a>
+<span class="sourceLineNo">4768</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4768"></a>
+<span class="sourceLineNo">4769</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4769"></a>
 <span class="sourceLineNo">4770</span><a name="line.4770"></a>
-<span class="sourceLineNo">4771</span>          boolean flush = false;<a name="line.4771"></a>
-<span class="sourceLineNo">4772</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4772"></a>
-<span class="sourceLineNo">4773</span>          for (Cell cell: val.getCells()) {<a name="line.4773"></a>
-<span class="sourceLineNo">4774</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4774"></a>
-<span class="sourceLineNo">4775</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4775"></a>
-<span class="sourceLineNo">4776</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4776"></a>
-<span class="sourceLineNo">4777</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4777"></a>
-<span class="sourceLineNo">4778</span>              if (!checkRowWithinBoundary) {<a name="line.4778"></a>
-<span class="sourceLineNo">4779</span>                //this is a special edit, we should handle it<a name="line.4779"></a>
-<span class="sourceLineNo">4780</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4780"></a>
-<span class="sourceLineNo">4781</span>                if (compaction != null) {<a name="line.4781"></a>
-<span class="sourceLineNo">4782</span>                  //replay the compaction<a name="line.4782"></a>
-<span class="sourceLineNo">4783</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4783"></a>
-<span class="sourceLineNo">4784</span>                }<a name="line.4784"></a>
-<span class="sourceLineNo">4785</span>              }<a name="line.4785"></a>
-<span class="sourceLineNo">4786</span>              skippedEdits++;<a name="line.4786"></a>
-<span class="sourceLineNo">4787</span>              continue;<a name="line.4787"></a>
-<span class="sourceLineNo">4788</span>            }<a name="line.4788"></a>
-<span class="sourceLineNo">4789</span>            // Figure which store the edit is meant for.<a name="line.4789"></a>
-<span class="sourceLineNo">4790</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4790"></a>
-<span class="sourceLineNo">4791</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4791"></a>
-<span class="sourceLineNo">4792</span>              store = getStore(cell);<a name="line.4792"></a>
-<span class="sourceLineNo">4793</span>            }<a name="line.4793"></a>
-<span class="sourceLineNo">4794</span>            if (store == null) {<a name="line.4794"></a>
-<span class="sourceLineNo">4795</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4795"></a>
-<span class="sourceLineNo">4796</span>              // crash and redeploy?<a name="line.4796"></a>
-<span class="sourceLineNo">4797</span>              LOG.warn("No family for " + cell);<a name="line.4797"></a>
-<span class="sourceLineNo">4798</span>              skippedEdits++;<a name="line.4798"></a>
-<span class="sourceLineNo">4799</span>              continue;<a name="line.4799"></a>
-<span class="sourceLineNo">4800</span>            }<a name="line.4800"></a>
-<span class="sourceLineNo">4801</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4801"></a>
-<span class="sourceLineNo">4802</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4802"></a>
-<span class="sourceLineNo">4803</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4803"></a>
-<span class="sourceLineNo">4804</span>              skippedEdits++;<a name="line.4804"></a>
-<span class="sourceLineNo">4805</span>              continue;<a name="line.4805"></a>
-<span class="sourceLineNo">4806</span>            }<a name="line.4806"></a>
-<span class="sourceLineNo">4807</span>            // Now, figure if we should skip this edit.<a name="line.4807"></a>
-<span class="sourceLineNo">4808</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4808"></a>
-<span class="sourceLineNo">4809</span>                .getName())) {<a name="line.4809"></a>
-<span class="sourceLineNo">4810</span>              skippedEdits++;<a name="line.4810"></a>
-<span class="sourceLineNo">4811</span>              continue;<a name="line.4811"></a>
-<span class="sourceLineNo">4812</span>            }<a name="line.4812"></a>
-<span class="sourceLineNo">4813</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4813"></a>
-<span class="sourceLineNo">4814</span><a name="line.4814"></a>
-<span class="sourceLineNo">4815</span>            restoreEdit(store, cell, memStoreSizing);<a name="line.4815"></a>
-<span class="sourceLineNo">4816</span>            editsCount++;<a name="line.4816"></a>
-<span class="sourceLineNo">4817</span>          }<a name="line.4817"></a>
-<span class="sourceLineNo">4818</span>          MemStoreSize mss = memStoreSizing.getMemStoreSize();<a name="line.4818"></a>
-<span class="sourceLineNo">4819</span>          incMemStoreSize(mss);<a name="line.4819"></a>
-<span class="sourceLineNo">4820</span>          flush = isFlushSize(this.memStoreSizing.getMemStoreSize());<a name="line.4820"></a>
-<span class="sourceLineNo">4821</span>          if (flush) {<a name="line.4821"></a>
-<span class="sourceLineNo">4822</span>            internalFlushcache(null, currentEditSeqId, stores.values(), status, false,<a name="line.4822"></a>
-<span class="sourceLineNo">4823</span>              FlushLifeCycleTracker.DUMMY);<a name="line.4823"></a>
-<span class="sourceLineNo">4824</span>          }<a name="line.4824"></a>
-<span class="sourceLineNo">4825</span><a name="line.4825"></a>
-<span class="sourceLineNo">4826</span>          if (coprocessorHost != null) {<a name="line.4826"></a>
-<span class="sourceLineNo">4827</span>            coprocessorHost.postWALRestore(this.getRegionInfo(), key, val);<a name="line.4827"></a>
-<span class="sourceLineNo">4828</span>          }<a name="line.4828"></a>
-<span class="sourceLineNo">4829</span>        }<a name="line.4829"></a>
+<span class="sourceLineNo">4771</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4771"></a>
+<span class="sourceLineNo">4772</span>          // instead of a KeyValue.<a name="line.4772"></a>
+<span class="sourceLineNo">4773</span>          if (coprocessorHost != null) {<a name="line.4773"></a>
+<span class="sourceLineNo">4774</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4774"></a>
+<span class="sourceLineNo">4775</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4775"></a>
+<span class="sourceLineNo">4776</span>              // if bypass this wal entry, ignore it ...<a name="line.4776"></a>
+<span class="sourceLineNo">4777</span>              continue;<a name="line.4777"></a>
+<span class="sourceLineNo">4778</span>            }<a name="line.4778"></a>
+<span class="sourceLineNo">4779</span>          }<a name="line.4779"></a>
+<span class="sourceLineNo">4780</span>          boolean checkRowWithinBoundary = false;<a name="line.4780"></a>
+<span class="sourceLineNo">4781</span>          // Check this edit is for this region.<a name="line.4781"></a>
+<span class="sourceLineNo">4782</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4782"></a>
+<span class="sourceLineNo">4783</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4783"></a>
+<span class="sourceLineNo">4784</span>            checkRowWithinBoundary = true;<a name="line.4784"></a>
+<span class="sourceLineNo">4785</span>          }<a name="line.4785"></a>
+<span class="sourceLineNo">4786</span><a name="line.4786"></a>
+<span class="sourceLineNo">4787</span>          boolean flush = false;<a name="line.4787"></a>
+<span class="sourceLineNo">4788</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4788"></a>
+<span class="sourceLineNo">4789</span>          for (Cell cell: val.getCells()) {<a name="line.4789"></a>
+<span class="sourceLineNo">4790</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4790"></a>
+<span class="sourceLineNo">4791</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4791"></a>
+<span class="sourceLineNo">4792</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4792"></a>
+<span class="sourceLineNo">4793</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4793"></a>
+<span class="sourceLineNo">4794</span>              if (!checkRowWithinBoundary) {<a name="line.4794"></a>
+<span class="sourceLineNo">4795</span>                //this is a special edit, we should handle it<a name="line.4795"></a>
+<span class="sourceLineNo">4796</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4796"></a>
+<span class="sourceLineNo">4797</span>                if (compaction != null) {<a name="line.4797"></a>
+<span class="sourceLineNo">4798</span>                  //replay the compaction<a name="line.4798"></a>
+<span class="sourceLineNo">4799</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4799"></a>
+<span class="sourceLineNo">4800</span>                }<a name="line.4800"></a>
+<span class="sourceLineNo">4801</span>              }<a name="line.4801"></a>
+<span class="sourceLineNo">4802</span>              skippedEdits++;<a name="line.4802"></a>
+<span class="sourceLineNo">4803</span>              continue;<a name="line.4803"></a>
+<span class="sourceLineNo">4804</span>            }<a name="line.4804"></a>
+<span class="sourceLineNo">4805</span>            // Figure which store the edit is meant for.<a name="line.4805"></a>
+<span class="sourceLineNo">4806</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4806"></a>
+<span class="sourceLineNo">4807</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4807"></a>
+<span class="sourceLineNo">4808</span>              store = getStore(cell);<a name="line.4808"></a>
+<span class="sourceLineNo">4809</span>            }<a name="line.4809"></a>
+<span class="sourceLineNo">4810</span>            if (store == null) {<a name="line.4810"></a>
+<span class="sourceLineNo">4811</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4811"></a>
+<span class="sourceLineNo">4812</span>              // crash and redeploy?<a name="line.4812"></a>
+<span class="sourceLineNo">4813</span>              LOG.warn("No family for " + cell);<a name="line.4813"></a>
+<span class="sourceLineNo">4814</span>              skippedEdits++;<a name="line.4814"></a>
+<span class="sourceLineNo">4815</span>              continue;<a name="line.4815"></a>
+<span class="sourceLineNo">4816</span>            }<a name="line.4816"></a>
+<span class="sourceLineNo">4817</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4817"></a>
+<span class="sourceLineNo">4818</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4818"></a>
+<span class="sourceLineNo">4819</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4819"></a>
+<span class="sourceLineNo">4820</span>              skippedEdits++;<a name="line.4820"></a>
+<span class="sourceLineNo">4821</span>              continue;<a name="line.4821"></a>
+<span class="sourceLineNo">4822</span>            }<a name="line.4822"></a>
+<span class="sourceLineNo">4823</span>            // Now, figure if we should skip this edit.<a name="line.4823"></a>
+<span class="sourceLineNo">4824</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4824"></a>
+<span class="sourceLineNo">4825</span>                .getName())) {<a name="line.4825"></a>
+<span class="sourceLineNo">4826</span>              skippedEdits++;<a name="line.4826"></a>
+<span class="sourceLineNo">4827</span>              continue;<a name="line.4827"></a>
+<span class="sourceLineNo">4828</span>            }<a name="line.4828"></a>
+<span class="sourceLineNo">4829</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4829"></a>
 <span class="sourceLineNo">4830</span><a name="line.4830"></a>
-<span class="sourceLineNo">4831</span>        if (coprocessorHost != null) {<a name="line.4831"></a>
-<span class="sourceLineNo">4832</span>          coprocessorHost.postReplayWALs(this.getRegionInfo(), edits);<a name="line.4832"></a>
-<span class="sourceLineNo">4833</span>        }<a name="line.4833"></a>
-<span class="sourceLineNo">4834</span>      } catch (EOFException eof) {<a name="line.4834"></a>
-<span class="sourceLineNo">4835</span>        Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4835"></a>
-<span class="sourceLineNo">4836</span>        msg = "EnLongAddered EOF. Most likely due to Master failure during " +<a name="line.4836"></a>
-<span class="sourceLineNo">4837</span>            "wal splitting, so we have this data in another edit.  " +<a name="line.4837"></a>
-<span class="sourceLineNo">4838</span>            "Continuing, but renaming " + edits + " as " + p;<a name="line.4838"></a>
-<span class="sourceLineNo">4839</span>        LOG.warn(msg, eof);<a name="line.4839"></a>
-<span class="sourceLineNo">4840</span>        status.abort(msg);<a name="line.4840"></a>
-<span class="sourceLineNo">4841</span>      } catch (IOException ioe) {<a name="line.4841"></a>
-<span class="sourceLineNo">4842</span>        // If the IOE resulted from bad file format,<a name="line.4842"></a>
-<span class="sourceLineNo">4843</span>        // then this problem is idempotent and retrying won't help<a name="line.4843"></a>
-<span class="sourceLineNo">4844</span>        if (ioe.getCause() instanceof ParseException) {<a name="line.4844"></a>
-<span class="sourceLineNo">4845</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4845"></a>
-<span class="sourceLineNo">4846</span>          msg = "File corruption enLongAddered!  " +<a name="line.4846"></a>
-<span class="sourceLineNo">4847</span>              "Continuing, but renaming " + edits + " as " + p;<a name="line.4847"></a>
-<span class="sourceLineNo">4848</span>          LOG.warn(msg, ioe);<a name="line.4848"></a>
-<span class="sourceLineNo">4849</span>          status.setStatus(msg);<a name="line.4849"></a>
-<span class="sourceLineNo">4850</span>        } else {<a name="line.4850"></a>
-<span class="sourceLineNo">4851</span>          status.abort(StringUtils.stringifyException(ioe));<a name="line.4851"></a>
-<span class="sourceLineNo">4852</span>          // other IO errors may be transient (bad network connection,<a name="line.4852"></a>
-<span class="sourceLineNo">4853</span>          // checksum exception on one datanode, etc).  throw &amp; retry<a name="line.4853"></a>
-<span class="sourceLineNo">4854</span>          throw ioe;<a name="line.4854"></a>
-<span class="sourceLineNo">4855</span>        }<a name="line.4855"></a>
-<span class="sourceLineNo">4856</span>      }<a name="line.4856"></a>
-<span class="sourceLineNo">4857</span>      if (reporter != null &amp;&amp; !reported_once) {<a name="line.4857"></a>
-<span class="sourceLineNo">4858</span>        reporter.progress();<a name="line.4858"></a>
-<span class="sourceLineNo">4859</span>      }<a name="line.4859"></a>
-<span class="sourceLineNo">4860</span>      msg = "Applied " + editsCount + ", skipped " + skippedEdits +<a name="line.4860"></a>
-<span class="sourceLineNo">4861</span>        ", firstSequenceIdInLog=" + firstSeqIdInLog +<a name="line.4861"></a>
-<span class="sourceLineNo">4862</span>        ", maxSequenceIdInLog=" + currentEditSeqId + ", path=" + edits;<a name="line.4862"></a>
-<span class="sourceLineNo">4863</span>      status.markComplete(msg);<a name="line.4863"></a>
-<span class="sourceLineNo">4864</span>      LOG.debug(msg);<a name="line.4864"></a>
-<span class="sourceLineNo">4865</span>      return currentEditSeqId;<a name="line.4865"></a>
-<span class="sourceLineNo">4866</span>    } finally {<a name="line.4866"></a>
-<span class="sourceLineNo">4867</span>      status.cleanup();<a name="line.4867"></a>
-<span class="sourceLineNo">4868</span>      if (reader != null) {<a name="line.4868"></a>
-<span class="sourceLineNo">4869</span>         reader.close();<a name="line.4869"></a>
-<span class="sourceLineNo">4870</span>      }<a name="line.4870"></a>
-<span class="sourceLineNo">4871</span>    }<a name="line.4871"></a>
-<span class="sourceLineNo">4872</span>  }<a name="line.4872"></a>
-<span class="sourceLineNo">4873</span><a name="line.4873"></a>
-<span class="sourceLineNo">4874</span>  /**<a name="line.4874"></a>
-<span class="sourceLineNo">4875</span>   * Call to complete a compaction. Its for the case where we find in the WAL a compaction<a name="line.4875"></a>
-<span class="sourceLineNo">4876</span>   * that was not finished.  We could find one recovering a WAL after a regionserver crash.<a name="line.4876"></a>
-<span class="sourceLineNo">4877</span>   * See HBASE-2331.<a name="line.4877"></a>
-<span class="sourceLineNo">4878</span>   */<a name="line.4878"></a>
-<span class="sourceLineNo">4879</span>  void replayWALCompactionMarker(CompactionDescriptor compaction, boolean pickCompactionFiles,<a name="line.4879"></a>
-<span class="sourceLineNo">4880</span>      boolean removeFiles, long replaySeqId)<a name="line.4880"></a>
-<span class="sourceLineNo">4881</span>      throws IOException {<a name="line.4881"></a>
-<span class="sourceLineNo">4882</span>    try {<a name="line.4882"></a>
-<span class="sourceLineNo">4883</span>      checkTargetRegion(compaction.getEncodedRegionName().toByteArray(),<a name="line.4883"></a>
-<span class="sourceLineNo">4884</span>        "Compaction marker from WAL ", compaction);<a name="line.4884"></a>
-<span class="sourceLineNo">4885</span>    } catch (WrongRegionException wre) {<a name="line.4885"></a>
-<span class="sourceLineNo">4886</span>      if (RegionReplicaUtil.isDefaultReplica(this.getRegionInfo())) {<a name="line.4886"></a>
-<span class="sourceLineNo">4887</span>        // skip the compaction marker since it is not for this region<a name="line.4887"></a>
-<span class="sourceLineNo">4888</span>        return;<a name="line.4888"></a>
-<span class="sourceLineNo">4889</span>      }<a name="line.4889"></a>
-<span class="sourceLineNo">4890</span>      throw wre;<a name="line.4890"></a>
-<span class="sourceLineNo">4891</span>    }<a name="line.4891"></a>
-<span class="sourceLineNo">4892</span><a name="line.4892"></a>
-<span class="sourceLineNo">4893</span>    synchronized (writestate) {<a name="line.4893"></a>
-<span class="sourceLineNo">4894</span>      if (replaySeqId &lt; lastReplayedOpenRegionSeqId) {<a name="line.4894"></a>
-<span class="sourceLineNo">4895</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4895"></a>
-<span class="sourceLineNo">4896</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4896"></a>
-<span class="sourceLineNo">4897</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4897"></a>
-<span class="sourceLineNo">4898</span>            + "lastReplayedOpenRegionSeqId of " + lastReplayedOpenRegionSeqId);<a name="line.4898"></a>
-<span class="sourceLineNo">4899</span>        return;<a name="line.4899"></a>
-<span class="sourceLineNo">4900</span>      }<a name="line.4900"></a>
-<span class="sourceLineNo">4901</span>      if (replaySeqId &lt; lastReplayedCompactionSeqId) {<a name="line.4901"></a>
-<span class="sourceLineNo">4902</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4902"></a>
-<span class="sourceLineNo">4903</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4903"></a>
-<span class="sourceLineNo">4904</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4904"></a>
-<span class="sourceLineNo">4905</span>            + "lastReplayedCompactionSeqId of " + lastReplayedCompactionSeqId);<a name="line.4905"></a>
-<span class="sourceLineNo">4906</span>        return;<a name="line.4906"></a>
-<span class="sourceLineNo">4907</span>      } else {<a name="line.4907"></a>
-<span class="sourceLineNo">4908</span>        lastReplayedCompactionSeqId = replaySeqId;<a name="line

<TRUNCATED>

[18/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/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 da040ad..d6702a7 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
@@ -2957,7 +2957,7 @@
 <span class="sourceLineNo">2949</span>        if(family == null) {<a name="line.2949"></a>
 <span class="sourceLineNo">2950</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2950"></a>
 <span class="sourceLineNo">2951</span>        }<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>        checkFamily(family);<a name="line.2952"></a>
+<span class="sourceLineNo">2952</span>        checkFamily(family, delete.getDurability());<a name="line.2952"></a>
 <span class="sourceLineNo">2953</span>      }<a name="line.2953"></a>
 <span class="sourceLineNo">2954</span>    }<a name="line.2954"></a>
 <span class="sourceLineNo">2955</span>  }<a name="line.2955"></a>
@@ -3569,7 +3569,7 @@
 <span class="sourceLineNo">3561</span><a name="line.3561"></a>
 <span class="sourceLineNo">3562</span>    @Override<a name="line.3562"></a>
 <span class="sourceLineNo">3563</span>    public void checkAndPreparePut(Put p) throws IOException {<a name="line.3563"></a>
-<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet());<a name="line.3564"></a>
+<span class="sourceLineNo">3564</span>      region.checkFamilies(p.getFamilyCellMap().keySet(), p.getDurability());<a name="line.3564"></a>
 <span class="sourceLineNo">3565</span>    }<a name="line.3565"></a>
 <span class="sourceLineNo">3566</span><a name="line.3566"></a>
 <span class="sourceLineNo">3567</span>    @Override<a name="line.3567"></a>
@@ -4462,4304 +4462,4307 @@
 <span class="sourceLineNo">4454</span>    store.add(cell, memstoreAccounting);<a name="line.4454"></a>
 <span class="sourceLineNo">4455</span>  }<a name="line.4455"></a>
 <span class="sourceLineNo">4456</span><a name="line.4456"></a>
-<span class="sourceLineNo">4457</span>  /**<a name="line.4457"></a>
-<span class="sourceLineNo">4458</span>   * Check the collection of families for validity.<a name="line.4458"></a>
-<span class="sourceLineNo">4459</span>   * @param families<a name="line.4459"></a>
-<span class="sourceLineNo">4460</span>   * @throws NoSuchColumnFamilyException<a name="line.4460"></a>
-<span class="sourceLineNo">4461</span>   */<a name="line.4461"></a>
-<span class="sourceLineNo">4462</span>  public void checkFamilies(Collection&lt;byte[]&gt; families) throws NoSuchColumnFamilyException {<a name="line.4462"></a>
-<span class="sourceLineNo">4463</span>    for (byte[] family : families) {<a name="line.4463"></a>
-<span class="sourceLineNo">4464</span>      checkFamily(family);<a name="line.4464"></a>
-<span class="sourceLineNo">4465</span>    }<a name="line.4465"></a>
-<span class="sourceLineNo">4466</span>  }<a name="line.4466"></a>
-<span class="sourceLineNo">4467</span><a name="line.4467"></a>
-<span class="sourceLineNo">4468</span>  /**<a name="line.4468"></a>
-<span class="sourceLineNo">4469</span>   * Check the collection of families for valid timestamps<a name="line.4469"></a>
-<span class="sourceLineNo">4470</span>   * @param familyMap<a name="line.4470"></a>
-<span class="sourceLineNo">4471</span>   * @param now current timestamp<a name="line.4471"></a>
-<span class="sourceLineNo">4472</span>   * @throws FailedSanityCheckException<a name="line.4472"></a>
-<span class="sourceLineNo">4473</span>   */<a name="line.4473"></a>
-<span class="sourceLineNo">4474</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4474"></a>
-<span class="sourceLineNo">4475</span>      throws FailedSanityCheckException {<a name="line.4475"></a>
-<span class="sourceLineNo">4476</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4476"></a>
-<span class="sourceLineNo">4477</span>      return;<a name="line.4477"></a>
-<span class="sourceLineNo">4478</span>    }<a name="line.4478"></a>
-<span class="sourceLineNo">4479</span>    long maxTs = now + timestampSlop;<a name="line.4479"></a>
-<span class="sourceLineNo">4480</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4480"></a>
-<span class="sourceLineNo">4481</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4481"></a>
-<span class="sourceLineNo">4482</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4482"></a>
-<span class="sourceLineNo">4483</span>      assert kvs instanceof RandomAccess;<a name="line.4483"></a>
-<span class="sourceLineNo">4484</span>      int listSize  = kvs.size();<a name="line.4484"></a>
-<span class="sourceLineNo">4485</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4485"></a>
-<span class="sourceLineNo">4486</span>        Cell cell = kvs.get(i);<a name="line.4486"></a>
-<span class="sourceLineNo">4487</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4487"></a>
-<span class="sourceLineNo">4488</span>        long ts = cell.getTimestamp();<a name="line.4488"></a>
-<span class="sourceLineNo">4489</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4489"></a>
-<span class="sourceLineNo">4490</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4490"></a>
-<span class="sourceLineNo">4491</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4491"></a>
-<span class="sourceLineNo">4492</span>        }<a name="line.4492"></a>
-<span class="sourceLineNo">4493</span>      }<a name="line.4493"></a>
+<span class="sourceLineNo">4457</span>  private void checkFamilies(Collection&lt;byte[]&gt; families, Durability durability)<a name="line.4457"></a>
+<span class="sourceLineNo">4458</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4458"></a>
+<span class="sourceLineNo">4459</span>    for (byte[] family : families) {<a name="line.4459"></a>
+<span class="sourceLineNo">4460</span>      checkFamily(family, durability);<a name="line.4460"></a>
+<span class="sourceLineNo">4461</span>    }<a name="line.4461"></a>
+<span class="sourceLineNo">4462</span>  }<a name="line.4462"></a>
+<span class="sourceLineNo">4463</span><a name="line.4463"></a>
+<span class="sourceLineNo">4464</span>  private void checkFamily(final byte[] family, Durability durability)<a name="line.4464"></a>
+<span class="sourceLineNo">4465</span>      throws NoSuchColumnFamilyException, InvalidMutationDurabilityException {<a name="line.4465"></a>
+<span class="sourceLineNo">4466</span>    checkFamily(family);<a name="line.4466"></a>
+<span class="sourceLineNo">4467</span>    if (durability.equals(Durability.SKIP_WAL)<a name="line.4467"></a>
+<span class="sourceLineNo">4468</span>        &amp;&amp; htableDescriptor.getColumnFamily(family).getScope()<a name="line.4468"></a>
+<span class="sourceLineNo">4469</span>        != HConstants.REPLICATION_SCOPE_LOCAL) {<a name="line.4469"></a>
+<span class="sourceLineNo">4470</span>      throw new InvalidMutationDurabilityException(<a name="line.4470"></a>
+<span class="sourceLineNo">4471</span>          "Mutation's durability is SKIP_WAL but table's column family " + Bytes.toString(family)<a name="line.4471"></a>
+<span class="sourceLineNo">4472</span>              + " need replication");<a name="line.4472"></a>
+<span class="sourceLineNo">4473</span>    }<a name="line.4473"></a>
+<span class="sourceLineNo">4474</span>  }<a name="line.4474"></a>
+<span class="sourceLineNo">4475</span><a name="line.4475"></a>
+<span class="sourceLineNo">4476</span>  void checkFamily(final byte[] family) throws NoSuchColumnFamilyException {<a name="line.4476"></a>
+<span class="sourceLineNo">4477</span>    if (!this.htableDescriptor.hasColumnFamily(family)) {<a name="line.4477"></a>
+<span class="sourceLineNo">4478</span>      throw new NoSuchColumnFamilyException(<a name="line.4478"></a>
+<span class="sourceLineNo">4479</span>          "Column family " + Bytes.toString(family) + " does not exist in region " + this<a name="line.4479"></a>
+<span class="sourceLineNo">4480</span>              + " in table " + this.htableDescriptor);<a name="line.4480"></a>
+<span class="sourceLineNo">4481</span>    }<a name="line.4481"></a>
+<span class="sourceLineNo">4482</span>  }<a name="line.4482"></a>
+<span class="sourceLineNo">4483</span><a name="line.4483"></a>
+<span class="sourceLineNo">4484</span>  /**<a name="line.4484"></a>
+<span class="sourceLineNo">4485</span>   * Check the collection of families for valid timestamps<a name="line.4485"></a>
+<span class="sourceLineNo">4486</span>   * @param familyMap<a name="line.4486"></a>
+<span class="sourceLineNo">4487</span>   * @param now current timestamp<a name="line.4487"></a>
+<span class="sourceLineNo">4488</span>   * @throws FailedSanityCheckException<a name="line.4488"></a>
+<span class="sourceLineNo">4489</span>   */<a name="line.4489"></a>
+<span class="sourceLineNo">4490</span>  public void checkTimestamps(final Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap, long now)<a name="line.4490"></a>
+<span class="sourceLineNo">4491</span>      throws FailedSanityCheckException {<a name="line.4491"></a>
+<span class="sourceLineNo">4492</span>    if (timestampSlop == HConstants.LATEST_TIMESTAMP) {<a name="line.4492"></a>
+<span class="sourceLineNo">4493</span>      return;<a name="line.4493"></a>
 <span class="sourceLineNo">4494</span>    }<a name="line.4494"></a>
-<span class="sourceLineNo">4495</span>  }<a name="line.4495"></a>
-<span class="sourceLineNo">4496</span><a name="line.4496"></a>
-<span class="sourceLineNo">4497</span>  /*<a name="line.4497"></a>
-<span class="sourceLineNo">4498</span>   * @param size<a name="line.4498"></a>
-<span class="sourceLineNo">4499</span>   * @return True if size is over the flush threshold<a name="line.4499"></a>
-<span class="sourceLineNo">4500</span>   */<a name="line.4500"></a>
-<span class="sourceLineNo">4501</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4501"></a>
-<span class="sourceLineNo">4502</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4502"></a>
-<span class="sourceLineNo">4503</span>  }<a name="line.4503"></a>
-<span class="sourceLineNo">4504</span><a name="line.4504"></a>
-<span class="sourceLineNo">4505</span>  /**<a name="line.4505"></a>
-<span class="sourceLineNo">4506</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4506"></a>
-<span class="sourceLineNo">4507</span>   * the recovered edits back up into this region.<a name="line.4507"></a>
-<span class="sourceLineNo">4508</span>   *<a name="line.4508"></a>
-<span class="sourceLineNo">4509</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4509"></a>
-<span class="sourceLineNo">4510</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4510"></a>
-<span class="sourceLineNo">4511</span>   * reflected in the HFiles.)<a name="line.4511"></a>
-<span class="sourceLineNo">4512</span>   *<a name="line.4512"></a>
-<span class="sourceLineNo">4513</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4513"></a>
-<span class="sourceLineNo">4514</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4514"></a>
-<span class="sourceLineNo">4515</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4515"></a>
-<span class="sourceLineNo">4516</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4516"></a>
-<span class="sourceLineNo">4517</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4517"></a>
-<span class="sourceLineNo">4518</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4518"></a>
-<span class="sourceLineNo">4519</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4519"></a>
-<span class="sourceLineNo">4520</span>   * edits.<a name="line.4520"></a>
-<span class="sourceLineNo">4521</span>   *<a name="line.4521"></a>
-<span class="sourceLineNo">4522</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4522"></a>
-<span class="sourceLineNo">4523</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4523"></a>
-<span class="sourceLineNo">4524</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4524"></a>
-<span class="sourceLineNo">4525</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4525"></a>
-<span class="sourceLineNo">4526</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4526"></a>
-<span class="sourceLineNo">4527</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4527"></a>
-<span class="sourceLineNo">4528</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4528"></a>
-<span class="sourceLineNo">4529</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4529"></a>
-<span class="sourceLineNo">4530</span>   * make sense in a this single region context only -- until we online.<a name="line.4530"></a>
-<span class="sourceLineNo">4531</span>   *<a name="line.4531"></a>
-<span class="sourceLineNo">4532</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4532"></a>
-<span class="sourceLineNo">4533</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4533"></a>
-<span class="sourceLineNo">4534</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4534"></a>
-<span class="sourceLineNo">4535</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4535"></a>
-<span class="sourceLineNo">4536</span>   * @throws IOException<a name="line.4536"></a>
-<span class="sourceLineNo">4537</span>   */<a name="line.4537"></a>
-<span class="sourceLineNo">4538</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4538"></a>
-<span class="sourceLineNo">4539</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4539"></a>
-<span class="sourceLineNo">4540</span>      throws IOException {<a name="line.4540"></a>
-<span class="sourceLineNo">4541</span>    long minSeqIdForTheRegion = -1;<a name="line.4541"></a>
-<span class="sourceLineNo">4542</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4542"></a>
-<span class="sourceLineNo">4543</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4543"></a>
-<span class="sourceLineNo">4544</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4544"></a>
-<span class="sourceLineNo">4545</span>      }<a name="line.4545"></a>
-<span class="sourceLineNo">4546</span>    }<a name="line.4546"></a>
-<span class="sourceLineNo">4547</span>    long seqid = minSeqIdForTheRegion;<a name="line.4547"></a>
-<span class="sourceLineNo">4548</span><a name="line.4548"></a>
-<span class="sourceLineNo">4549</span>    FileSystem walFS = getWalFileSystem();<a name="line.4549"></a>
-<span class="sourceLineNo">4550</span>    FileSystem rootFS = getFilesystem();<a name="line.4550"></a>
-<span class="sourceLineNo">4551</span>    Path regionDir = getWALRegionDir();<a name="line.4551"></a>
-<span class="sourceLineNo">4552</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4552"></a>
-<span class="sourceLineNo">4553</span><a name="line.4553"></a>
-<span class="sourceLineNo">4554</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4554"></a>
-<span class="sourceLineNo">4555</span>    // under the root dir even if walDir is set.<a name="line.4555"></a>
-<span class="sourceLineNo">4556</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4556"></a>
-<span class="sourceLineNo">4557</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4557"></a>
-<span class="sourceLineNo">4558</span>      filesUnderRootDir =<a name="line.4558"></a>
-<span class="sourceLineNo">4559</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4559"></a>
-<span class="sourceLineNo">4560</span>      seqid = Math.max(seqid,<a name="line.4560"></a>
-<span class="sourceLineNo">4561</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4561"></a>
-<span class="sourceLineNo">4562</span>              defaultRegionDir));<a name="line.4562"></a>
-<span class="sourceLineNo">4563</span>    }<a name="line.4563"></a>
+<span class="sourceLineNo">4495</span>    long maxTs = now + timestampSlop;<a name="line.4495"></a>
+<span class="sourceLineNo">4496</span>    for (List&lt;Cell&gt; kvs : familyMap.values()) {<a name="line.4496"></a>
+<span class="sourceLineNo">4497</span>      // Optimization: 'foreach' loop is not used. See:<a name="line.4497"></a>
+<span class="sourceLineNo">4498</span>      // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.4498"></a>
+<span class="sourceLineNo">4499</span>      assert kvs instanceof RandomAccess;<a name="line.4499"></a>
+<span class="sourceLineNo">4500</span>      int listSize  = kvs.size();<a name="line.4500"></a>
+<span class="sourceLineNo">4501</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.4501"></a>
+<span class="sourceLineNo">4502</span>        Cell cell = kvs.get(i);<a name="line.4502"></a>
+<span class="sourceLineNo">4503</span>        // see if the user-side TS is out of range. latest = server-side<a name="line.4503"></a>
+<span class="sourceLineNo">4504</span>        long ts = cell.getTimestamp();<a name="line.4504"></a>
+<span class="sourceLineNo">4505</span>        if (ts != HConstants.LATEST_TIMESTAMP &amp;&amp; ts &gt; maxTs) {<a name="line.4505"></a>
+<span class="sourceLineNo">4506</span>          throw new FailedSanityCheckException("Timestamp for KV out of range "<a name="line.4506"></a>
+<span class="sourceLineNo">4507</span>              + cell + " (too.new=" + timestampSlop + ")");<a name="line.4507"></a>
+<span class="sourceLineNo">4508</span>        }<a name="line.4508"></a>
+<span class="sourceLineNo">4509</span>      }<a name="line.4509"></a>
+<span class="sourceLineNo">4510</span>    }<a name="line.4510"></a>
+<span class="sourceLineNo">4511</span>  }<a name="line.4511"></a>
+<span class="sourceLineNo">4512</span><a name="line.4512"></a>
+<span class="sourceLineNo">4513</span>  /*<a name="line.4513"></a>
+<span class="sourceLineNo">4514</span>   * @param size<a name="line.4514"></a>
+<span class="sourceLineNo">4515</span>   * @return True if size is over the flush threshold<a name="line.4515"></a>
+<span class="sourceLineNo">4516</span>   */<a name="line.4516"></a>
+<span class="sourceLineNo">4517</span>  private boolean isFlushSize(MemStoreSize size) {<a name="line.4517"></a>
+<span class="sourceLineNo">4518</span>    return size.getHeapSize() + size.getOffHeapSize() &gt; getMemStoreFlushSize();<a name="line.4518"></a>
+<span class="sourceLineNo">4519</span>  }<a name="line.4519"></a>
+<span class="sourceLineNo">4520</span><a name="line.4520"></a>
+<span class="sourceLineNo">4521</span>  /**<a name="line.4521"></a>
+<span class="sourceLineNo">4522</span>   * Read the edits put under this region by wal splitting process.  Put<a name="line.4522"></a>
+<span class="sourceLineNo">4523</span>   * the recovered edits back up into this region.<a name="line.4523"></a>
+<span class="sourceLineNo">4524</span>   *<a name="line.4524"></a>
+<span class="sourceLineNo">4525</span>   * &lt;p&gt;We can ignore any wal message that has a sequence ID that's equal to or<a name="line.4525"></a>
+<span class="sourceLineNo">4526</span>   * lower than minSeqId.  (Because we know such messages are already<a name="line.4526"></a>
+<span class="sourceLineNo">4527</span>   * reflected in the HFiles.)<a name="line.4527"></a>
+<span class="sourceLineNo">4528</span>   *<a name="line.4528"></a>
+<span class="sourceLineNo">4529</span>   * &lt;p&gt;While this is running we are putting pressure on memory yet we are<a name="line.4529"></a>
+<span class="sourceLineNo">4530</span>   * outside of our usual accounting because we are not yet an onlined region<a name="line.4530"></a>
+<span class="sourceLineNo">4531</span>   * (this stuff is being run as part of Region initialization).  This means<a name="line.4531"></a>
+<span class="sourceLineNo">4532</span>   * that if we're up against global memory limits, we'll not be flagged to flush<a name="line.4532"></a>
+<span class="sourceLineNo">4533</span>   * because we are not online. We can't be flushed by usual mechanisms anyways;<a name="line.4533"></a>
+<span class="sourceLineNo">4534</span>   * we're not yet online so our relative sequenceids are not yet aligned with<a name="line.4534"></a>
+<span class="sourceLineNo">4535</span>   * WAL sequenceids -- not till we come up online, post processing of split<a name="line.4535"></a>
+<span class="sourceLineNo">4536</span>   * edits.<a name="line.4536"></a>
+<span class="sourceLineNo">4537</span>   *<a name="line.4537"></a>
+<span class="sourceLineNo">4538</span>   * &lt;p&gt;But to help relieve memory pressure, at least manage our own heap size<a name="line.4538"></a>
+<span class="sourceLineNo">4539</span>   * flushing if are in excess of per-region limits.  Flushing, though, we have<a name="line.4539"></a>
+<span class="sourceLineNo">4540</span>   * to be careful and avoid using the regionserver/wal sequenceid.  Its running<a name="line.4540"></a>
+<span class="sourceLineNo">4541</span>   * on a different line to whats going on in here in this region context so if we<a name="line.4541"></a>
+<span class="sourceLineNo">4542</span>   * crashed replaying these edits, but in the midst had a flush that used the<a name="line.4542"></a>
+<span class="sourceLineNo">4543</span>   * regionserver wal with a sequenceid in excess of whats going on in here<a name="line.4543"></a>
+<span class="sourceLineNo">4544</span>   * in this region and with its split editlogs, then we could miss edits the<a name="line.4544"></a>
+<span class="sourceLineNo">4545</span>   * next time we go to recover. So, we have to flush inline, using seqids that<a name="line.4545"></a>
+<span class="sourceLineNo">4546</span>   * make sense in a this single region context only -- until we online.<a name="line.4546"></a>
+<span class="sourceLineNo">4547</span>   *<a name="line.4547"></a>
+<span class="sourceLineNo">4548</span>   * @param maxSeqIdInStores Any edit found in split editlogs needs to be in excess of<a name="line.4548"></a>
+<span class="sourceLineNo">4549</span>   * the maxSeqId for the store to be applied, else its skipped.<a name="line.4549"></a>
+<span class="sourceLineNo">4550</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4550"></a>
+<span class="sourceLineNo">4551</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4551"></a>
+<span class="sourceLineNo">4552</span>   * @throws IOException<a name="line.4552"></a>
+<span class="sourceLineNo">4553</span>   */<a name="line.4553"></a>
+<span class="sourceLineNo">4554</span>  protected long replayRecoveredEditsIfAny(Map&lt;byte[], Long&gt; maxSeqIdInStores,<a name="line.4554"></a>
+<span class="sourceLineNo">4555</span>      final CancelableProgressable reporter, final MonitoredTask status)<a name="line.4555"></a>
+<span class="sourceLineNo">4556</span>      throws IOException {<a name="line.4556"></a>
+<span class="sourceLineNo">4557</span>    long minSeqIdForTheRegion = -1;<a name="line.4557"></a>
+<span class="sourceLineNo">4558</span>    for (Long maxSeqIdInStore : maxSeqIdInStores.values()) {<a name="line.4558"></a>
+<span class="sourceLineNo">4559</span>      if (maxSeqIdInStore &lt; minSeqIdForTheRegion || minSeqIdForTheRegion == -1) {<a name="line.4559"></a>
+<span class="sourceLineNo">4560</span>        minSeqIdForTheRegion = maxSeqIdInStore;<a name="line.4560"></a>
+<span class="sourceLineNo">4561</span>      }<a name="line.4561"></a>
+<span class="sourceLineNo">4562</span>    }<a name="line.4562"></a>
+<span class="sourceLineNo">4563</span>    long seqid = minSeqIdForTheRegion;<a name="line.4563"></a>
 <span class="sourceLineNo">4564</span><a name="line.4564"></a>
-<span class="sourceLineNo">4565</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4565"></a>
-<span class="sourceLineNo">4566</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4566"></a>
-<span class="sourceLineNo">4567</span>        files, reporter, regionDir));<a name="line.4567"></a>
-<span class="sourceLineNo">4568</span><a name="line.4568"></a>
-<span class="sourceLineNo">4569</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4569"></a>
-<span class="sourceLineNo">4570</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4570"></a>
-<span class="sourceLineNo">4571</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4571"></a>
-<span class="sourceLineNo">4572</span>    }<a name="line.4572"></a>
-<span class="sourceLineNo">4573</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4573"></a>
-<span class="sourceLineNo">4574</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4574"></a>
-<span class="sourceLineNo">4575</span>      // For debugging data loss issues!<a name="line.4575"></a>
-<span class="sourceLineNo">4576</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4576"></a>
-<span class="sourceLineNo">4577</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4577"></a>
-<span class="sourceLineNo">4578</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4578"></a>
-<span class="sourceLineNo">4579</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4579"></a>
-<span class="sourceLineNo">4580</span>      for (Path file: files) {<a name="line.4580"></a>
-<span class="sourceLineNo">4581</span>        fakeStoreFiles.add(<a name="line.4581"></a>
-<span class="sourceLineNo">4582</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4582"></a>
-<span class="sourceLineNo">4583</span>      }<a name="line.4583"></a>
-<span class="sourceLineNo">4584</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4584"></a>
-<span class="sourceLineNo">4585</span>    } else {<a name="line.4585"></a>
-<span class="sourceLineNo">4586</span>      if (filesUnderRootDir != null) {<a name="line.4586"></a>
-<span class="sourceLineNo">4587</span>        for (Path file : filesUnderRootDir) {<a name="line.4587"></a>
-<span class="sourceLineNo">4588</span>          if (!rootFS.delete(file, false)) {<a name="line.4588"></a>
-<span class="sourceLineNo">4589</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4589"></a>
-<span class="sourceLineNo">4590</span>          } else {<a name="line.4590"></a>
-<span class="sourceLineNo">4591</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4591"></a>
-<span class="sourceLineNo">4592</span>          }<a name="line.4592"></a>
-<span class="sourceLineNo">4593</span>        }<a name="line.4593"></a>
-<span class="sourceLineNo">4594</span>      }<a name="line.4594"></a>
-<span class="sourceLineNo">4595</span>      for (Path file: files) {<a name="line.4595"></a>
-<span class="sourceLineNo">4596</span>        if (!walFS.delete(file, false)) {<a name="line.4596"></a>
-<span class="sourceLineNo">4597</span>          LOG.error("Failed delete of " + file);<a name="line.4597"></a>
-<span class="sourceLineNo">4598</span>        } else {<a name="line.4598"></a>
-<span class="sourceLineNo">4599</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4599"></a>
-<span class="sourceLineNo">4600</span>        }<a name="line.4600"></a>
-<span class="sourceLineNo">4601</span>      }<a name="line.4601"></a>
-<span class="sourceLineNo">4602</span>    }<a name="line.4602"></a>
-<span class="sourceLineNo">4603</span>    return seqid;<a name="line.4603"></a>
-<span class="sourceLineNo">4604</span>  }<a name="line.4604"></a>
-<span class="sourceLineNo">4605</span><a name="line.4605"></a>
-<span class="sourceLineNo">4606</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4606"></a>
-<span class="sourceLineNo">4607</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4607"></a>
-<span class="sourceLineNo">4608</span>      throws IOException {<a name="line.4608"></a>
-<span class="sourceLineNo">4609</span>    long seqid = minSeqIdForTheRegion;<a name="line.4609"></a>
-<span class="sourceLineNo">4610</span>    if (LOG.isDebugEnabled()) {<a name="line.4610"></a>
-<span class="sourceLineNo">4611</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4611"></a>
-<span class="sourceLineNo">4612</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4612"></a>
-<span class="sourceLineNo">4613</span>    }<a name="line.4613"></a>
-<span class="sourceLineNo">4614</span><a name="line.4614"></a>
-<span class="sourceLineNo">4615</span>    if (files == null || files.isEmpty()) {<a name="line.4615"></a>
-<span class="sourceLineNo">4616</span>      return minSeqIdForTheRegion;<a name="line.4616"></a>
-<span class="sourceLineNo">4617</span>    }<a name="line.4617"></a>
-<span class="sourceLineNo">4618</span><a name="line.4618"></a>
-<span class="sourceLineNo">4619</span>    for (Path edits: files) {<a name="line.4619"></a>
-<span class="sourceLineNo">4620</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4620"></a>
-<span class="sourceLineNo">4621</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4621"></a>
-<span class="sourceLineNo">4622</span>        continue;<a name="line.4622"></a>
-<span class="sourceLineNo">4623</span>      }<a name="line.4623"></a>
-<span class="sourceLineNo">4624</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4624"></a>
-<span class="sourceLineNo">4625</span><a name="line.4625"></a>
-<span class="sourceLineNo">4626</span>      long maxSeqId;<a name="line.4626"></a>
-<span class="sourceLineNo">4627</span>      String fileName = edits.getName();<a name="line.4627"></a>
-<span class="sourceLineNo">4628</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4628"></a>
-<span class="sourceLineNo">4629</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4629"></a>
-<span class="sourceLineNo">4630</span>        if (LOG.isDebugEnabled()) {<a name="line.4630"></a>
-<span class="sourceLineNo">4631</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4631"></a>
-<span class="sourceLineNo">4632</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4632"></a>
-<span class="sourceLineNo">4633</span>              + ", skipped the whole file, path=" + edits;<a name="line.4633"></a>
-<span class="sourceLineNo">4634</span>          LOG.debug(msg);<a name="line.4634"></a>
-<span class="sourceLineNo">4635</span>        }<a name="line.4635"></a>
-<span class="sourceLineNo">4636</span>        continue;<a name="line.4636"></a>
-<span class="sourceLineNo">4637</span>      }<a name="line.4637"></a>
-<span class="sourceLineNo">4638</span><a name="line.4638"></a>
-<span class="sourceLineNo">4639</span>      try {<a name="line.4639"></a>
-<span class="sourceLineNo">4640</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4640"></a>
-<span class="sourceLineNo">4641</span>        // if seqId is greater<a name="line.4641"></a>
-<span class="sourceLineNo">4642</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4642"></a>
-<span class="sourceLineNo">4643</span>      } catch (IOException e) {<a name="line.4643"></a>
-<span class="sourceLineNo">4644</span>        boolean skipErrors = conf.getBoolean(<a name="line.4644"></a>
-<span class="sourceLineNo">4645</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4645"></a>
-<span class="sourceLineNo">4646</span>            conf.getBoolean(<a name="line.4646"></a>
-<span class="sourceLineNo">4647</span>                "hbase.skip.errors",<a name="line.4647"></a>
-<span class="sourceLineNo">4648</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4648"></a>
-<span class="sourceLineNo">4649</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4649"></a>
-<span class="sourceLineNo">4650</span>          LOG.warn(<a name="line.4650"></a>
-<span class="sourceLineNo">4651</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4651"></a>
-<span class="sourceLineNo">4652</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4652"></a>
-<span class="sourceLineNo">4653</span>        }<a name="line.4653"></a>
-<span class="sourceLineNo">4654</span>        if (skipErrors) {<a name="line.4654"></a>
-<span class="sourceLineNo">4655</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4655"></a>
-<span class="sourceLineNo">4656</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4656"></a>
-<span class="sourceLineNo">4657</span>              + "=true so continuing. Renamed " + edits +<a name="line.4657"></a>
-<span class="sourceLineNo">4658</span>              " as " + p, e);<a name="line.4658"></a>
-<span class="sourceLineNo">4659</span>        } else {<a name="line.4659"></a>
-<span class="sourceLineNo">4660</span>          throw e;<a name="line.4660"></a>
-<span class="sourceLineNo">4661</span>        }<a name="line.4661"></a>
-<span class="sourceLineNo">4662</span>      }<a name="line.4662"></a>
-<span class="sourceLineNo">4663</span>    }<a name="line.4663"></a>
-<span class="sourceLineNo">4664</span>    return seqid;<a name="line.4664"></a>
-<span class="sourceLineNo">4665</span>  }<a name="line.4665"></a>
-<span class="sourceLineNo">4666</span><a name="line.4666"></a>
-<span class="sourceLineNo">4667</span>  /*<a name="line.4667"></a>
-<span class="sourceLineNo">4668</span>   * @param edits File of recovered edits.<a name="line.4668"></a>
-<span class="sourceLineNo">4669</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4669"></a>
-<span class="sourceLineNo">4670</span>   * must be larger than this to be replayed for each store.<a name="line.4670"></a>
-<span class="sourceLineNo">4671</span>   * @param reporter<a name="line.4671"></a>
-<span class="sourceLineNo">4672</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4672"></a>
-<span class="sourceLineNo">4673</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4673"></a>
-<span class="sourceLineNo">4674</span>   * @throws IOException<a name="line.4674"></a>
-<span class="sourceLineNo">4675</span>   */<a name="line.4675"></a>
-<span class="sourceLineNo">4676</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4676"></a>
-<span class="sourceLineNo">4677</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4677"></a>
-<span class="sourceLineNo">4678</span>    throws IOException {<a name="line.4678"></a>
-<span class="sourceLineNo">4679</span>    String msg = "Replaying edits from " + edits;<a name="line.4679"></a>
-<span class="sourceLineNo">4680</span>    LOG.info(msg);<a name="line.4680"></a>
-<span class="sourceLineNo">4681</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4681"></a>
+<span class="sourceLineNo">4565</span>    FileSystem walFS = getWalFileSystem();<a name="line.4565"></a>
+<span class="sourceLineNo">4566</span>    FileSystem rootFS = getFilesystem();<a name="line.4566"></a>
+<span class="sourceLineNo">4567</span>    Path regionDir = getWALRegionDir();<a name="line.4567"></a>
+<span class="sourceLineNo">4568</span>    Path defaultRegionDir = getRegionDir(FSUtils.getRootDir(conf), getRegionInfo());<a name="line.4568"></a>
+<span class="sourceLineNo">4569</span><a name="line.4569"></a>
+<span class="sourceLineNo">4570</span>    // This is to ensure backwards compatability with HBASE-20723 where recovered edits can appear<a name="line.4570"></a>
+<span class="sourceLineNo">4571</span>    // under the root dir even if walDir is set.<a name="line.4571"></a>
+<span class="sourceLineNo">4572</span>    NavigableSet&lt;Path&gt; filesUnderRootDir = null;<a name="line.4572"></a>
+<span class="sourceLineNo">4573</span>    if (!regionDir.equals(defaultRegionDir)) {<a name="line.4573"></a>
+<span class="sourceLineNo">4574</span>      filesUnderRootDir =<a name="line.4574"></a>
+<span class="sourceLineNo">4575</span>          WALSplitter.getSplitEditFilesSorted(rootFS, defaultRegionDir);<a name="line.4575"></a>
+<span class="sourceLineNo">4576</span>      seqid = Math.max(seqid,<a name="line.4576"></a>
+<span class="sourceLineNo">4577</span>          replayRecoveredEditsForPaths(minSeqIdForTheRegion, rootFS, filesUnderRootDir, reporter,<a name="line.4577"></a>
+<span class="sourceLineNo">4578</span>              defaultRegionDir));<a name="line.4578"></a>
+<span class="sourceLineNo">4579</span>    }<a name="line.4579"></a>
+<span class="sourceLineNo">4580</span><a name="line.4580"></a>
+<span class="sourceLineNo">4581</span>    NavigableSet&lt;Path&gt; files = WALSplitter.getSplitEditFilesSorted(walFS, regionDir);<a name="line.4581"></a>
+<span class="sourceLineNo">4582</span>    seqid = Math.max(seqid, replayRecoveredEditsForPaths(minSeqIdForTheRegion, walFS,<a name="line.4582"></a>
+<span class="sourceLineNo">4583</span>        files, reporter, regionDir));<a name="line.4583"></a>
+<span class="sourceLineNo">4584</span><a name="line.4584"></a>
+<span class="sourceLineNo">4585</span>    if (seqid &gt; minSeqIdForTheRegion) {<a name="line.4585"></a>
+<span class="sourceLineNo">4586</span>      // Then we added some edits to memory. Flush and cleanup split edit files.<a name="line.4586"></a>
+<span class="sourceLineNo">4587</span>      internalFlushcache(null, seqid, stores.values(), status, false, FlushLifeCycleTracker.DUMMY);<a name="line.4587"></a>
+<span class="sourceLineNo">4588</span>    }<a name="line.4588"></a>
+<span class="sourceLineNo">4589</span>    // Now delete the content of recovered edits.  We're done w/ them.<a name="line.4589"></a>
+<span class="sourceLineNo">4590</span>    if (files.size() &gt; 0 &amp;&amp; this.conf.getBoolean("hbase.region.archive.recovered.edits", false)) {<a name="line.4590"></a>
+<span class="sourceLineNo">4591</span>      // For debugging data loss issues!<a name="line.4591"></a>
+<span class="sourceLineNo">4592</span>      // If this flag is set, make use of the hfile archiving by making recovered.edits a fake<a name="line.4592"></a>
+<span class="sourceLineNo">4593</span>      // column family. Have to fake out file type too by casting our recovered.edits as storefiles<a name="line.4593"></a>
+<span class="sourceLineNo">4594</span>      String fakeFamilyName = WALSplitter.getRegionDirRecoveredEditsDir(regionDir).getName();<a name="line.4594"></a>
+<span class="sourceLineNo">4595</span>      Set&lt;HStoreFile&gt; fakeStoreFiles = new HashSet&lt;&gt;(files.size());<a name="line.4595"></a>
+<span class="sourceLineNo">4596</span>      for (Path file: files) {<a name="line.4596"></a>
+<span class="sourceLineNo">4597</span>        fakeStoreFiles.add(<a name="line.4597"></a>
+<span class="sourceLineNo">4598</span>          new HStoreFile(walFS, file, this.conf, null, null, true));<a name="line.4598"></a>
+<span class="sourceLineNo">4599</span>      }<a name="line.4599"></a>
+<span class="sourceLineNo">4600</span>      getRegionWALFileSystem().removeStoreFiles(fakeFamilyName, fakeStoreFiles);<a name="line.4600"></a>
+<span class="sourceLineNo">4601</span>    } else {<a name="line.4601"></a>
+<span class="sourceLineNo">4602</span>      if (filesUnderRootDir != null) {<a name="line.4602"></a>
+<span class="sourceLineNo">4603</span>        for (Path file : filesUnderRootDir) {<a name="line.4603"></a>
+<span class="sourceLineNo">4604</span>          if (!rootFS.delete(file, false)) {<a name="line.4604"></a>
+<span class="sourceLineNo">4605</span>            LOG.error("Failed delete of {} from under the root directory.", file);<a name="line.4605"></a>
+<span class="sourceLineNo">4606</span>          } else {<a name="line.4606"></a>
+<span class="sourceLineNo">4607</span>            LOG.debug("Deleted recovered.edits under root directory. file=" + file);<a name="line.4607"></a>
+<span class="sourceLineNo">4608</span>          }<a name="line.4608"></a>
+<span class="sourceLineNo">4609</span>        }<a name="line.4609"></a>
+<span class="sourceLineNo">4610</span>      }<a name="line.4610"></a>
+<span class="sourceLineNo">4611</span>      for (Path file: files) {<a name="line.4611"></a>
+<span class="sourceLineNo">4612</span>        if (!walFS.delete(file, false)) {<a name="line.4612"></a>
+<span class="sourceLineNo">4613</span>          LOG.error("Failed delete of " + file);<a name="line.4613"></a>
+<span class="sourceLineNo">4614</span>        } else {<a name="line.4614"></a>
+<span class="sourceLineNo">4615</span>          LOG.debug("Deleted recovered.edits file=" + file);<a name="line.4615"></a>
+<span class="sourceLineNo">4616</span>        }<a name="line.4616"></a>
+<span class="sourceLineNo">4617</span>      }<a name="line.4617"></a>
+<span class="sourceLineNo">4618</span>    }<a name="line.4618"></a>
+<span class="sourceLineNo">4619</span>    return seqid;<a name="line.4619"></a>
+<span class="sourceLineNo">4620</span>  }<a name="line.4620"></a>
+<span class="sourceLineNo">4621</span><a name="line.4621"></a>
+<span class="sourceLineNo">4622</span>  private long replayRecoveredEditsForPaths(long minSeqIdForTheRegion, FileSystem fs,<a name="line.4622"></a>
+<span class="sourceLineNo">4623</span>      final NavigableSet&lt;Path&gt; files, final CancelableProgressable reporter, final Path regionDir)<a name="line.4623"></a>
+<span class="sourceLineNo">4624</span>      throws IOException {<a name="line.4624"></a>
+<span class="sourceLineNo">4625</span>    long seqid = minSeqIdForTheRegion;<a name="line.4625"></a>
+<span class="sourceLineNo">4626</span>    if (LOG.isDebugEnabled()) {<a name="line.4626"></a>
+<span class="sourceLineNo">4627</span>      LOG.debug("Found " + (files == null ? 0 : files.size())<a name="line.4627"></a>
+<span class="sourceLineNo">4628</span>          + " recovered edits file(s) under " + regionDir);<a name="line.4628"></a>
+<span class="sourceLineNo">4629</span>    }<a name="line.4629"></a>
+<span class="sourceLineNo">4630</span><a name="line.4630"></a>
+<span class="sourceLineNo">4631</span>    if (files == null || files.isEmpty()) {<a name="line.4631"></a>
+<span class="sourceLineNo">4632</span>      return minSeqIdForTheRegion;<a name="line.4632"></a>
+<span class="sourceLineNo">4633</span>    }<a name="line.4633"></a>
+<span class="sourceLineNo">4634</span><a name="line.4634"></a>
+<span class="sourceLineNo">4635</span>    for (Path edits: files) {<a name="line.4635"></a>
+<span class="sourceLineNo">4636</span>      if (edits == null || !fs.exists(edits)) {<a name="line.4636"></a>
+<span class="sourceLineNo">4637</span>        LOG.warn("Null or non-existent edits file: " + edits);<a name="line.4637"></a>
+<span class="sourceLineNo">4638</span>        continue;<a name="line.4638"></a>
+<span class="sourceLineNo">4639</span>      }<a name="line.4639"></a>
+<span class="sourceLineNo">4640</span>      if (isZeroLengthThenDelete(fs, edits)) continue;<a name="line.4640"></a>
+<span class="sourceLineNo">4641</span><a name="line.4641"></a>
+<span class="sourceLineNo">4642</span>      long maxSeqId;<a name="line.4642"></a>
+<span class="sourceLineNo">4643</span>      String fileName = edits.getName();<a name="line.4643"></a>
+<span class="sourceLineNo">4644</span>      maxSeqId = Math.abs(Long.parseLong(fileName));<a name="line.4644"></a>
+<span class="sourceLineNo">4645</span>      if (maxSeqId &lt;= minSeqIdForTheRegion) {<a name="line.4645"></a>
+<span class="sourceLineNo">4646</span>        if (LOG.isDebugEnabled()) {<a name="line.4646"></a>
+<span class="sourceLineNo">4647</span>          String msg = "Maximum sequenceid for this wal is " + maxSeqId<a name="line.4647"></a>
+<span class="sourceLineNo">4648</span>              + " and minimum sequenceid for the region is " + minSeqIdForTheRegion<a name="line.4648"></a>
+<span class="sourceLineNo">4649</span>              + ", skipped the whole file, path=" + edits;<a name="line.4649"></a>
+<span class="sourceLineNo">4650</span>          LOG.debug(msg);<a name="line.4650"></a>
+<span class="sourceLineNo">4651</span>        }<a name="line.4651"></a>
+<span class="sourceLineNo">4652</span>        continue;<a name="line.4652"></a>
+<span class="sourceLineNo">4653</span>      }<a name="line.4653"></a>
+<span class="sourceLineNo">4654</span><a name="line.4654"></a>
+<span class="sourceLineNo">4655</span>      try {<a name="line.4655"></a>
+<span class="sourceLineNo">4656</span>        // replay the edits. Replay can return -1 if everything is skipped, only update<a name="line.4656"></a>
+<span class="sourceLineNo">4657</span>        // if seqId is greater<a name="line.4657"></a>
+<span class="sourceLineNo">4658</span>        seqid = Math.max(seqid, replayRecoveredEdits(edits, maxSeqIdInStores, reporter, fs));<a name="line.4658"></a>
+<span class="sourceLineNo">4659</span>      } catch (IOException e) {<a name="line.4659"></a>
+<span class="sourceLineNo">4660</span>        boolean skipErrors = conf.getBoolean(<a name="line.4660"></a>
+<span class="sourceLineNo">4661</span>            HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS,<a name="line.4661"></a>
+<span class="sourceLineNo">4662</span>            conf.getBoolean(<a name="line.4662"></a>
+<span class="sourceLineNo">4663</span>                "hbase.skip.errors",<a name="line.4663"></a>
+<span class="sourceLineNo">4664</span>                HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS));<a name="line.4664"></a>
+<span class="sourceLineNo">4665</span>        if (conf.get("hbase.skip.errors") != null) {<a name="line.4665"></a>
+<span class="sourceLineNo">4666</span>          LOG.warn(<a name="line.4666"></a>
+<span class="sourceLineNo">4667</span>              "The property 'hbase.skip.errors' has been deprecated. Please use " +<a name="line.4667"></a>
+<span class="sourceLineNo">4668</span>                  HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS + " instead.");<a name="line.4668"></a>
+<span class="sourceLineNo">4669</span>        }<a name="line.4669"></a>
+<span class="sourceLineNo">4670</span>        if (skipErrors) {<a name="line.4670"></a>
+<span class="sourceLineNo">4671</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4671"></a>
+<span class="sourceLineNo">4672</span>          LOG.error(HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS<a name="line.4672"></a>
+<span class="sourceLineNo">4673</span>              + "=true so continuing. Renamed " + edits +<a name="line.4673"></a>
+<span class="sourceLineNo">4674</span>              " as " + p, e);<a name="line.4674"></a>
+<span class="sourceLineNo">4675</span>        } else {<a name="line.4675"></a>
+<span class="sourceLineNo">4676</span>          throw e;<a name="line.4676"></a>
+<span class="sourceLineNo">4677</span>        }<a name="line.4677"></a>
+<span class="sourceLineNo">4678</span>      }<a name="line.4678"></a>
+<span class="sourceLineNo">4679</span>    }<a name="line.4679"></a>
+<span class="sourceLineNo">4680</span>    return seqid;<a name="line.4680"></a>
+<span class="sourceLineNo">4681</span>  }<a name="line.4681"></a>
 <span class="sourceLineNo">4682</span><a name="line.4682"></a>
-<span class="sourceLineNo">4683</span>    status.setStatus("Opening recovered edits");<a name="line.4683"></a>
-<span class="sourceLineNo">4684</span>    WAL.Reader reader = null;<a name="line.4684"></a>
-<span class="sourceLineNo">4685</span>    try {<a name="line.4685"></a>
-<span class="sourceLineNo">4686</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4686"></a>
-<span class="sourceLineNo">4687</span>      long currentEditSeqId = -1;<a name="line.4687"></a>
-<span class="sourceLineNo">4688</span>      long currentReplaySeqId = -1;<a name="line.4688"></a>
-<span class="sourceLineNo">4689</span>      long firstSeqIdInLog = -1;<a name="line.4689"></a>
-<span class="sourceLineNo">4690</span>      long skippedEdits = 0;<a name="line.4690"></a>
-<span class="sourceLineNo">4691</span>      long editsCount = 0;<a name="line.4691"></a>
-<span class="sourceLineNo">4692</span>      long intervalEdits = 0;<a name="line.4692"></a>
-<span class="sourceLineNo">4693</span>      WAL.Entry entry;<a name="line.4693"></a>
-<span class="sourceLineNo">4694</span>      HStore store = null;<a name="line.4694"></a>
-<span class="sourceLineNo">4695</span>      boolean reported_once = false;<a name="line.4695"></a>
-<span class="sourceLineNo">4696</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4696"></a>
-<span class="sourceLineNo">4697</span><a name="line.4697"></a>
-<span class="sourceLineNo">4698</span>      try {<a name="line.4698"></a>
-<span class="sourceLineNo">4699</span>        // How many edits seen before we check elapsed time<a name="line.4699"></a>
-<span class="sourceLineNo">4700</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4700"></a>
-<span class="sourceLineNo">4701</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4701"></a>
-<span class="sourceLineNo">4702</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4702"></a>
-<span class="sourceLineNo">4703</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4703"></a>
-<span class="sourceLineNo">4704</span><a name="line.4704"></a>
-<span class="sourceLineNo">4705</span>        if (coprocessorHost != null) {<a name="line.4705"></a>
-<span class="sourceLineNo">4706</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4706"></a>
-<span class="sourceLineNo">4707</span>        }<a name="line.4707"></a>
-<span class="sourceLineNo">4708</span><a name="line.4708"></a>
-<span class="sourceLineNo">4709</span>        while ((entry = reader.next()) != null) {<a name="line.4709"></a>
-<span class="sourceLineNo">4710</span>          WALKey key = entry.getKey();<a name="line.4710"></a>
-<span class="sourceLineNo">4711</span>          WALEdit val = entry.getEdit();<a name="line.4711"></a>
-<span class="sourceLineNo">4712</span><a name="line.4712"></a>
-<span class="sourceLineNo">4713</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4713"></a>
-<span class="sourceLineNo">4714</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4714"></a>
-<span class="sourceLineNo">4715</span>          }<a name="line.4715"></a>
-<span class="sourceLineNo">4716</span><a name="line.4716"></a>
-<span class="sourceLineNo">4717</span>          if (reporter != null) {<a name="line.4717"></a>
-<span class="sourceLineNo">4718</span>            intervalEdits += val.size();<a name="line.4718"></a>
-<span class="sourceLineNo">4719</span>            if (intervalEdits &gt;= interval) {<a name="line.4719"></a>
-<span class="sourceLineNo">4720</span>              // Number of edits interval reached<a name="line.4720"></a>
-<span class="sourceLineNo">4721</span>              intervalEdits = 0;<a name="line.4721"></a>
-<span class="sourceLineNo">4722</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4722"></a>
-<span class="sourceLineNo">4723</span>              if (lastReport + period &lt;= cur) {<a name="line.4723"></a>
-<span class="sourceLineNo">4724</span>                status.setStatus("Replaying edits..." +<a name="line.4724"></a>
-<span class="sourceLineNo">4725</span>                    " skipped=" + skippedEdits +<a name="line.4725"></a>
-<span class="sourceLineNo">4726</span>                    " edits=" + editsCount);<a name="line.4726"></a>
-<span class="sourceLineNo">4727</span>                // Timeout reached<a name="line.4727"></a>
-<span class="sourceLineNo">4728</span>                if(!reporter.progress()) {<a name="line.4728"></a>
-<span class="sourceLineNo">4729</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4729"></a>
-<span class="sourceLineNo">4730</span>                  LOG.warn(msg);<a name="line.4730"></a>
-<span class="sourceLineNo">4731</span>                  status.abort(msg);<a name="line.4731"></a>
-<span class="sourceLineNo">4732</span>                  throw new IOException(msg);<a name="line.4732"></a>
-<span class="sourceLineNo">4733</span>                }<a name="line.4733"></a>
-<span class="sourceLineNo">4734</span>                reported_once = true;<a name="line.4734"></a>
-<span class="sourceLineNo">4735</span>                lastReport = cur;<a name="line.4735"></a>
-<span class="sourceLineNo">4736</span>              }<a name="line.4736"></a>
-<span class="sourceLineNo">4737</span>            }<a name="line.4737"></a>
-<span class="sourceLineNo">4738</span>          }<a name="line.4738"></a>
-<span class="sourceLineNo">4739</span><a name="line.4739"></a>
-<span class="sourceLineNo">4740</span>          if (firstSeqIdInLog == -1) {<a name="line.4740"></a>
-<span class="sourceLineNo">4741</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4741"></a>
-<span class="sourceLineNo">4742</span>          }<a name="line.4742"></a>
-<span class="sourceLineNo">4743</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4743"></a>
-<span class="sourceLineNo">4744</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4744"></a>
-<span class="sourceLineNo">4745</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4745"></a>
-<span class="sourceLineNo">4746</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4746"></a>
-<span class="sourceLineNo">4747</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4747"></a>
-<span class="sourceLineNo">4748</span>                + "; edit=" + val);<a name="line.4748"></a>
-<span class="sourceLineNo">4749</span>          } else {<a name="line.4749"></a>
-<span class="sourceLineNo">4750</span>            currentEditSeqId = key.getSequenceId();<a name="line.4750"></a>
-<span class="sourceLineNo">4751</span>          }<a name="line.4751"></a>
-<span class="sourceLineNo">4752</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4752"></a>
-<span class="sourceLineNo">4753</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4753"></a>
-<span class="sourceLineNo">4754</span><a name="line.4754"></a>
-<span class="sourceLineNo">4755</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4755"></a>
-<span class="sourceLineNo">4756</span>          // instead of a KeyValue.<a name="line.4756"></a>
-<span class="sourceLineNo">4757</span>          if (coprocessorHost != null) {<a name="line.4757"></a>
-<span class="sourceLineNo">4758</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4758"></a>
-<span class="sourceLineNo">4759</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4759"></a>
-<span class="sourceLineNo">4760</span>              // if bypass this wal entry, ignore it ...<a name="line.4760"></a>
-<span class="sourceLineNo">4761</span>              continue;<a name="line.4761"></a>
-<span class="sourceLineNo">4762</span>            }<a name="line.4762"></a>
-<span class="sourceLineNo">4763</span>          }<a name="line.4763"></a>
-<span class="sourceLineNo">4764</span>          boolean checkRowWithinBoundary = false;<a name="line.4764"></a>
-<span class="sourceLineNo">4765</span>          // Check this edit is for this region.<a name="line.4765"></a>
-<span class="sourceLineNo">4766</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4766"></a>
-<span class="sourceLineNo">4767</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4767"></a>
-<span class="sourceLineNo">4768</span>            checkRowWithinBoundary = true;<a name="line.4768"></a>
-<span class="sourceLineNo">4769</span>          }<a name="line.4769"></a>
+<span class="sourceLineNo">4683</span>  /*<a name="line.4683"></a>
+<span class="sourceLineNo">4684</span>   * @param edits File of recovered edits.<a name="line.4684"></a>
+<span class="sourceLineNo">4685</span>   * @param maxSeqIdInStores Maximum sequenceid found in each store.  Edits in wal<a name="line.4685"></a>
+<span class="sourceLineNo">4686</span>   * must be larger than this to be replayed for each store.<a name="line.4686"></a>
+<span class="sourceLineNo">4687</span>   * @param reporter<a name="line.4687"></a>
+<span class="sourceLineNo">4688</span>   * @return the sequence id of the last edit added to this region out of the<a name="line.4688"></a>
+<span class="sourceLineNo">4689</span>   * recovered edits log or &lt;code&gt;minSeqId&lt;/code&gt; if nothing added from editlogs.<a name="line.4689"></a>
+<span class="sourceLineNo">4690</span>   * @throws IOException<a name="line.4690"></a>
+<span class="sourceLineNo">4691</span>   */<a name="line.4691"></a>
+<span class="sourceLineNo">4692</span>  private long replayRecoveredEdits(final Path edits,<a name="line.4692"></a>
+<span class="sourceLineNo">4693</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores, final CancelableProgressable reporter, FileSystem fs)<a name="line.4693"></a>
+<span class="sourceLineNo">4694</span>    throws IOException {<a name="line.4694"></a>
+<span class="sourceLineNo">4695</span>    String msg = "Replaying edits from " + edits;<a name="line.4695"></a>
+<span class="sourceLineNo">4696</span>    LOG.info(msg);<a name="line.4696"></a>
+<span class="sourceLineNo">4697</span>    MonitoredTask status = TaskMonitor.get().createStatus(msg);<a name="line.4697"></a>
+<span class="sourceLineNo">4698</span><a name="line.4698"></a>
+<span class="sourceLineNo">4699</span>    status.setStatus("Opening recovered edits");<a name="line.4699"></a>
+<span class="sourceLineNo">4700</span>    WAL.Reader reader = null;<a name="line.4700"></a>
+<span class="sourceLineNo">4701</span>    try {<a name="line.4701"></a>
+<span class="sourceLineNo">4702</span>      reader = WALFactory.createReader(fs, edits, conf);<a name="line.4702"></a>
+<span class="sourceLineNo">4703</span>      long currentEditSeqId = -1;<a name="line.4703"></a>
+<span class="sourceLineNo">4704</span>      long currentReplaySeqId = -1;<a name="line.4704"></a>
+<span class="sourceLineNo">4705</span>      long firstSeqIdInLog = -1;<a name="line.4705"></a>
+<span class="sourceLineNo">4706</span>      long skippedEdits = 0;<a name="line.4706"></a>
+<span class="sourceLineNo">4707</span>      long editsCount = 0;<a name="line.4707"></a>
+<span class="sourceLineNo">4708</span>      long intervalEdits = 0;<a name="line.4708"></a>
+<span class="sourceLineNo">4709</span>      WAL.Entry entry;<a name="line.4709"></a>
+<span class="sourceLineNo">4710</span>      HStore store = null;<a name="line.4710"></a>
+<span class="sourceLineNo">4711</span>      boolean reported_once = false;<a name="line.4711"></a>
+<span class="sourceLineNo">4712</span>      ServerNonceManager ng = this.rsServices == null ? null : this.rsServices.getNonceManager();<a name="line.4712"></a>
+<span class="sourceLineNo">4713</span><a name="line.4713"></a>
+<span class="sourceLineNo">4714</span>      try {<a name="line.4714"></a>
+<span class="sourceLineNo">4715</span>        // How many edits seen before we check elapsed time<a name="line.4715"></a>
+<span class="sourceLineNo">4716</span>        int interval = this.conf.getInt("hbase.hstore.report.interval.edits", 2000);<a name="line.4716"></a>
+<span class="sourceLineNo">4717</span>        // How often to send a progress report (default 1/2 master timeout)<a name="line.4717"></a>
+<span class="sourceLineNo">4718</span>        int period = this.conf.getInt("hbase.hstore.report.period", 300000);<a name="line.4718"></a>
+<span class="sourceLineNo">4719</span>        long lastReport = EnvironmentEdgeManager.currentTime();<a name="line.4719"></a>
+<span class="sourceLineNo">4720</span><a name="line.4720"></a>
+<span class="sourceLineNo">4721</span>        if (coprocessorHost != null) {<a name="line.4721"></a>
+<span class="sourceLineNo">4722</span>          coprocessorHost.preReplayWALs(this.getRegionInfo(), edits);<a name="line.4722"></a>
+<span class="sourceLineNo">4723</span>        }<a name="line.4723"></a>
+<span class="sourceLineNo">4724</span><a name="line.4724"></a>
+<span class="sourceLineNo">4725</span>        while ((entry = reader.next()) != null) {<a name="line.4725"></a>
+<span class="sourceLineNo">4726</span>          WALKey key = entry.getKey();<a name="line.4726"></a>
+<span class="sourceLineNo">4727</span>          WALEdit val = entry.getEdit();<a name="line.4727"></a>
+<span class="sourceLineNo">4728</span><a name="line.4728"></a>
+<span class="sourceLineNo">4729</span>          if (ng != null) { // some test, or nonces disabled<a name="line.4729"></a>
+<span class="sourceLineNo">4730</span>            ng.reportOperationFromWal(key.getNonceGroup(), key.getNonce(), key.getWriteTime());<a name="line.4730"></a>
+<span class="sourceLineNo">4731</span>          }<a name="line.4731"></a>
+<span class="sourceLineNo">4732</span><a name="line.4732"></a>
+<span class="sourceLineNo">4733</span>          if (reporter != null) {<a name="line.4733"></a>
+<span class="sourceLineNo">4734</span>            intervalEdits += val.size();<a name="line.4734"></a>
+<span class="sourceLineNo">4735</span>            if (intervalEdits &gt;= interval) {<a name="line.4735"></a>
+<span class="sourceLineNo">4736</span>              // Number of edits interval reached<a name="line.4736"></a>
+<span class="sourceLineNo">4737</span>              intervalEdits = 0;<a name="line.4737"></a>
+<span class="sourceLineNo">4738</span>              long cur = EnvironmentEdgeManager.currentTime();<a name="line.4738"></a>
+<span class="sourceLineNo">4739</span>              if (lastReport + period &lt;= cur) {<a name="line.4739"></a>
+<span class="sourceLineNo">4740</span>                status.setStatus("Replaying edits..." +<a name="line.4740"></a>
+<span class="sourceLineNo">4741</span>                    " skipped=" + skippedEdits +<a name="line.4741"></a>
+<span class="sourceLineNo">4742</span>                    " edits=" + editsCount);<a name="line.4742"></a>
+<span class="sourceLineNo">4743</span>                // Timeout reached<a name="line.4743"></a>
+<span class="sourceLineNo">4744</span>                if(!reporter.progress()) {<a name="line.4744"></a>
+<span class="sourceLineNo">4745</span>                  msg = "Progressable reporter failed, stopping replay";<a name="line.4745"></a>
+<span class="sourceLineNo">4746</span>                  LOG.warn(msg);<a name="line.4746"></a>
+<span class="sourceLineNo">4747</span>                  status.abort(msg);<a name="line.4747"></a>
+<span class="sourceLineNo">4748</span>                  throw new IOException(msg);<a name="line.4748"></a>
+<span class="sourceLineNo">4749</span>                }<a name="line.4749"></a>
+<span class="sourceLineNo">4750</span>                reported_once = true;<a name="line.4750"></a>
+<span class="sourceLineNo">4751</span>                lastReport = cur;<a name="line.4751"></a>
+<span class="sourceLineNo">4752</span>              }<a name="line.4752"></a>
+<span class="sourceLineNo">4753</span>            }<a name="line.4753"></a>
+<span class="sourceLineNo">4754</span>          }<a name="line.4754"></a>
+<span class="sourceLineNo">4755</span><a name="line.4755"></a>
+<span class="sourceLineNo">4756</span>          if (firstSeqIdInLog == -1) {<a name="line.4756"></a>
+<span class="sourceLineNo">4757</span>            firstSeqIdInLog = key.getSequenceId();<a name="line.4757"></a>
+<span class="sourceLineNo">4758</span>          }<a name="line.4758"></a>
+<span class="sourceLineNo">4759</span>          if (currentEditSeqId &gt; key.getSequenceId()) {<a name="line.4759"></a>
+<span class="sourceLineNo">4760</span>            // when this condition is true, it means we have a serious defect because we need to<a name="line.4760"></a>
+<span class="sourceLineNo">4761</span>            // maintain increasing SeqId for WAL edits per region<a name="line.4761"></a>
+<span class="sourceLineNo">4762</span>            LOG.error(getRegionInfo().getEncodedName() + " : "<a name="line.4762"></a>
+<span class="sourceLineNo">4763</span>                 + "Found decreasing SeqId. PreId=" + currentEditSeqId + " key=" + key<a name="line.4763"></a>
+<span class="sourceLineNo">4764</span>                + "; edit=" + val);<a name="line.4764"></a>
+<span class="sourceLineNo">4765</span>          } else {<a name="line.4765"></a>
+<span class="sourceLineNo">4766</span>            currentEditSeqId = key.getSequenceId();<a name="line.4766"></a>
+<span class="sourceLineNo">4767</span>          }<a name="line.4767"></a>
+<span class="sourceLineNo">4768</span>          currentReplaySeqId = (key.getOrigLogSeqNum() &gt; 0) ?<a name="line.4768"></a>
+<span class="sourceLineNo">4769</span>            key.getOrigLogSeqNum() : currentEditSeqId;<a name="line.4769"></a>
 <span class="sourceLineNo">4770</span><a name="line.4770"></a>
-<span class="sourceLineNo">4771</span>          boolean flush = false;<a name="line.4771"></a>
-<span class="sourceLineNo">4772</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4772"></a>
-<span class="sourceLineNo">4773</span>          for (Cell cell: val.getCells()) {<a name="line.4773"></a>
-<span class="sourceLineNo">4774</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4774"></a>
-<span class="sourceLineNo">4775</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4775"></a>
-<span class="sourceLineNo">4776</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4776"></a>
-<span class="sourceLineNo">4777</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4777"></a>
-<span class="sourceLineNo">4778</span>              if (!checkRowWithinBoundary) {<a name="line.4778"></a>
-<span class="sourceLineNo">4779</span>                //this is a special edit, we should handle it<a name="line.4779"></a>
-<span class="sourceLineNo">4780</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4780"></a>
-<span class="sourceLineNo">4781</span>                if (compaction != null) {<a name="line.4781"></a>
-<span class="sourceLineNo">4782</span>                  //replay the compaction<a name="line.4782"></a>
-<span class="sourceLineNo">4783</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4783"></a>
-<span class="sourceLineNo">4784</span>                }<a name="line.4784"></a>
-<span class="sourceLineNo">4785</span>              }<a name="line.4785"></a>
-<span class="sourceLineNo">4786</span>              skippedEdits++;<a name="line.4786"></a>
-<span class="sourceLineNo">4787</span>              continue;<a name="line.4787"></a>
-<span class="sourceLineNo">4788</span>            }<a name="line.4788"></a>
-<span class="sourceLineNo">4789</span>            // Figure which store the edit is meant for.<a name="line.4789"></a>
-<span class="sourceLineNo">4790</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4790"></a>
-<span class="sourceLineNo">4791</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4791"></a>
-<span class="sourceLineNo">4792</span>              store = getStore(cell);<a name="line.4792"></a>
-<span class="sourceLineNo">4793</span>            }<a name="line.4793"></a>
-<span class="sourceLineNo">4794</span>            if (store == null) {<a name="line.4794"></a>
-<span class="sourceLineNo">4795</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4795"></a>
-<span class="sourceLineNo">4796</span>              // crash and redeploy?<a name="line.4796"></a>
-<span class="sourceLineNo">4797</span>              LOG.warn("No family for " + cell);<a name="line.4797"></a>
-<span class="sourceLineNo">4798</span>              skippedEdits++;<a name="line.4798"></a>
-<span class="sourceLineNo">4799</span>              continue;<a name="line.4799"></a>
-<span class="sourceLineNo">4800</span>            }<a name="line.4800"></a>
-<span class="sourceLineNo">4801</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4801"></a>
-<span class="sourceLineNo">4802</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4802"></a>
-<span class="sourceLineNo">4803</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4803"></a>
-<span class="sourceLineNo">4804</span>              skippedEdits++;<a name="line.4804"></a>
-<span class="sourceLineNo">4805</span>              continue;<a name="line.4805"></a>
-<span class="sourceLineNo">4806</span>            }<a name="line.4806"></a>
-<span class="sourceLineNo">4807</span>            // Now, figure if we should skip this edit.<a name="line.4807"></a>
-<span class="sourceLineNo">4808</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4808"></a>
-<span class="sourceLineNo">4809</span>                .getName())) {<a name="line.4809"></a>
-<span class="sourceLineNo">4810</span>              skippedEdits++;<a name="line.4810"></a>
-<span class="sourceLineNo">4811</span>              continue;<a name="line.4811"></a>
-<span class="sourceLineNo">4812</span>            }<a name="line.4812"></a>
-<span class="sourceLineNo">4813</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4813"></a>
-<span class="sourceLineNo">4814</span><a name="line.4814"></a>
-<span class="sourceLineNo">4815</span>            restoreEdit(store, cell, memStoreSizing);<a name="line.4815"></a>
-<span class="sourceLineNo">4816</span>            editsCount++;<a name="line.4816"></a>
-<span class="sourceLineNo">4817</span>          }<a name="line.4817"></a>
-<span class="sourceLineNo">4818</span>          MemStoreSize mss = memStoreSizing.getMemStoreSize();<a name="line.4818"></a>
-<span class="sourceLineNo">4819</span>          incMemStoreSize(mss);<a name="line.4819"></a>
-<span class="sourceLineNo">4820</span>          flush = isFlushSize(this.memStoreSizing.getMemStoreSize());<a name="line.4820"></a>
-<span class="sourceLineNo">4821</span>          if (flush) {<a name="line.4821"></a>
-<span class="sourceLineNo">4822</span>            internalFlushcache(null, currentEditSeqId, stores.values(), status, false,<a name="line.4822"></a>
-<span class="sourceLineNo">4823</span>              FlushLifeCycleTracker.DUMMY);<a name="line.4823"></a>
-<span class="sourceLineNo">4824</span>          }<a name="line.4824"></a>
-<span class="sourceLineNo">4825</span><a name="line.4825"></a>
-<span class="sourceLineNo">4826</span>          if (coprocessorHost != null) {<a name="line.4826"></a>
-<span class="sourceLineNo">4827</span>            coprocessorHost.postWALRestore(this.getRegionInfo(), key, val);<a name="line.4827"></a>
-<span class="sourceLineNo">4828</span>          }<a name="line.4828"></a>
-<span class="sourceLineNo">4829</span>        }<a name="line.4829"></a>
+<span class="sourceLineNo">4771</span>          // Start coprocessor replay here. The coprocessor is for each WALEdit<a name="line.4771"></a>
+<span class="sourceLineNo">4772</span>          // instead of a KeyValue.<a name="line.4772"></a>
+<span class="sourceLineNo">4773</span>          if (coprocessorHost != null) {<a name="line.4773"></a>
+<span class="sourceLineNo">4774</span>            status.setStatus("Running pre-WAL-restore hook in coprocessors");<a name="line.4774"></a>
+<span class="sourceLineNo">4775</span>            if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) {<a name="line.4775"></a>
+<span class="sourceLineNo">4776</span>              // if bypass this wal entry, ignore it ...<a name="line.4776"></a>
+<span class="sourceLineNo">4777</span>              continue;<a name="line.4777"></a>
+<span class="sourceLineNo">4778</span>            }<a name="line.4778"></a>
+<span class="sourceLineNo">4779</span>          }<a name="line.4779"></a>
+<span class="sourceLineNo">4780</span>          boolean checkRowWithinBoundary = false;<a name="line.4780"></a>
+<span class="sourceLineNo">4781</span>          // Check this edit is for this region.<a name="line.4781"></a>
+<span class="sourceLineNo">4782</span>          if (!Bytes.equals(key.getEncodedRegionName(),<a name="line.4782"></a>
+<span class="sourceLineNo">4783</span>              this.getRegionInfo().getEncodedNameAsBytes())) {<a name="line.4783"></a>
+<span class="sourceLineNo">4784</span>            checkRowWithinBoundary = true;<a name="line.4784"></a>
+<span class="sourceLineNo">4785</span>          }<a name="line.4785"></a>
+<span class="sourceLineNo">4786</span><a name="line.4786"></a>
+<span class="sourceLineNo">4787</span>          boolean flush = false;<a name="line.4787"></a>
+<span class="sourceLineNo">4788</span>          MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();<a name="line.4788"></a>
+<span class="sourceLineNo">4789</span>          for (Cell cell: val.getCells()) {<a name="line.4789"></a>
+<span class="sourceLineNo">4790</span>            // Check this edit is for me. Also, guard against writing the special<a name="line.4790"></a>
+<span class="sourceLineNo">4791</span>            // METACOLUMN info such as HBASE::CACHEFLUSH entries<a name="line.4791"></a>
+<span class="sourceLineNo">4792</span>            if (CellUtil.matchingFamily(cell, WALEdit.METAFAMILY)) {<a name="line.4792"></a>
+<span class="sourceLineNo">4793</span>              // if region names don't match, skipp replaying compaction marker<a name="line.4793"></a>
+<span class="sourceLineNo">4794</span>              if (!checkRowWithinBoundary) {<a name="line.4794"></a>
+<span class="sourceLineNo">4795</span>                //this is a special edit, we should handle it<a name="line.4795"></a>
+<span class="sourceLineNo">4796</span>                CompactionDescriptor compaction = WALEdit.getCompaction(cell);<a name="line.4796"></a>
+<span class="sourceLineNo">4797</span>                if (compaction != null) {<a name="line.4797"></a>
+<span class="sourceLineNo">4798</span>                  //replay the compaction<a name="line.4798"></a>
+<span class="sourceLineNo">4799</span>                  replayWALCompactionMarker(compaction, false, true, Long.MAX_VALUE);<a name="line.4799"></a>
+<span class="sourceLineNo">4800</span>                }<a name="line.4800"></a>
+<span class="sourceLineNo">4801</span>              }<a name="line.4801"></a>
+<span class="sourceLineNo">4802</span>              skippedEdits++;<a name="line.4802"></a>
+<span class="sourceLineNo">4803</span>              continue;<a name="line.4803"></a>
+<span class="sourceLineNo">4804</span>            }<a name="line.4804"></a>
+<span class="sourceLineNo">4805</span>            // Figure which store the edit is meant for.<a name="line.4805"></a>
+<span class="sourceLineNo">4806</span>            if (store == null || !CellUtil.matchingFamily(cell,<a name="line.4806"></a>
+<span class="sourceLineNo">4807</span>                store.getColumnFamilyDescriptor().getName())) {<a name="line.4807"></a>
+<span class="sourceLineNo">4808</span>              store = getStore(cell);<a name="line.4808"></a>
+<span class="sourceLineNo">4809</span>            }<a name="line.4809"></a>
+<span class="sourceLineNo">4810</span>            if (store == null) {<a name="line.4810"></a>
+<span class="sourceLineNo">4811</span>              // This should never happen.  Perhaps schema was changed between<a name="line.4811"></a>
+<span class="sourceLineNo">4812</span>              // crash and redeploy?<a name="line.4812"></a>
+<span class="sourceLineNo">4813</span>              LOG.warn("No family for " + cell);<a name="line.4813"></a>
+<span class="sourceLineNo">4814</span>              skippedEdits++;<a name="line.4814"></a>
+<span class="sourceLineNo">4815</span>              continue;<a name="line.4815"></a>
+<span class="sourceLineNo">4816</span>            }<a name="line.4816"></a>
+<span class="sourceLineNo">4817</span>            if (checkRowWithinBoundary &amp;&amp; !rowIsInRange(this.getRegionInfo(),<a name="line.4817"></a>
+<span class="sourceLineNo">4818</span>              cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) {<a name="line.4818"></a>
+<span class="sourceLineNo">4819</span>              LOG.warn("Row of " + cell + " is not within region boundary");<a name="line.4819"></a>
+<span class="sourceLineNo">4820</span>              skippedEdits++;<a name="line.4820"></a>
+<span class="sourceLineNo">4821</span>              continue;<a name="line.4821"></a>
+<span class="sourceLineNo">4822</span>            }<a name="line.4822"></a>
+<span class="sourceLineNo">4823</span>            // Now, figure if we should skip this edit.<a name="line.4823"></a>
+<span class="sourceLineNo">4824</span>            if (key.getSequenceId() &lt;= maxSeqIdInStores.get(store.getColumnFamilyDescriptor()<a name="line.4824"></a>
+<span class="sourceLineNo">4825</span>                .getName())) {<a name="line.4825"></a>
+<span class="sourceLineNo">4826</span>              skippedEdits++;<a name="line.4826"></a>
+<span class="sourceLineNo">4827</span>              continue;<a name="line.4827"></a>
+<span class="sourceLineNo">4828</span>            }<a name="line.4828"></a>
+<span class="sourceLineNo">4829</span>            PrivateCellUtil.setSequenceId(cell, currentReplaySeqId);<a name="line.4829"></a>
 <span class="sourceLineNo">4830</span><a name="line.4830"></a>
-<span class="sourceLineNo">4831</span>        if (coprocessorHost != null) {<a name="line.4831"></a>
-<span class="sourceLineNo">4832</span>          coprocessorHost.postReplayWALs(this.getRegionInfo(), edits);<a name="line.4832"></a>
-<span class="sourceLineNo">4833</span>        }<a name="line.4833"></a>
-<span class="sourceLineNo">4834</span>      } catch (EOFException eof) {<a name="line.4834"></a>
-<span class="sourceLineNo">4835</span>        Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4835"></a>
-<span class="sourceLineNo">4836</span>        msg = "EnLongAddered EOF. Most likely due to Master failure during " +<a name="line.4836"></a>
-<span class="sourceLineNo">4837</span>            "wal splitting, so we have this data in another edit.  " +<a name="line.4837"></a>
-<span class="sourceLineNo">4838</span>            "Continuing, but renaming " + edits + " as " + p;<a name="line.4838"></a>
-<span class="sourceLineNo">4839</span>        LOG.warn(msg, eof);<a name="line.4839"></a>
-<span class="sourceLineNo">4840</span>        status.abort(msg);<a name="line.4840"></a>
-<span class="sourceLineNo">4841</span>      } catch (IOException ioe) {<a name="line.4841"></a>
-<span class="sourceLineNo">4842</span>        // If the IOE resulted from bad file format,<a name="line.4842"></a>
-<span class="sourceLineNo">4843</span>        // then this problem is idempotent and retrying won't help<a name="line.4843"></a>
-<span class="sourceLineNo">4844</span>        if (ioe.getCause() instanceof ParseException) {<a name="line.4844"></a>
-<span class="sourceLineNo">4845</span>          Path p = WALSplitter.moveAsideBadEditsFile(walFS, edits);<a name="line.4845"></a>
-<span class="sourceLineNo">4846</span>          msg = "File corruption enLongAddered!  " +<a name="line.4846"></a>
-<span class="sourceLineNo">4847</span>              "Continuing, but renaming " + edits + " as " + p;<a name="line.4847"></a>
-<span class="sourceLineNo">4848</span>          LOG.warn(msg, ioe);<a name="line.4848"></a>
-<span class="sourceLineNo">4849</span>          status.setStatus(msg);<a name="line.4849"></a>
-<span class="sourceLineNo">4850</span>        } else {<a name="line.4850"></a>
-<span class="sourceLineNo">4851</span>          status.abort(StringUtils.stringifyException(ioe));<a name="line.4851"></a>
-<span class="sourceLineNo">4852</span>          // other IO errors may be transient (bad network connection,<a name="line.4852"></a>
-<span class="sourceLineNo">4853</span>          // checksum exception on one datanode, etc).  throw &amp; retry<a name="line.4853"></a>
-<span class="sourceLineNo">4854</span>          throw ioe;<a name="line.4854"></a>
-<span class="sourceLineNo">4855</span>        }<a name="line.4855"></a>
-<span class="sourceLineNo">4856</span>      }<a name="line.4856"></a>
-<span class="sourceLineNo">4857</span>      if (reporter != null &amp;&amp; !reported_once) {<a name="line.4857"></a>
-<span class="sourceLineNo">4858</span>        reporter.progress();<a name="line.4858"></a>
-<span class="sourceLineNo">4859</span>      }<a name="line.4859"></a>
-<span class="sourceLineNo">4860</span>      msg = "Applied " + editsCount + ", skipped " + skippedEdits +<a name="line.4860"></a>
-<span class="sourceLineNo">4861</span>        ", firstSequenceIdInLog=" + firstSeqIdInLog +<a name="line.4861"></a>
-<span class="sourceLineNo">4862</span>        ", maxSequenceIdInLog=" + currentEditSeqId + ", path=" + edits;<a name="line.4862"></a>
-<span class="sourceLineNo">4863</span>      status.markComplete(msg);<a name="line.4863"></a>
-<span class="sourceLineNo">4864</span>      LOG.debug(msg);<a name="line.4864"></a>
-<span class="sourceLineNo">4865</span>      return currentEditSeqId;<a name="line.4865"></a>
-<span class="sourceLineNo">4866</span>    } finally {<a name="line.4866"></a>
-<span class="sourceLineNo">4867</span>      status.cleanup();<a name="line.4867"></a>
-<span class="sourceLineNo">4868</span>      if (reader != null) {<a name="line.4868"></a>
-<span class="sourceLineNo">4869</span>         reader.close();<a name="line.4869"></a>
-<span class="sourceLineNo">4870</span>      }<a name="line.4870"></a>
-<span class="sourceLineNo">4871</span>    }<a name="line.4871"></a>
-<span class="sourceLineNo">4872</span>  }<a name="line.4872"></a>
-<span class="sourceLineNo">4873</span><a name="line.4873"></a>
-<span class="sourceLineNo">4874</span>  /**<a name="line.4874"></a>
-<span class="sourceLineNo">4875</span>   * Call to complete a compaction. Its for the case where we find in the WAL a compaction<a name="line.4875"></a>
-<span class="sourceLineNo">4876</span>   * that was not finished.  We could find one recovering a WAL after a regionserver crash.<a name="line.4876"></a>
-<span class="sourceLineNo">4877</span>   * See HBASE-2331.<a name="line.4877"></a>
-<span class="sourceLineNo">4878</span>   */<a name="line.4878"></a>
-<span class="sourceLineNo">4879</span>  void replayWALCompactionMarker(CompactionDescriptor compaction, boolean pickCompactionFiles,<a name="line.4879"></a>
-<span class="sourceLineNo">4880</span>      boolean removeFiles, long replaySeqId)<a name="line.4880"></a>
-<span class="sourceLineNo">4881</span>      throws IOException {<a name="line.4881"></a>
-<span class="sourceLineNo">4882</span>    try {<a name="line.4882"></a>
-<span class="sourceLineNo">4883</span>      checkTargetRegion(compaction.getEncodedRegionName().toByteArray(),<a name="line.4883"></a>
-<span class="sourceLineNo">4884</span>        "Compaction marker from WAL ", compaction);<a name="line.4884"></a>
-<span class="sourceLineNo">4885</span>    } catch (WrongRegionException wre) {<a name="line.4885"></a>
-<span class="sourceLineNo">4886</span>      if (RegionReplicaUtil.isDefaultReplica(this.getRegionInfo())) {<a name="line.4886"></a>
-<span class="sourceLineNo">4887</span>        // skip the compaction marker since it is not for this region<a name="line.4887"></a>
-<span class="sourceLineNo">4888</span>        return;<a name="line.4888"></a>
-<span class="sourceLineNo">4889</span>      }<a name="line.4889"></a>
-<span class="sourceLineNo">4890</span>      throw wre;<a name="line.4890"></a>
-<span class="sourceLineNo">4891</span>    }<a name="line.4891"></a>
-<span class="sourceLineNo">4892</span><a name="line.4892"></a>
-<span class="sourceLineNo">4893</span>    synchronized (writestate) {<a name="line.4893"></a>
-<span class="sourceLineNo">4894</span>      if (replaySeqId &lt; lastReplayedOpenRegionSeqId) {<a name="line.4894"></a>
-<span class="sourceLineNo">4895</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4895"></a>
-<span class="sourceLineNo">4896</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4896"></a>
-<span class="sourceLineNo">4897</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4897"></a>
-<span class="sourceLineNo">4898</span>            + "lastReplayedOpenRegionSeqId of " + lastReplayedOpenRegionSeqId);<a name="line.4898"></a>
-<span class="sourceLineNo">4899</span>        return;<a name="line.4899"></a>
-<span class="sourceLineNo">4900</span>      }<a name="line.4900"></a>
-<span class="sourceLineNo">4901</span>      if (replaySeqId &lt; lastReplayedCompactionSeqId) {<a name="line.4901"></a>
-<span class="sourceLineNo">4902</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.4902"></a>
-<span class="sourceLineNo">4903</span>            + "Skipping replaying compaction event :" + TextFormat.shortDebugString(compaction)<a name="line.4903"></a>
-<span class="sourceLineNo">4904</span>            + " because its sequence id " + replaySeqId + " is smaller than this regions "<a name="line.4904"></a>
-<span class="sourceLineNo">4905</span>            + "lastReplayedCompactionSeqId of " + lastReplayedCompactionSeqId);<a name="line.4905"></a>
-<span class="sourceLineNo">4906</span>        return;<a name="line.4906"></a>
-<span class="sourceLineNo">4907</span>      } else {<a name="line.4907"></a>
-<span class="sourceLineNo">4908</span>        lastReplayedCompactionSeqId = replaySeqId;<a name="line.4908"></a>
-<s

<TRUNCATED>

[24/38] hbase-site git commit: Published site at 0ab7c3a18906fcf33af38da29c211ac7fcb46492.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/src-html/org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html
index e1b2372..0b4f8d6 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html
@@ -214,21 +214,26 @@
 <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>  @Override<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  protected void serializeStateData(ProcedureStateSerializer serializer) throws IOException {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    serializer.serialize(<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      RefreshPeerStateData.newBuilder().setPeerId(peerId).setType(toPeerModificationType(type))<a name="line.211"></a>
-<span class="sourceLineNo">212</span>          .setTargetServer(ProtobufUtil.toServerName(targetServer)).setStage(stage).build());<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>  @Override<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  protected void deserializeStateData(ProcedureStateSerializer serializer) throws IOException {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    RefreshPeerStateData data = serializer.deserialize(RefreshPeerStateData.class);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    peerId = data.getPeerId();<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    type = toPeerOperationType(data.getType());<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    targetServer = ProtobufUtil.toServerName(data.getTargetServer());<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    stage = data.getStage();<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">209</span>  protected boolean waitInitialized(MasterProcedureEnv env) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    return env.waitInitialized(this);<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>  @Override<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  protected void serializeStateData(ProcedureStateSerializer serializer) throws IOException {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    serializer.serialize(<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      RefreshPeerStateData.newBuilder().setPeerId(peerId).setType(toPeerModificationType(type))<a name="line.216"></a>
+<span class="sourceLineNo">217</span>          .setTargetServer(ProtobufUtil.toServerName(targetServer)).setStage(stage).build());<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>  @Override<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  protected void deserializeStateData(ProcedureStateSerializer serializer) throws IOException {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    RefreshPeerStateData data = serializer.deserialize(RefreshPeerStateData.class);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    peerId = data.getPeerId();<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    type = toPeerOperationType(data.getType());<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    targetServer = ProtobufUtil.toServerName(data.getTargetServer());<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    stage = data.getStage();<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html
index dc5908e..f55a7ed 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html
@@ -384,123 +384,105 @@
 <span class="sourceLineNo">376</span>  }<a name="line.376"></a>
 <span class="sourceLineNo">377</span><a name="line.377"></a>
 <span class="sourceLineNo">378</span>  private BitSetNode getOrCreateNode(long procId) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    // See HBASE-20973, grow or merge can lead to ArrayIndexOutOfBoundsException<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    // The root cause is not revealed yet, disable grow or merge for now<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    return getOrCreateNodeNoGrowOrMerge(procId);<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>  private BitSetNode getOrCreateNodeNoGrowOrMerge(long procId) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.floorEntry(procId);<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    if (entry != null &amp;&amp; entry.getValue().contains(procId)) {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      return entry.getValue();<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    } else {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      BitSetNode node = new BitSetNode(procId, partial);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>      assert !map.containsKey(node.getStart());<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      map.put(node.getStart(), node);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      return node;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    }<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  }<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  private BitSetNode getOrCreateNodeWithGrowOrMerge(long procId) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    // If procId can fit in left node (directly or by growing it)<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    BitSetNode leftNode = null;<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    boolean leftCanGrow = false;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    Map.Entry&lt;Long, BitSetNode&gt; leftEntry = map.floorEntry(procId);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    if (leftEntry != null) {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      leftNode = leftEntry.getValue();<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      if (leftNode.contains(procId)) {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        return leftNode;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      }<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      leftCanGrow = leftNode.canGrow(procId);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>    // If procId can fit in right node (directly or by growing it)<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    BitSetNode rightNode = null;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    boolean rightCanGrow = false;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    Map.Entry&lt;Long, BitSetNode&gt; rightEntry = map.ceilingEntry(procId);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    if (rightEntry != null) {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      rightNode = rightEntry.getValue();<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      rightCanGrow = rightNode.canGrow(procId);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      if (leftNode != null) {<a name="line.416"></a>
-<span class="sourceLineNo">417</span>        if (leftNode.canMerge(rightNode)) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>          // merge left and right node<a name="line.418"></a>
-<span class="sourceLineNo">419</span>          return mergeNodes(leftNode, rightNode);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        }<a name="line.420"></a>
-<span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>        // If left and right nodes can not merge, decide which one to grow.<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        if (leftCanGrow &amp;&amp; rightCanGrow) {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>          if ((procId - leftNode.getEnd()) &lt;= (rightNode.getStart() - procId)) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>            return growNode(leftNode, procId);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>          }<a name="line.426"></a>
-<span class="sourceLineNo">427</span>          return growNode(rightNode, procId);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        }<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><a name="line.431"></a>
-<span class="sourceLineNo">432</span>    // grow the left node<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    if (leftCanGrow) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      return growNode(leftNode, procId);<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>    // grow the right node<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    if (rightCanGrow) {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      return growNode(rightNode, procId);<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>    // add new node if there are no left/right nodes which can be used.<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    BitSetNode node = new BitSetNode(procId, partial);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    map.put(node.getStart(), node);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    return node;<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>  /**<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   * Grows {@code node} to contain {@code procId} and updates the map.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * @return {@link BitSetNode} instance which contains {@code procId}.<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   */<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  private BitSetNode growNode(BitSetNode node, long procId) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    map.remove(node.getStart());<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    node.grow(procId);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    map.put(node.getStart(), node);<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    return node;<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  }<a name="line.457"></a>
-<span class="sourceLineNo">458</span><a name="line.458"></a>
-<span class="sourceLineNo">459</span>  /**<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   * Merges {@code leftNode} &amp; {@code rightNode} and updates the map.<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   */<a name="line.461"></a>
-<span class="sourceLineNo">462</span>  private BitSetNode mergeNodes(BitSetNode leftNode, BitSetNode rightNode) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    assert leftNode.getStart() &lt; rightNode.getStart();<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    leftNode.merge(rightNode);<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    map.remove(rightNode.getStart());<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    return leftNode;<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>  public void dump() {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    System.out.println("map " + map.size());<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    System.out.println("isAllModified " + isAllModified());<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    System.out.println("isEmpty " + isEmpty());<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      entry.getValue().dump();<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    }<a name="line.475"></a>
+<span class="sourceLineNo">379</span>    // If procId can fit in left node (directly or by growing it)<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    BitSetNode leftNode = null;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    boolean leftCanGrow = false;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    Map.Entry&lt;Long, BitSetNode&gt; leftEntry = map.floorEntry(procId);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    if (leftEntry != null) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      leftNode = leftEntry.getValue();<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      if (leftNode.contains(procId)) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>        return leftNode;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      }<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      leftCanGrow = leftNode.canGrow(procId);<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    }<a name="line.389"></a>
+<span class="sourceLineNo">390</span><a name="line.390"></a>
+<span class="sourceLineNo">391</span>    // If procId can fit in right node (directly or by growing it)<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    BitSetNode rightNode = null;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    boolean rightCanGrow = false;<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    Map.Entry&lt;Long, BitSetNode&gt; rightEntry = map.ceilingEntry(procId);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    if (rightEntry != null) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      rightNode = rightEntry.getValue();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      rightCanGrow = rightNode.canGrow(procId);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      if (leftNode != null) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        if (leftNode.canMerge(rightNode)) {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>          // merge left and right node<a name="line.400"></a>
+<span class="sourceLineNo">401</span>          return mergeNodes(leftNode, rightNode);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        }<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>        // If left and right nodes can not merge, decide which one to grow.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        if (leftCanGrow &amp;&amp; rightCanGrow) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>          if ((procId - leftNode.getEnd()) &lt;= (rightNode.getStart() - procId)) {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>            return growNode(leftNode, procId);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>          return growNode(rightNode, procId);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        }<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      }<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    }<a name="line.412"></a>
+<span class="sourceLineNo">413</span><a name="line.413"></a>
+<span class="sourceLineNo">414</span>    // grow the left node<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    if (leftCanGrow) {<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      return growNode(leftNode, procId);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>    // grow the right node<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    if (rightCanGrow) {<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      return growNode(rightNode, procId);<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>    // add new node if there are no left/right nodes which can be used.<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    BitSetNode node = new BitSetNode(procId, partial);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    map.put(node.getStart(), node);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    return node;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  }<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>   * Grows {@code node} to contain {@code procId} and updates the map.<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   * @return {@link BitSetNode} instance which contains {@code procId}.<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   */<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  private BitSetNode growNode(BitSetNode node, long procId) {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    map.remove(node.getStart());<a name="line.435"></a>
+<span class="sourceLineNo">436</span>    node.grow(procId);<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    map.put(node.getStart(), node);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    return node;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>  }<a name="line.439"></a>
+<span class="sourceLineNo">440</span><a name="line.440"></a>
+<span class="sourceLineNo">441</span>  /**<a name="line.441"></a>
+<span class="sourceLineNo">442</span>   * Merges {@code leftNode} &amp; {@code rightNode} and updates the map.<a name="line.442"></a>
+<span class="sourceLineNo">443</span>   */<a name="line.443"></a>
+<span class="sourceLineNo">444</span>  private BitSetNode mergeNodes(BitSetNode leftNode, BitSetNode rightNode) {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    assert leftNode.getStart() &lt; rightNode.getStart();<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    leftNode.merge(rightNode);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    map.remove(rightNode.getStart());<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    return leftNode;<a name="line.448"></a>
+<span class="sourceLineNo">449</span>  }<a name="line.449"></a>
+<span class="sourceLineNo">450</span><a name="line.450"></a>
+<span class="sourceLineNo">451</span>  public void dump() {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    System.out.println("map " + map.size());<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    System.out.println("isAllModified " + isAllModified());<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    System.out.println("isEmpty " + isEmpty());<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      entry.getValue().dump();<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    }<a name="line.457"></a>
+<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
+<span class="sourceLineNo">459</span><a name="line.459"></a>
+<span class="sourceLineNo">460</span>  // ========================================================================<a name="line.460"></a>
+<span class="sourceLineNo">461</span>  //  Convert to/from Protocol Buffer.<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  // ========================================================================<a name="line.462"></a>
+<span class="sourceLineNo">463</span><a name="line.463"></a>
+<span class="sourceLineNo">464</span>  /**<a name="line.464"></a>
+<span class="sourceLineNo">465</span>   * Builds<a name="line.465"></a>
+<span class="sourceLineNo">466</span>   * org.apache.hadoop.hbase.protobuf.generated.ProcedureProtos.ProcedureStoreTracker<a name="line.466"></a>
+<span class="sourceLineNo">467</span>   * protocol buffer from current state.<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   */<a name="line.468"></a>
+<span class="sourceLineNo">469</span>  public ProcedureProtos.ProcedureStoreTracker toProto() throws IOException {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    ProcedureProtos.ProcedureStoreTracker.Builder builder =<a name="line.470"></a>
+<span class="sourceLineNo">471</span>        ProcedureProtos.ProcedureStoreTracker.newBuilder();<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      builder.addNode(entry.getValue().convert());<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    return builder.build();<a name="line.475"></a>
 <span class="sourceLineNo">476</span>  }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>  // ========================================================================<a name="line.478"></a>
-<span class="sourceLineNo">479</span>  //  Convert to/from Protocol Buffer.<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>   * Builds<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   * org.apache.hadoop.hbase.protobuf.generated.ProcedureProtos.ProcedureStoreTracker<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * protocol buffer from current state.<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   */<a name="line.486"></a>
-<span class="sourceLineNo">487</span>  public ProcedureProtos.ProcedureStoreTracker toProto() throws IOException {<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    ProcedureProtos.ProcedureStoreTracker.Builder builder =<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        ProcedureProtos.ProcedureStoreTracker.newBuilder();<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      builder.addNode(entry.getValue().convert());<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    return builder.build();<a name="line.493"></a>
-<span class="sourceLineNo">494</span>  }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>}<a name="line.495"></a>
+<span class="sourceLineNo">477</span>}<a name="line.477"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fa850293/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html
index dc5908e..f55a7ed 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html
@@ -384,123 +384,105 @@
 <span class="sourceLineNo">376</span>  }<a name="line.376"></a>
 <span class="sourceLineNo">377</span><a name="line.377"></a>
 <span class="sourceLineNo">378</span>  private BitSetNode getOrCreateNode(long procId) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    // See HBASE-20973, grow or merge can lead to ArrayIndexOutOfBoundsException<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    // The root cause is not revealed yet, disable grow or merge for now<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    return getOrCreateNodeNoGrowOrMerge(procId);<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>  private BitSetNode getOrCreateNodeNoGrowOrMerge(long procId) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.floorEntry(procId);<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    if (entry != null &amp;&amp; entry.getValue().contains(procId)) {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      return entry.getValue();<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    } else {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      BitSetNode node = new BitSetNode(procId, partial);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>      assert !map.containsKey(node.getStart());<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      map.put(node.getStart(), node);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      return node;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    }<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  }<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  private BitSetNode getOrCreateNodeWithGrowOrMerge(long procId) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    // If procId can fit in left node (directly or by growing it)<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    BitSetNode leftNode = null;<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    boolean leftCanGrow = false;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    Map.Entry&lt;Long, BitSetNode&gt; leftEntry = map.floorEntry(procId);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    if (leftEntry != null) {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      leftNode = leftEntry.getValue();<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      if (leftNode.contains(procId)) {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        return leftNode;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      }<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      leftCanGrow = leftNode.canGrow(procId);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>    // If procId can fit in right node (directly or by growing it)<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    BitSetNode rightNode = null;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    boolean rightCanGrow = false;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    Map.Entry&lt;Long, BitSetNode&gt; rightEntry = map.ceilingEntry(procId);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    if (rightEntry != null) {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      rightNode = rightEntry.getValue();<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      rightCanGrow = rightNode.canGrow(procId);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      if (leftNode != null) {<a name="line.416"></a>
-<span class="sourceLineNo">417</span>        if (leftNode.canMerge(rightNode)) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>          // merge left and right node<a name="line.418"></a>
-<span class="sourceLineNo">419</span>          return mergeNodes(leftNode, rightNode);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        }<a name="line.420"></a>
-<span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>        // If left and right nodes can not merge, decide which one to grow.<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        if (leftCanGrow &amp;&amp; rightCanGrow) {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>          if ((procId - leftNode.getEnd()) &lt;= (rightNode.getStart() - procId)) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>            return growNode(leftNode, procId);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>          }<a name="line.426"></a>
-<span class="sourceLineNo">427</span>          return growNode(rightNode, procId);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        }<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><a name="line.431"></a>
-<span class="sourceLineNo">432</span>    // grow the left node<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    if (leftCanGrow) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      return growNode(leftNode, procId);<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>    // grow the right node<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    if (rightCanGrow) {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      return growNode(rightNode, procId);<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>    // add new node if there are no left/right nodes which can be used.<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    BitSetNode node = new BitSetNode(procId, partial);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    map.put(node.getStart(), node);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    return node;<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>  /**<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   * Grows {@code node} to contain {@code procId} and updates the map.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * @return {@link BitSetNode} instance which contains {@code procId}.<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   */<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  private BitSetNode growNode(BitSetNode node, long procId) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    map.remove(node.getStart());<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    node.grow(procId);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    map.put(node.getStart(), node);<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    return node;<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  }<a name="line.457"></a>
-<span class="sourceLineNo">458</span><a name="line.458"></a>
-<span class="sourceLineNo">459</span>  /**<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   * Merges {@code leftNode} &amp; {@code rightNode} and updates the map.<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   */<a name="line.461"></a>
-<span class="sourceLineNo">462</span>  private BitSetNode mergeNodes(BitSetNode leftNode, BitSetNode rightNode) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    assert leftNode.getStart() &lt; rightNode.getStart();<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    leftNode.merge(rightNode);<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    map.remove(rightNode.getStart());<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    return leftNode;<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>  public void dump() {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    System.out.println("map " + map.size());<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    System.out.println("isAllModified " + isAllModified());<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    System.out.println("isEmpty " + isEmpty());<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      entry.getValue().dump();<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    }<a name="line.475"></a>
+<span class="sourceLineNo">379</span>    // If procId can fit in left node (directly or by growing it)<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    BitSetNode leftNode = null;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    boolean leftCanGrow = false;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    Map.Entry&lt;Long, BitSetNode&gt; leftEntry = map.floorEntry(procId);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    if (leftEntry != null) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      leftNode = leftEntry.getValue();<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      if (leftNode.contains(procId)) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>        return leftNode;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      }<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      leftCanGrow = leftNode.canGrow(procId);<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    }<a name="line.389"></a>
+<span class="sourceLineNo">390</span><a name="line.390"></a>
+<span class="sourceLineNo">391</span>    // If procId can fit in right node (directly or by growing it)<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    BitSetNode rightNode = null;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    boolean rightCanGrow = false;<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    Map.Entry&lt;Long, BitSetNode&gt; rightEntry = map.ceilingEntry(procId);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    if (rightEntry != null) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      rightNode = rightEntry.getValue();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      rightCanGrow = rightNode.canGrow(procId);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      if (leftNode != null) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        if (leftNode.canMerge(rightNode)) {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>          // merge left and right node<a name="line.400"></a>
+<span class="sourceLineNo">401</span>          return mergeNodes(leftNode, rightNode);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        }<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>        // If left and right nodes can not merge, decide which one to grow.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        if (leftCanGrow &amp;&amp; rightCanGrow) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>          if ((procId - leftNode.getEnd()) &lt;= (rightNode.getStart() - procId)) {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>            return growNode(leftNode, procId);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>          return growNode(rightNode, procId);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        }<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      }<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    }<a name="line.412"></a>
+<span class="sourceLineNo">413</span><a name="line.413"></a>
+<span class="sourceLineNo">414</span>    // grow the left node<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    if (leftCanGrow) {<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      return growNode(leftNode, procId);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>    // grow the right node<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    if (rightCanGrow) {<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      return growNode(rightNode, procId);<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>    // add new node if there are no left/right nodes which can be used.<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    BitSetNode node = new BitSetNode(procId, partial);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    map.put(node.getStart(), node);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    return node;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  }<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>   * Grows {@code node} to contain {@code procId} and updates the map.<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   * @return {@link BitSetNode} instance which contains {@code procId}.<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   */<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  private BitSetNode growNode(BitSetNode node, long procId) {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    map.remove(node.getStart());<a name="line.435"></a>
+<span class="sourceLineNo">436</span>    node.grow(procId);<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    map.put(node.getStart(), node);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    return node;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>  }<a name="line.439"></a>
+<span class="sourceLineNo">440</span><a name="line.440"></a>
+<span class="sourceLineNo">441</span>  /**<a name="line.441"></a>
+<span class="sourceLineNo">442</span>   * Merges {@code leftNode} &amp; {@code rightNode} and updates the map.<a name="line.442"></a>
+<span class="sourceLineNo">443</span>   */<a name="line.443"></a>
+<span class="sourceLineNo">444</span>  private BitSetNode mergeNodes(BitSetNode leftNode, BitSetNode rightNode) {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    assert leftNode.getStart() &lt; rightNode.getStart();<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    leftNode.merge(rightNode);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    map.remove(rightNode.getStart());<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    return leftNode;<a name="line.448"></a>
+<span class="sourceLineNo">449</span>  }<a name="line.449"></a>
+<span class="sourceLineNo">450</span><a name="line.450"></a>
+<span class="sourceLineNo">451</span>  public void dump() {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    System.out.println("map " + map.size());<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    System.out.println("isAllModified " + isAllModified());<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    System.out.println("isEmpty " + isEmpty());<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      entry.getValue().dump();<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    }<a name="line.457"></a>
+<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
+<span class="sourceLineNo">459</span><a name="line.459"></a>
+<span class="sourceLineNo">460</span>  // ========================================================================<a name="line.460"></a>
+<span class="sourceLineNo">461</span>  //  Convert to/from Protocol Buffer.<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  // ========================================================================<a name="line.462"></a>
+<span class="sourceLineNo">463</span><a name="line.463"></a>
+<span class="sourceLineNo">464</span>  /**<a name="line.464"></a>
+<span class="sourceLineNo">465</span>   * Builds<a name="line.465"></a>
+<span class="sourceLineNo">466</span>   * org.apache.hadoop.hbase.protobuf.generated.ProcedureProtos.ProcedureStoreTracker<a name="line.466"></a>
+<span class="sourceLineNo">467</span>   * protocol buffer from current state.<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   */<a name="line.468"></a>
+<span class="sourceLineNo">469</span>  public ProcedureProtos.ProcedureStoreTracker toProto() throws IOException {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    ProcedureProtos.ProcedureStoreTracker.Builder builder =<a name="line.470"></a>
+<span class="sourceLineNo">471</span>        ProcedureProtos.ProcedureStoreTracker.newBuilder();<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      builder.addNode(entry.getValue().convert());<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    return builder.build();<a name="line.475"></a>
 <span class="sourceLineNo">476</span>  }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>  // ========================================================================<a name="line.478"></a>
-<span class="sourceLineNo">479</span>  //  Convert to/from Protocol Buffer.<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>   * Builds<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   * org.apache.hadoop.hbase.protobuf.generated.ProcedureProtos.ProcedureStoreTracker<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * protocol buffer from current state.<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   */<a name="line.486"></a>
-<span class="sourceLineNo">487</span>  public ProcedureProtos.ProcedureStoreTracker toProto() throws IOException {<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    ProcedureProtos.ProcedureStoreTracker.Builder builder =<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        ProcedureProtos.ProcedureStoreTracker.newBuilder();<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      builder.addNode(entry.getValue().convert());<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    return builder.build();<a name="line.493"></a>
-<span class="sourceLineNo">494</span>  }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>}<a name="line.495"></a>
+<span class="sourceLineNo">477</span>}<a name="line.477"></a>