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 2017/06/23 15:01:09 UTC

[01/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site af9043b74 -> e9db7c5d7


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.html
index a1d9f98..9ce2441 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.html
@@ -28,1446 +28,1556 @@
 <span class="sourceLineNo">020</span>package org.apache.hadoop.hbase.regionserver;<a name="line.20"></a>
 <span class="sourceLineNo">021</span><a name="line.21"></a>
 <span class="sourceLineNo">022</span>import static org.junit.Assert.assertEquals;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.junit.Assert.assertNull;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.junit.Assert.assertTrue;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import static org.mockito.Matchers.any;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import static org.mockito.Mockito.spy;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import static org.mockito.Mockito.times;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import static org.mockito.Mockito.verify;<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.io.IOException;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.lang.ref.SoftReference;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.security.PrivilegedExceptionAction;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.ArrayList;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.Arrays;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.Collection;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.Collections;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.Iterator;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.List;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.ListIterator;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import java.util.NavigableSet;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import java.util.TreeSet;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import java.util.concurrent.ConcurrentSkipListSet;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.concurrent.CountDownLatch;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import java.util.concurrent.ExecutorService;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import java.util.concurrent.Executors;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import java.util.concurrent.TimeUnit;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.util.function.Consumer;<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.commons.logging.Log;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.commons.logging.LogFactory;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.fs.FileStatus;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FileSystem;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FilterFileSystem;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.LocalFileSystem;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.Path;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.permission.FsPermission;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.Cell;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HConstants;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.TableName;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Get;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.security.User;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.util.Progressable;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.junit.After;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.junit.Assert;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.junit.Before;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.junit.Rule;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.junit.Test;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.junit.experimental.categories.Category;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.junit.rules.TestName;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.mockito.Mockito;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>import com.google.common.collect.Lists;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>/**<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * Test class for the Store<a name="line.110"></a>
-<span class="sourceLineNo">111</span> */<a name="line.111"></a>
-<span class="sourceLineNo">112</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.112"></a>
-<span class="sourceLineNo">113</span>public class TestStore {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private static final Log LOG = LogFactory.getLog(TestStore.class);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  @Rule public TestName name = new TestName();<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  HStore store;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  byte [] table = Bytes.toBytes("table");<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  byte [] family = Bytes.toBytes("family");<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  byte [] row = Bytes.toBytes("row");<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  byte [] row2 = Bytes.toBytes("row2");<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  byte [] qf1 = Bytes.toBytes("qf1");<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  byte [] qf2 = Bytes.toBytes("qf2");<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  byte [] qf3 = Bytes.toBytes("qf3");<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  byte [] qf4 = Bytes.toBytes("qf4");<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  byte [] qf5 = Bytes.toBytes("qf5");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  byte [] qf6 = Bytes.toBytes("qf6");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  NavigableSet&lt;byte[]&gt; qualifiers = new ConcurrentSkipListSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  List&lt;Cell&gt; expected = new ArrayList&lt;&gt;();<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  List&lt;Cell&gt; result = new ArrayList&lt;&gt;();<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  long id = System.currentTimeMillis();<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  Get get = new Get(row);<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private final String DIR = TEST_UTIL.getDataTestDir("TestStore").toString();<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertFalse;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.junit.Assert.assertNull;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.junit.Assert.assertTrue;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import static org.mockito.Matchers.any;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import static org.mockito.Mockito.spy;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import static org.mockito.Mockito.times;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import static org.mockito.Mockito.verify;<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.io.IOException;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.lang.ref.SoftReference;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.security.PrivilegedExceptionAction;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.ArrayList;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.Arrays;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Collection;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.Collections;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.Iterator;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.List;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import java.util.ListIterator;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import java.util.NavigableSet;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import java.util.TreeSet;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import java.util.concurrent.ConcurrentSkipListSet;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.concurrent.CountDownLatch;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.ExecutorService;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import java.util.concurrent.Executors;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import java.util.concurrent.TimeUnit;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import java.util.function.Consumer;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.commons.logging.Log;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.commons.logging.LogFactory;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.conf.Configuration;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FileStatus;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.FileSystem;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.FilterFileSystem;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.LocalFileSystem;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.Path;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.fs.permission.FsPermission;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.Cell;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HConstants;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.TableName;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Get;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.security.User;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.util.Progressable;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.junit.After;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.junit.Assert;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.junit.Before;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.junit.Rule;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.junit.Test;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.junit.experimental.categories.Category;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.junit.rules.TestName;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.mockito.Mockito;<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>import com.google.common.collect.Lists;<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> * Test class for the Store<a name="line.111"></a>
+<span class="sourceLineNo">112</span> */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.113"></a>
+<span class="sourceLineNo">114</span>public class TestStore {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static final Log LOG = LogFactory.getLog(TestStore.class);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  @Rule public TestName name = new TestName();<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  HStore store;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  byte [] table = Bytes.toBytes("table");<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  byte [] family = Bytes.toBytes("family");<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>  byte [] row = Bytes.toBytes("row");<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  byte [] row2 = Bytes.toBytes("row2");<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  byte [] qf1 = Bytes.toBytes("qf1");<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  byte [] qf2 = Bytes.toBytes("qf2");<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  byte [] qf3 = Bytes.toBytes("qf3");<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  byte [] qf4 = Bytes.toBytes("qf4");<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  byte [] qf5 = Bytes.toBytes("qf5");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  byte [] qf6 = Bytes.toBytes("qf6");<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  NavigableSet&lt;byte[]&gt; qualifiers = new ConcurrentSkipListSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  List&lt;Cell&gt; expected = new ArrayList&lt;&gt;();<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  List&lt;Cell&gt; result = new ArrayList&lt;&gt;();<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  long id = System.currentTimeMillis();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  Get get = new Get(row);<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private final String DIR = TEST_UTIL.getDataTestDir("TestStore").toString();<a name="line.140"></a>
 <span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  /**<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * Setup<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * @throws IOException<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  @Before<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  public void setUp() throws IOException {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    qualifiers.add(qf1);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    qualifiers.add(qf3);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    qualifiers.add(qf5);<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>    Iterator&lt;byte[]&gt; iter = qualifiers.iterator();<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    while(iter.hasNext()){<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      byte [] next = iter.next();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      expected.add(new KeyValue(row, family, next, 1, (byte[])null));<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      get.addColumn(family, next);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>  private void init(String methodName) throws IOException {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    init(methodName, TEST_UTIL.getConfiguration());<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  private void init(String methodName, Configuration conf)<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  throws IOException {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    // some of the tests write 4 versions and then flush<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    // (with HBASE-4241, lower versions are collected on flush)<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    hcd.setMaxVersions(4);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    init(methodName, conf, hcd);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  private void init(String methodName, Configuration conf,<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      HColumnDescriptor hcd) throws IOException {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(table));<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    init(methodName, conf, htd, hcd);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  }<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      HColumnDescriptor hcd) throws IOException {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    return init(methodName, conf, htd, hcd, null);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  @SuppressWarnings("deprecation")<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      HColumnDescriptor hcd, MyScannerHook hook) throws IOException {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    //Setting up a Store<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    Path basedir = new Path(DIR+methodName);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    Path tableDir = FSUtils.getTableDir(basedir, htd.getTableName());<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    final Path logdir = new Path(basedir, AbstractFSWALProvider.getWALDirectoryName(methodName));<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>    FileSystem fs = FileSystem.get(conf);<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>    fs.delete(logdir, true);<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>    if (htd.hasFamily(hcd.getName())) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      htd.modifyFamily(hcd);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    } else {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      htd.addFamily(hcd);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false, MemStoreLABImpl.CHUNK_SIZE_DEFAULT, 1, 0, null);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    final Configuration walConf = new Configuration(conf);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    FSUtils.setRootDir(walConf, basedir);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    final WALFactory wals = new WALFactory(walConf, null, methodName);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    HRegion region = new HRegion(tableDir, wals.getWAL(info.getEncodedNameAsBytes(),<a name="line.206"></a>
-<span class="sourceLineNo">207</span>            info.getTable().getNamespace()), fs, conf, info, htd, null);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    if (hook == null) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      store = new HStore(region, hcd, conf);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    } else {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      store = new MyStore(region, hcd, conf, hook);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    return store;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  }<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  /**<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * Test we do not lose data if we fail a flush and then close.<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * Part of HBase-10466<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * @throws Exception<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   */<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  @Test<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  public void testFlushSizeAccounting() throws Exception {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    LOG.info("Setting up a faulty file system that cannot write in " +<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      this.name.getMethodName());<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    // Only retry once.<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    conf.setInt("hbase.hstore.flush.retries.number", 1);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    User user = User.createUserForTesting(conf, this.name.getMethodName(),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      new String[]{"foo"});<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // Inject our faulty LocalFileSystem<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    conf.setClass("fs.file.impl", FaultyFileSystem.class, FileSystem.class);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    user.runAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      public Object run() throws Exception {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        // Make sure it worked (above is sensitive to caching details in hadoop core)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        FileSystem fs = FileSystem.get(conf);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        Assert.assertEquals(FaultyFileSystem.class, fs.getClass());<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        FaultyFileSystem ffs = (FaultyFileSystem)fs;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>        // Initialize region<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        init(name.getMethodName(), conf);<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span>        MemstoreSize size = store.memstore.getFlushableSize();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        Assert.assertEquals(0, size.getDataSize());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        LOG.info("Adding some data");<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        MemstoreSize kvSize = new MemstoreSize();<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        store.add(new KeyValue(row, family, qf1, 1, (byte[])null), kvSize);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        size = store.memstore.getFlushableSize();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        Assert.assertEquals(kvSize, size);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        // Flush.  Bug #1 from HBASE-10466.  Make sure size calculation on failed flush is right.<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        try {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          LOG.info("Flushing");<a name="line.252"></a>
-<span class="sourceLineNo">253</span>          flushStore(store, id++);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          Assert.fail("Didn't bubble up IOE!");<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        } catch (IOException ioe) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>          Assert.assertTrue(ioe.getMessage().contains("Fault injected"));<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        size = store.memstore.getFlushableSize();<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        Assert.assertEquals(kvSize, size);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        MemstoreSize kvSize2 = new MemstoreSize();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        store.add(new KeyValue(row, family, qf2, 2, (byte[])null), kvSize2);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        // Even though we add a new kv, we expect the flushable size to be 'same' since we have<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        // not yet cleared the snapshot -- the above flush failed.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        Assert.assertEquals(kvSize, size);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        ffs.fault.set(false);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        flushStore(store, id++);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        size = store.memstore.getFlushableSize();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        // Size should be the foreground kv size.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        Assert.assertEquals(kvSize2, size);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        flushStore(store, id++);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        size = store.memstore.getFlushableSize();<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        assertEquals(0, size.getDataSize());<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        assertEquals(0, size.getHeapSize());<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        return null;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    });<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  }<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  /**<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   * Verify that compression and data block encoding are respected by the<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * Store.createWriterInTmp() method, used on store flush.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   */<a name="line.282"></a>
-<span class="sourceLineNo">283</span>  @Test<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  public void testCreateWriter() throws Exception {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    Configuration conf = HBaseConfiguration.create();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    FileSystem fs = FileSystem.get(conf);<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    hcd.setCompressionType(Compression.Algorithm.GZ);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    hcd.setDataBlockEncoding(DataBlockEncoding.DIFF);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    init(name.getMethodName(), conf, hcd);<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>    // Test createWriterInTmp()<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    StoreFileWriter writer = store.createWriterInTmp(4, hcd.getCompressionType(), false, true, false);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    Path path = writer.getPath();<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    writer.append(new KeyValue(row, family, qf1, Bytes.toBytes(1)));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    writer.append(new KeyValue(row, family, qf2, Bytes.toBytes(2)));<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    writer.append(new KeyValue(row2, family, qf1, Bytes.toBytes(3)));<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    writer.append(new KeyValue(row2, family, qf2, Bytes.toBytes(4)));<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    writer.close();<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>    // Verify that compression and encoding settings are respected<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    HFile.Reader reader = HFile.createReader(fs, path, new CacheConfig(conf), true, conf);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    Assert.assertEquals(hcd.getCompressionType(), reader.getCompressionAlgorithm());<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    Assert.assertEquals(hcd.getDataBlockEncoding(), reader.getDataBlockEncoding());<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    reader.close();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  /**<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * Setup<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * @throws IOException<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   */<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  @Before<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  public void setUp() throws IOException {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    qualifiers.add(qf1);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    qualifiers.add(qf3);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    qualifiers.add(qf5);<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    Iterator&lt;byte[]&gt; iter = qualifiers.iterator();<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    while(iter.hasNext()){<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      byte [] next = iter.next();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      expected.add(new KeyValue(row, family, next, 1, (byte[])null));<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      get.addColumn(family, next);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>  private void init(String methodName) throws IOException {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    init(methodName, TEST_UTIL.getConfiguration());<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  private Store init(String methodName, Configuration conf)<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  throws IOException {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    // some of the tests write 4 versions and then flush<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    // (with HBASE-4241, lower versions are collected on flush)<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    hcd.setMaxVersions(4);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    return init(methodName, conf, hcd);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>  private Store init(String methodName, Configuration conf,<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      HColumnDescriptor hcd) throws IOException {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(table));<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    return init(methodName, conf, htd, hcd);<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>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      HColumnDescriptor hcd) throws IOException {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    return init(methodName, conf, htd, hcd, null);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @SuppressWarnings("deprecation")<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      HColumnDescriptor hcd, MyScannerHook hook) throws IOException {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    return init(methodName, conf, htd, hcd, hook, false);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  @SuppressWarnings("deprecation")<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      HColumnDescriptor hcd, MyScannerHook hook, boolean switchToPread) throws IOException {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    //Setting up a Store<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    Path basedir = new Path(DIR+methodName);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    Path tableDir = FSUtils.getTableDir(basedir, htd.getTableName());<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    final Path logdir = new Path(basedir, AbstractFSWALProvider.getWALDirectoryName(methodName));<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>    FileSystem fs = FileSystem.get(conf);<a name="line.198"></a>
+<span class="sourceLineNo">199</span><a name="line.199"></a>
+<span class="sourceLineNo">200</span>    fs.delete(logdir, true);<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    if (htd.hasFamily(hcd.getName())) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      htd.modifyFamily(hcd);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    } else {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      htd.addFamily(hcd);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false,<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      MemStoreLABImpl.CHUNK_SIZE_DEFAULT, 1, 0, null);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    final Configuration walConf = new Configuration(conf);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    FSUtils.setRootDir(walConf, basedir);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    final WALFactory wals = new WALFactory(walConf, null, methodName);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    HRegion region = new HRegion(tableDir, wals.getWAL(info.getEncodedNameAsBytes(),<a name="line.213"></a>
+<span class="sourceLineNo">214</span>            info.getTable().getNamespace()), fs, conf, info, htd, null);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    if (hook == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      store = new HStore(region, hcd, conf);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    } else {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      store = new MyStore(region, hcd, conf, hook, switchToPread);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    return store;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  /**<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * Test we do not lose data if we fail a flush and then close.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * Part of HBase-10466<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   * @throws Exception<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   */<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  @Test<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  public void testFlushSizeAccounting() throws Exception {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    LOG.info("Setting up a faulty file system that cannot write in " +<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      this.name.getMethodName());<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    // Only retry once.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    conf.setInt("hbase.hstore.flush.retries.number", 1);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    User user = User.createUserForTesting(conf, this.name.getMethodName(),<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      new String[]{"foo"});<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    // Inject our faulty LocalFileSystem<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    conf.setClass("fs.file.impl", FaultyFileSystem.class, FileSystem.class);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    user.runAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      @Override<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      public Object run() throws Exception {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        // Make sure it worked (above is sensitive to caching details in hadoop core)<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        FileSystem fs = FileSystem.get(conf);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        Assert.assertEquals(FaultyFileSystem.class, fs.getClass());<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        FaultyFileSystem ffs = (FaultyFileSystem)fs;<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>        // Initialize region<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        init(name.getMethodName(), conf);<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>        MemstoreSize size = store.memstore.getFlushableSize();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        Assert.assertEquals(0, size.getDataSize());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        LOG.info("Adding some data");<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        MemstoreSize kvSize = new MemstoreSize();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        store.add(new KeyValue(row, family, qf1, 1, (byte[])null), kvSize);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        size = store.memstore.getFlushableSize();<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        Assert.assertEquals(kvSize, size);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        // Flush.  Bug #1 from HBASE-10466.  Make sure size calculation on failed flush is right.<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        try {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          LOG.info("Flushing");<a name="line.259"></a>
+<span class="sourceLineNo">260</span>          flushStore(store, id++);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>          Assert.fail("Didn't bubble up IOE!");<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        } catch (IOException ioe) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          Assert.assertTrue(ioe.getMessage().contains("Fault injected"));<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        size = store.memstore.getFlushableSize();<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        Assert.assertEquals(kvSize, size);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        MemstoreSize kvSize2 = new MemstoreSize();<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        store.add(new KeyValue(row, family, qf2, 2, (byte[])null), kvSize2);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        // Even though we add a new kv, we expect the flushable size to be 'same' since we have<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        // not yet cleared the snapshot -- the above flush failed.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        Assert.assertEquals(kvSize, size);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        ffs.fault.set(false);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        flushStore(store, id++);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        size = store.memstore.getFlushableSize();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        // Size should be the foreground kv size.<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        Assert.assertEquals(kvSize2, size);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        flushStore(store, id++);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        size = store.memstore.getFlushableSize();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        assertEquals(0, size.getDataSize());<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        assertEquals(0, size.getHeapSize());<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        return null;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    });<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  }<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>  /**<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * Verify that compression and data block encoding are respected by the<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * Store.createWriterInTmp() method, used on store flush.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   */<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  @Test<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  public void testCreateWriter() throws Exception {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    Configuration conf = HBaseConfiguration.create();<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    FileSystem fs = FileSystem.get(conf);<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    hcd.setCompressionType(Compression.Algorithm.GZ);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    hcd.setDataBlockEncoding(DataBlockEncoding.DIFF);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    init(name.getMethodName(), conf, hcd);<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // Test createWriterInTmp()<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    StoreFileWriter writer = store.createWriterInTmp(4, hcd.getCompressionType(), false, true, false);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    Path path = writer.getPath();<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    writer.append(new KeyValue(row, family, qf1, Bytes.toBytes(1)));<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    writer.append(new KeyValue(row, family, qf2, Bytes.toBytes(2)));<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    writer.append(new KeyValue(row2, family, qf1, Bytes.toBytes(3)));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    writer.append(new KeyValue(row2, family, qf2, Bytes.toBytes(4)));<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    writer.close();<a name="line.307"></a>
 <span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  @Test<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  public void testDeleteExpiredStoreFiles() throws Exception {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    testDeleteExpiredStoreFiles(0);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    testDeleteExpiredStoreFiles(1);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  /*<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * @param minVersions the MIN_VERSIONS for the column family<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   */<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public void testDeleteExpiredStoreFiles(int minVersions) throws Exception {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    int storeFileNum = 4;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    int ttl = 4;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    IncrementingEnvironmentEdge edge = new IncrementingEnvironmentEdge();<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    EnvironmentEdgeManagerTestHelper.injectEdge(edge);<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    Configuration conf = HBaseConfiguration.create();<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    // Enable the expired store file deletion<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    conf.setBoolean("hbase.store.delete.expired.storefile", true);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    // Set the compaction threshold higher to avoid normal compactions.<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY, 5);<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    hcd.setMinVersions(minVersions);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    hcd.setTimeToLive(ttl);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    init(name.getMethodName() + "-" + minVersions, conf, hcd);<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>    long storeTtl = this.store.getScanInfo().getTtl();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    long sleepTime = storeTtl / storeFileNum;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    long timeStamp;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    // There are 4 store files and the max time stamp difference among these<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    // store files will be (this.store.ttl / storeFileNum)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      LOG.info("Adding some data for the store file #" + i);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      timeStamp = EnvironmentEdgeManager.currentTime();<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      this.store.add(new KeyValue(row, family, qf1, timeStamp, (byte[]) null), null);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      this.store.add(new KeyValue(row, family, qf2, timeStamp, (byte[]) null), null);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      this.store.add(new KeyValue(row, family, qf3, timeStamp, (byte[]) null), null);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      flush(i);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      edge.incrementTime(sleepTime);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    }<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>    // Verify the total number of store files<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    Assert.assertEquals(storeFileNum, this.store.getStorefiles().size());<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>     // Each call will find one expired store file and delete it before compaction happens.<a name="line.353"></a>
-<span class="sourceLineNo">354</span>     // There will be no compaction due to threshold above. Last file will not be replaced.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    for (int i = 1; i &lt;= storeFileNum - 1; i++) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      // verify the expired store file.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      assertNull(this.store.requestCompaction());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      // Ensure i files are gone.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      if (minVersions == 0) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        assertEquals(storeFileNum - i, sfs.size());<a name="line.361"></a>
-<span class="sourceLineNo">362</span>        // Ensure only non-expired files remain.<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        for (StoreFile sf : sfs) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>          assertTrue(sf.getReader().getMaxTimestamp() &gt;= (edge.currentTime() - storeTtl));<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      } else {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        assertEquals(storeFileNum, sfs.size());<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      // Let the next store file expired.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      edge.incrementTime(sleepTime);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    }<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    assertNull(this.store.requestCompaction());<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>    Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    // Assert the last expired file is not removed.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    if (minVersions == 0) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      assertEquals(1, sfs.size());<a name="line.377"></a>
+<span class="sourceLineNo">309</span>    // Verify that compression and encoding settings are respected<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    HFile.Reader reader = HFile.createReader(fs, path, new CacheConfig(conf), true, conf);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    Assert.assertEquals(hcd.getCompressionType(), reader.getCompressionAlgorithm());<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    Assert.assertEquals(hcd.getDataBlockEncoding(), reader.getDataBlockEncoding());<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    reader.close();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  @Test<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public void testDeleteExpiredStoreFiles() throws Exception {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    testDeleteExpiredStoreFiles(0);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    testDeleteExpiredStoreFiles(1);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  /*<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   * @param minVersions the MIN_VERSIONS for the column family<a name="line.323"></a>
+<span class="sourceLineNo">324</span>   */<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public void testDeleteExpiredStoreFiles(int minVersions) throws Exception {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    int storeFileNum = 4;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    int ttl = 4;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    IncrementingEnvironmentEdge edge = new IncrementingEnvironmentEdge();<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    EnvironmentEdgeManagerTestHelper.injectEdge(edge);<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>    Configuration conf = HBaseConfiguration.create();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    // Enable the expired store file deletion<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    conf.setBoolean("hbase.store.delete.expired.storefile", true);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    // Set the compaction threshold higher to avoid normal compactions.<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY, 5);<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    hcd.setMinVersions(minVersions);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    hcd.setTimeToLive(ttl);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    init(name.getMethodName() + "-" + minVersions, conf, hcd);<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    long storeTtl = this.store.getScanInfo().getTtl();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    long sleepTime = storeTtl / storeFileNum;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    long timeStamp;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    // There are 4 store files and the max time stamp difference among these<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // store files will be (this.store.ttl / storeFileNum)<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      LOG.info("Adding some data for the store file #" + i);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      timeStamp = EnvironmentEdgeManager.currentTime();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      this.store.add(new KeyValue(row, family, qf1, timeStamp, (byte[]) null), null);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      this.store.add(new KeyValue(row, family, qf2, timeStamp, (byte[]) null), null);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      this.store.add(new KeyValue(row, family, qf3, timeStamp, (byte[]) null), null);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      flush(i);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      edge.incrementTime(sleepTime);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>    // Verify the total number of store files<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    Assert.assertEquals(storeFileNum, this.store.getStorefiles().size());<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>     // Each call will find one expired store file and delete it before compaction happens.<a name="line.360"></a>
+<span class="sourceLineNo">361</span>     // There will be no compaction due to threshold above. Last file will not be replaced.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    for (int i = 1; i &lt;= storeFileNum - 1; i++) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      // verify the expired store file.<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      assertNull(this.store.requestCompaction());<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      // Ensure i files are gone.<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      if (minVersions == 0) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        assertEquals(storeFileNum - i, sfs.size());<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        // Ensure only non-expired files remain.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        for (StoreFile sf : sfs) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>          assertTrue(sf.getReader().getMaxTimestamp() &gt;= (edge.currentTime() - storeTtl));<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        }<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      } else {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        assertEquals(storeFileNum, sfs.size());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      // Let the next store file expired.<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      edge.incrementTime(sleepTime);<a name="line.377"></a>
 <span class="sourceLineNo">378</span>    }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    long ts = sfs.iterator().next().getReader().getMaxTimestamp();<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    assertTrue(ts &lt; (edge.currentTime() - storeTtl));<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    for (StoreFile sf : sfs) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      sf.closeReader(true);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  @Test<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public void testLowestModificationTime() throws Exception {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    Configuration conf = HBaseConfiguration.create();<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    FileSystem fs = FileSystem.get(conf);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    // Initialize region<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    init(name.getMethodName(), conf);<a name="line.392"></a>
+<span class="sourceLineNo">379</span>    assertNull(this.store.requestCompaction());<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>    Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    // Assert the last expired file is not removed.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    if (minVersions == 0) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      assertEquals(1, sfs.size());<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    }<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    long ts = sfs.iterator().next().getReader().getMaxTimestamp();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    assertTrue(ts &lt; (edge.currentTime() - storeTtl));<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>    for (StoreFile sf : sfs) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      sf.closeReader(true);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    }<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  }<a name="line.392"></a>
 <span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    int storeFileNum = 4;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      LOG.info("Adding some data for the store file #"+i);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      this.store.add(new KeyValue(row, family, qf1, i, (byte[])null), null);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      this.store.add(new KeyValue(row, family, qf2, i, (byte[])null), null);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      this.store.add(new KeyValue(row, family, qf3, i, (byte[])null), null);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      flush(i);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    // after flush; check the lowest time stamp<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    long lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    long lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    Assert.assertEquals(lowestTimeStampFromManager,lowestTimeStampFromFS);<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>    // after compact; check the lowest time stamp<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    store.compact(store.requestCompaction(), NoLimitThroughputController.INSTANCE, null);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    Assert.assertEquals(lowestTimeStampFromManager, lowestTimeStampFromFS);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
+<span class="sourceLineNo">394</span>  @Test<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  public void testLowestModificationTime() throws Exception {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    Configuration conf = HBaseConfiguration.create();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    FileSystem fs = FileSystem.get(conf);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Initialize region<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    init(name.getMethodName(), conf);<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    int storeFileNum = 4;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      LOG.info("Adding some data for the store file #"+i);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      this.store.add(new KeyValue(row, family, qf1, i, (byte[])null), null);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      this.store.add(new KeyValue(row, family, qf2, i, (byte[])null), null);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      this.store.add(new KeyValue(row, family, qf3, i, (byte[])null), null);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      flush(i);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    // after flush; check the lowest time stamp<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    long lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    long lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    Assert.assertEquals(lowestTimeStampFromManager,lowestTimeStampFromFS);<a name="line.412"></a>
 <span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  private static long getLowestTimeStampFromFS(FileSystem fs,<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      final Collection&lt;StoreFile&gt; candidates) throws IOException {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    long minTs = Long.MAX_VALUE;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    if (candidates.isEmpty()) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      return minTs;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    }<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    Path[] p = new Path[candidates.size()];<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    int i = 0;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    for (StoreFile sf : candidates) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      p[i] = sf.getPath();<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      ++i;<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    }<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>    FileStatus[] stats = fs.listStatus(p);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    if (stats == null || stats.length == 0) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      return minTs;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    for (FileStatus s : stats) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      minTs = Math.min(minTs, s.getModificationTime());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    return minTs;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  // Get tests<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>  private static final int BLOCKSIZE_SMALL = 8192;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Test for hbase-1686.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @throws IOException<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  @Test<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  public void testEmptyStoreFile() throws IOException {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    init(this.name.getMethodName());<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    // Write a store file.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    flush(1);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    // Now put in place an empty store file.  Its a little tricky.  Have to<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // do manually with hacked in sequence id.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    StoreFile f = this.store.getStorefiles().iterator().next();<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    Path storedir = f.getPath().getParent();<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    long seqid = f.getMaxSequenceId();<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    Configuration c = HBaseConfiguration.create();<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    FileSystem fs = FileSystem.get(c);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    HFileContext meta = new HFileContextBuilder().withBlockSize(BLOCKSIZE_SMALL).build();<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    StoreFileWriter w = new StoreFileWriter.Builder(c, new CacheConfig(c),<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        fs)<a name="line.462"></a>
-<span class="sourceLineNo">463</span>            .withOutputDir(storedir)<a name="line.463"></a>
-<span class="sourceLineNo">464</span>            .withFileContext(meta)<a name="line.464"></a>
-<span class="sourceLineNo">465</span>            .build();<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    w.appendMetadata(seqid + 1, false);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    w.close();<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    this.store.close();<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    // Reopen it... should pick up two files<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    this.store = new HStore(this.store.getHRegion(), this.store.getFamily(), c);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    Assert.assertEquals(2, this.store.getStorefilesCount());<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        get.getRow(),<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        qualifiers);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    Assert.assertEquals(1, result.size());<a name="line.476"></a>
-<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>  /**<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * Getting data from memstore only<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @throws IOException<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   */<a name="line.482"></a>
-<span class="sourceLineNo">483</span>  @Test<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  public void testGet_FromMemStoreOnly() throws IOException {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    init(this.name.getMethodName());<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>    //Put data in memstore<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    this.store.add(new KeyValue(row, family, qf3, 1, (byte[])null), null);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    this.store.add(new KeyValue(row, family, qf4, 1, (byte[])null), null);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    this.store.add(new KeyValue(row, family, qf5, 1, (byte[])null), null);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    this.store.add(new KeyValue(row, family, qf6, 1, (byte[])null), null);<a name="line.493"></a>
-<span class="sourceLineNo">494</span><a name="line.494"></a>
-<span class="sourceLineNo">495</span>    //Get<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        get.getRow(), qualifiers);<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    //Compare<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    assertCheck();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  }<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>   * Getting data from files only<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @throws IOException<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   */<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  @Test<a name="line.507"></a>
-<span class="sourceLineNo">508</span>  public void testGet_FromFilesOnly() throws IOException {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    init(this.name.getMethodName());<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>    //Put data in memstore<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    //flush<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    flush(1);<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>    //Add more data<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    this.store.add(new KeyValue(row, family, qf3

<TRUNCATED>

[03/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html
index a1d9f98..9ce2441 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html
@@ -28,1446 +28,1556 @@
 <span class="sourceLineNo">020</span>package org.apache.hadoop.hbase.regionserver;<a name="line.20"></a>
 <span class="sourceLineNo">021</span><a name="line.21"></a>
 <span class="sourceLineNo">022</span>import static org.junit.Assert.assertEquals;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.junit.Assert.assertNull;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.junit.Assert.assertTrue;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import static org.mockito.Matchers.any;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import static org.mockito.Mockito.spy;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import static org.mockito.Mockito.times;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import static org.mockito.Mockito.verify;<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.io.IOException;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.lang.ref.SoftReference;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.security.PrivilegedExceptionAction;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.ArrayList;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.Arrays;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.Collection;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.Collections;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.Iterator;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.List;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.ListIterator;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import java.util.NavigableSet;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import java.util.TreeSet;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import java.util.concurrent.ConcurrentSkipListSet;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.concurrent.CountDownLatch;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import java.util.concurrent.ExecutorService;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import java.util.concurrent.Executors;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import java.util.concurrent.TimeUnit;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.util.function.Consumer;<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.commons.logging.Log;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.commons.logging.LogFactory;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.fs.FileStatus;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FileSystem;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FilterFileSystem;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.LocalFileSystem;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.Path;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.permission.FsPermission;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.Cell;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HConstants;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.TableName;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Get;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.security.User;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.util.Progressable;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.junit.After;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.junit.Assert;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.junit.Before;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.junit.Rule;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.junit.Test;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.junit.experimental.categories.Category;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.junit.rules.TestName;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.mockito.Mockito;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>import com.google.common.collect.Lists;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>/**<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * Test class for the Store<a name="line.110"></a>
-<span class="sourceLineNo">111</span> */<a name="line.111"></a>
-<span class="sourceLineNo">112</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.112"></a>
-<span class="sourceLineNo">113</span>public class TestStore {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private static final Log LOG = LogFactory.getLog(TestStore.class);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  @Rule public TestName name = new TestName();<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  HStore store;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  byte [] table = Bytes.toBytes("table");<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  byte [] family = Bytes.toBytes("family");<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  byte [] row = Bytes.toBytes("row");<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  byte [] row2 = Bytes.toBytes("row2");<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  byte [] qf1 = Bytes.toBytes("qf1");<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  byte [] qf2 = Bytes.toBytes("qf2");<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  byte [] qf3 = Bytes.toBytes("qf3");<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  byte [] qf4 = Bytes.toBytes("qf4");<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  byte [] qf5 = Bytes.toBytes("qf5");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  byte [] qf6 = Bytes.toBytes("qf6");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  NavigableSet&lt;byte[]&gt; qualifiers = new ConcurrentSkipListSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  List&lt;Cell&gt; expected = new ArrayList&lt;&gt;();<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  List&lt;Cell&gt; result = new ArrayList&lt;&gt;();<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  long id = System.currentTimeMillis();<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  Get get = new Get(row);<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private final String DIR = TEST_UTIL.getDataTestDir("TestStore").toString();<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertFalse;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.junit.Assert.assertNull;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.junit.Assert.assertTrue;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import static org.mockito.Matchers.any;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import static org.mockito.Mockito.spy;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import static org.mockito.Mockito.times;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import static org.mockito.Mockito.verify;<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.io.IOException;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.lang.ref.SoftReference;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.security.PrivilegedExceptionAction;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.ArrayList;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.Arrays;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Collection;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.Collections;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.Iterator;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.List;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import java.util.ListIterator;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import java.util.NavigableSet;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import java.util.TreeSet;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import java.util.concurrent.ConcurrentSkipListSet;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.concurrent.CountDownLatch;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.ExecutorService;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import java.util.concurrent.Executors;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import java.util.concurrent.TimeUnit;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import java.util.function.Consumer;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.commons.logging.Log;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.commons.logging.LogFactory;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.conf.Configuration;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FileStatus;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.FileSystem;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.FilterFileSystem;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.LocalFileSystem;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.Path;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.fs.permission.FsPermission;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.Cell;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HConstants;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.TableName;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Get;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.security.User;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.util.Progressable;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.junit.After;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.junit.Assert;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.junit.Before;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.junit.Rule;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.junit.Test;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.junit.experimental.categories.Category;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.junit.rules.TestName;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.mockito.Mockito;<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>import com.google.common.collect.Lists;<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> * Test class for the Store<a name="line.111"></a>
+<span class="sourceLineNo">112</span> */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.113"></a>
+<span class="sourceLineNo">114</span>public class TestStore {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static final Log LOG = LogFactory.getLog(TestStore.class);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  @Rule public TestName name = new TestName();<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  HStore store;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  byte [] table = Bytes.toBytes("table");<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  byte [] family = Bytes.toBytes("family");<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>  byte [] row = Bytes.toBytes("row");<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  byte [] row2 = Bytes.toBytes("row2");<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  byte [] qf1 = Bytes.toBytes("qf1");<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  byte [] qf2 = Bytes.toBytes("qf2");<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  byte [] qf3 = Bytes.toBytes("qf3");<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  byte [] qf4 = Bytes.toBytes("qf4");<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  byte [] qf5 = Bytes.toBytes("qf5");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  byte [] qf6 = Bytes.toBytes("qf6");<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  NavigableSet&lt;byte[]&gt; qualifiers = new ConcurrentSkipListSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  List&lt;Cell&gt; expected = new ArrayList&lt;&gt;();<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  List&lt;Cell&gt; result = new ArrayList&lt;&gt;();<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  long id = System.currentTimeMillis();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  Get get = new Get(row);<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private final String DIR = TEST_UTIL.getDataTestDir("TestStore").toString();<a name="line.140"></a>
 <span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  /**<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * Setup<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * @throws IOException<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  @Before<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  public void setUp() throws IOException {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    qualifiers.add(qf1);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    qualifiers.add(qf3);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    qualifiers.add(qf5);<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>    Iterator&lt;byte[]&gt; iter = qualifiers.iterator();<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    while(iter.hasNext()){<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      byte [] next = iter.next();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      expected.add(new KeyValue(row, family, next, 1, (byte[])null));<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      get.addColumn(family, next);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>  private void init(String methodName) throws IOException {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    init(methodName, TEST_UTIL.getConfiguration());<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  private void init(String methodName, Configuration conf)<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  throws IOException {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    // some of the tests write 4 versions and then flush<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    // (with HBASE-4241, lower versions are collected on flush)<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    hcd.setMaxVersions(4);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    init(methodName, conf, hcd);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  private void init(String methodName, Configuration conf,<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      HColumnDescriptor hcd) throws IOException {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(table));<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    init(methodName, conf, htd, hcd);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  }<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      HColumnDescriptor hcd) throws IOException {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    return init(methodName, conf, htd, hcd, null);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  @SuppressWarnings("deprecation")<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      HColumnDescriptor hcd, MyScannerHook hook) throws IOException {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    //Setting up a Store<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    Path basedir = new Path(DIR+methodName);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    Path tableDir = FSUtils.getTableDir(basedir, htd.getTableName());<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    final Path logdir = new Path(basedir, AbstractFSWALProvider.getWALDirectoryName(methodName));<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>    FileSystem fs = FileSystem.get(conf);<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>    fs.delete(logdir, true);<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>    if (htd.hasFamily(hcd.getName())) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      htd.modifyFamily(hcd);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    } else {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      htd.addFamily(hcd);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false, MemStoreLABImpl.CHUNK_SIZE_DEFAULT, 1, 0, null);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    final Configuration walConf = new Configuration(conf);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    FSUtils.setRootDir(walConf, basedir);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    final WALFactory wals = new WALFactory(walConf, null, methodName);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    HRegion region = new HRegion(tableDir, wals.getWAL(info.getEncodedNameAsBytes(),<a name="line.206"></a>
-<span class="sourceLineNo">207</span>            info.getTable().getNamespace()), fs, conf, info, htd, null);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    if (hook == null) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      store = new HStore(region, hcd, conf);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    } else {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      store = new MyStore(region, hcd, conf, hook);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    return store;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  }<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  /**<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * Test we do not lose data if we fail a flush and then close.<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * Part of HBase-10466<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * @throws Exception<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   */<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  @Test<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  public void testFlushSizeAccounting() throws Exception {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    LOG.info("Setting up a faulty file system that cannot write in " +<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      this.name.getMethodName());<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    // Only retry once.<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    conf.setInt("hbase.hstore.flush.retries.number", 1);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    User user = User.createUserForTesting(conf, this.name.getMethodName(),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      new String[]{"foo"});<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // Inject our faulty LocalFileSystem<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    conf.setClass("fs.file.impl", FaultyFileSystem.class, FileSystem.class);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    user.runAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      public Object run() throws Exception {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        // Make sure it worked (above is sensitive to caching details in hadoop core)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        FileSystem fs = FileSystem.get(conf);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        Assert.assertEquals(FaultyFileSystem.class, fs.getClass());<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        FaultyFileSystem ffs = (FaultyFileSystem)fs;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>        // Initialize region<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        init(name.getMethodName(), conf);<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span>        MemstoreSize size = store.memstore.getFlushableSize();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        Assert.assertEquals(0, size.getDataSize());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        LOG.info("Adding some data");<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        MemstoreSize kvSize = new MemstoreSize();<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        store.add(new KeyValue(row, family, qf1, 1, (byte[])null), kvSize);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        size = store.memstore.getFlushableSize();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        Assert.assertEquals(kvSize, size);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        // Flush.  Bug #1 from HBASE-10466.  Make sure size calculation on failed flush is right.<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        try {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          LOG.info("Flushing");<a name="line.252"></a>
-<span class="sourceLineNo">253</span>          flushStore(store, id++);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          Assert.fail("Didn't bubble up IOE!");<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        } catch (IOException ioe) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>          Assert.assertTrue(ioe.getMessage().contains("Fault injected"));<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        size = store.memstore.getFlushableSize();<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        Assert.assertEquals(kvSize, size);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        MemstoreSize kvSize2 = new MemstoreSize();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        store.add(new KeyValue(row, family, qf2, 2, (byte[])null), kvSize2);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        // Even though we add a new kv, we expect the flushable size to be 'same' since we have<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        // not yet cleared the snapshot -- the above flush failed.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        Assert.assertEquals(kvSize, size);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        ffs.fault.set(false);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        flushStore(store, id++);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        size = store.memstore.getFlushableSize();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        // Size should be the foreground kv size.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        Assert.assertEquals(kvSize2, size);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        flushStore(store, id++);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        size = store.memstore.getFlushableSize();<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        assertEquals(0, size.getDataSize());<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        assertEquals(0, size.getHeapSize());<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        return null;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    });<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  }<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  /**<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   * Verify that compression and data block encoding are respected by the<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * Store.createWriterInTmp() method, used on store flush.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   */<a name="line.282"></a>
-<span class="sourceLineNo">283</span>  @Test<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  public void testCreateWriter() throws Exception {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    Configuration conf = HBaseConfiguration.create();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    FileSystem fs = FileSystem.get(conf);<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    hcd.setCompressionType(Compression.Algorithm.GZ);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    hcd.setDataBlockEncoding(DataBlockEncoding.DIFF);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    init(name.getMethodName(), conf, hcd);<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>    // Test createWriterInTmp()<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    StoreFileWriter writer = store.createWriterInTmp(4, hcd.getCompressionType(), false, true, false);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    Path path = writer.getPath();<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    writer.append(new KeyValue(row, family, qf1, Bytes.toBytes(1)));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    writer.append(new KeyValue(row, family, qf2, Bytes.toBytes(2)));<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    writer.append(new KeyValue(row2, family, qf1, Bytes.toBytes(3)));<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    writer.append(new KeyValue(row2, family, qf2, Bytes.toBytes(4)));<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    writer.close();<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>    // Verify that compression and encoding settings are respected<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    HFile.Reader reader = HFile.createReader(fs, path, new CacheConfig(conf), true, conf);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    Assert.assertEquals(hcd.getCompressionType(), reader.getCompressionAlgorithm());<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    Assert.assertEquals(hcd.getDataBlockEncoding(), reader.getDataBlockEncoding());<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    reader.close();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  /**<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * Setup<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * @throws IOException<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   */<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  @Before<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  public void setUp() throws IOException {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    qualifiers.add(qf1);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    qualifiers.add(qf3);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    qualifiers.add(qf5);<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    Iterator&lt;byte[]&gt; iter = qualifiers.iterator();<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    while(iter.hasNext()){<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      byte [] next = iter.next();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      expected.add(new KeyValue(row, family, next, 1, (byte[])null));<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      get.addColumn(family, next);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>  private void init(String methodName) throws IOException {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    init(methodName, TEST_UTIL.getConfiguration());<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  private Store init(String methodName, Configuration conf)<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  throws IOException {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    // some of the tests write 4 versions and then flush<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    // (with HBASE-4241, lower versions are collected on flush)<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    hcd.setMaxVersions(4);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    return init(methodName, conf, hcd);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>  private Store init(String methodName, Configuration conf,<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      HColumnDescriptor hcd) throws IOException {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(table));<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    return init(methodName, conf, htd, hcd);<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>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      HColumnDescriptor hcd) throws IOException {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    return init(methodName, conf, htd, hcd, null);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @SuppressWarnings("deprecation")<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      HColumnDescriptor hcd, MyScannerHook hook) throws IOException {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    return init(methodName, conf, htd, hcd, hook, false);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  @SuppressWarnings("deprecation")<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      HColumnDescriptor hcd, MyScannerHook hook, boolean switchToPread) throws IOException {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    //Setting up a Store<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    Path basedir = new Path(DIR+methodName);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    Path tableDir = FSUtils.getTableDir(basedir, htd.getTableName());<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    final Path logdir = new Path(basedir, AbstractFSWALProvider.getWALDirectoryName(methodName));<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>    FileSystem fs = FileSystem.get(conf);<a name="line.198"></a>
+<span class="sourceLineNo">199</span><a name="line.199"></a>
+<span class="sourceLineNo">200</span>    fs.delete(logdir, true);<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    if (htd.hasFamily(hcd.getName())) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      htd.modifyFamily(hcd);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    } else {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      htd.addFamily(hcd);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false,<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      MemStoreLABImpl.CHUNK_SIZE_DEFAULT, 1, 0, null);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    final Configuration walConf = new Configuration(conf);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    FSUtils.setRootDir(walConf, basedir);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    final WALFactory wals = new WALFactory(walConf, null, methodName);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    HRegion region = new HRegion(tableDir, wals.getWAL(info.getEncodedNameAsBytes(),<a name="line.213"></a>
+<span class="sourceLineNo">214</span>            info.getTable().getNamespace()), fs, conf, info, htd, null);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    if (hook == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      store = new HStore(region, hcd, conf);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    } else {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      store = new MyStore(region, hcd, conf, hook, switchToPread);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    return store;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  /**<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * Test we do not lose data if we fail a flush and then close.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * Part of HBase-10466<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   * @throws Exception<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   */<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  @Test<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  public void testFlushSizeAccounting() throws Exception {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    LOG.info("Setting up a faulty file system that cannot write in " +<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      this.name.getMethodName());<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    // Only retry once.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    conf.setInt("hbase.hstore.flush.retries.number", 1);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    User user = User.createUserForTesting(conf, this.name.getMethodName(),<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      new String[]{"foo"});<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    // Inject our faulty LocalFileSystem<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    conf.setClass("fs.file.impl", FaultyFileSystem.class, FileSystem.class);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    user.runAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      @Override<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      public Object run() throws Exception {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        // Make sure it worked (above is sensitive to caching details in hadoop core)<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        FileSystem fs = FileSystem.get(conf);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        Assert.assertEquals(FaultyFileSystem.class, fs.getClass());<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        FaultyFileSystem ffs = (FaultyFileSystem)fs;<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>        // Initialize region<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        init(name.getMethodName(), conf);<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>        MemstoreSize size = store.memstore.getFlushableSize();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        Assert.assertEquals(0, size.getDataSize());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        LOG.info("Adding some data");<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        MemstoreSize kvSize = new MemstoreSize();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        store.add(new KeyValue(row, family, qf1, 1, (byte[])null), kvSize);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        size = store.memstore.getFlushableSize();<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        Assert.assertEquals(kvSize, size);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        // Flush.  Bug #1 from HBASE-10466.  Make sure size calculation on failed flush is right.<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        try {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          LOG.info("Flushing");<a name="line.259"></a>
+<span class="sourceLineNo">260</span>          flushStore(store, id++);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>          Assert.fail("Didn't bubble up IOE!");<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        } catch (IOException ioe) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          Assert.assertTrue(ioe.getMessage().contains("Fault injected"));<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        size = store.memstore.getFlushableSize();<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        Assert.assertEquals(kvSize, size);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        MemstoreSize kvSize2 = new MemstoreSize();<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        store.add(new KeyValue(row, family, qf2, 2, (byte[])null), kvSize2);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        // Even though we add a new kv, we expect the flushable size to be 'same' since we have<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        // not yet cleared the snapshot -- the above flush failed.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        Assert.assertEquals(kvSize, size);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        ffs.fault.set(false);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        flushStore(store, id++);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        size = store.memstore.getFlushableSize();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        // Size should be the foreground kv size.<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        Assert.assertEquals(kvSize2, size);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        flushStore(store, id++);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        size = store.memstore.getFlushableSize();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        assertEquals(0, size.getDataSize());<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        assertEquals(0, size.getHeapSize());<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        return null;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    });<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  }<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>  /**<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * Verify that compression and data block encoding are respected by the<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * Store.createWriterInTmp() method, used on store flush.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   */<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  @Test<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  public void testCreateWriter() throws Exception {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    Configuration conf = HBaseConfiguration.create();<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    FileSystem fs = FileSystem.get(conf);<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    hcd.setCompressionType(Compression.Algorithm.GZ);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    hcd.setDataBlockEncoding(DataBlockEncoding.DIFF);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    init(name.getMethodName(), conf, hcd);<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // Test createWriterInTmp()<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    StoreFileWriter writer = store.createWriterInTmp(4, hcd.getCompressionType(), false, true, false);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    Path path = writer.getPath();<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    writer.append(new KeyValue(row, family, qf1, Bytes.toBytes(1)));<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    writer.append(new KeyValue(row, family, qf2, Bytes.toBytes(2)));<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    writer.append(new KeyValue(row2, family, qf1, Bytes.toBytes(3)));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    writer.append(new KeyValue(row2, family, qf2, Bytes.toBytes(4)));<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    writer.close();<a name="line.307"></a>
 <span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  @Test<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  public void testDeleteExpiredStoreFiles() throws Exception {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    testDeleteExpiredStoreFiles(0);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    testDeleteExpiredStoreFiles(1);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  /*<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * @param minVersions the MIN_VERSIONS for the column family<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   */<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public void testDeleteExpiredStoreFiles(int minVersions) throws Exception {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    int storeFileNum = 4;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    int ttl = 4;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    IncrementingEnvironmentEdge edge = new IncrementingEnvironmentEdge();<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    EnvironmentEdgeManagerTestHelper.injectEdge(edge);<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    Configuration conf = HBaseConfiguration.create();<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    // Enable the expired store file deletion<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    conf.setBoolean("hbase.store.delete.expired.storefile", true);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    // Set the compaction threshold higher to avoid normal compactions.<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY, 5);<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    hcd.setMinVersions(minVersions);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    hcd.setTimeToLive(ttl);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    init(name.getMethodName() + "-" + minVersions, conf, hcd);<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>    long storeTtl = this.store.getScanInfo().getTtl();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    long sleepTime = storeTtl / storeFileNum;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    long timeStamp;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    // There are 4 store files and the max time stamp difference among these<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    // store files will be (this.store.ttl / storeFileNum)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      LOG.info("Adding some data for the store file #" + i);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      timeStamp = EnvironmentEdgeManager.currentTime();<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      this.store.add(new KeyValue(row, family, qf1, timeStamp, (byte[]) null), null);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      this.store.add(new KeyValue(row, family, qf2, timeStamp, (byte[]) null), null);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      this.store.add(new KeyValue(row, family, qf3, timeStamp, (byte[]) null), null);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      flush(i);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      edge.incrementTime(sleepTime);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    }<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>    // Verify the total number of store files<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    Assert.assertEquals(storeFileNum, this.store.getStorefiles().size());<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>     // Each call will find one expired store file and delete it before compaction happens.<a name="line.353"></a>
-<span class="sourceLineNo">354</span>     // There will be no compaction due to threshold above. Last file will not be replaced.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    for (int i = 1; i &lt;= storeFileNum - 1; i++) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      // verify the expired store file.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      assertNull(this.store.requestCompaction());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      // Ensure i files are gone.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      if (minVersions == 0) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        assertEquals(storeFileNum - i, sfs.size());<a name="line.361"></a>
-<span class="sourceLineNo">362</span>        // Ensure only non-expired files remain.<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        for (StoreFile sf : sfs) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>          assertTrue(sf.getReader().getMaxTimestamp() &gt;= (edge.currentTime() - storeTtl));<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      } else {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        assertEquals(storeFileNum, sfs.size());<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      // Let the next store file expired.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      edge.incrementTime(sleepTime);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    }<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    assertNull(this.store.requestCompaction());<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>    Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    // Assert the last expired file is not removed.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    if (minVersions == 0) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      assertEquals(1, sfs.size());<a name="line.377"></a>
+<span class="sourceLineNo">309</span>    // Verify that compression and encoding settings are respected<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    HFile.Reader reader = HFile.createReader(fs, path, new CacheConfig(conf), true, conf);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    Assert.assertEquals(hcd.getCompressionType(), reader.getCompressionAlgorithm());<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    Assert.assertEquals(hcd.getDataBlockEncoding(), reader.getDataBlockEncoding());<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    reader.close();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  @Test<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public void testDeleteExpiredStoreFiles() throws Exception {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    testDeleteExpiredStoreFiles(0);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    testDeleteExpiredStoreFiles(1);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  /*<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   * @param minVersions the MIN_VERSIONS for the column family<a name="line.323"></a>
+<span class="sourceLineNo">324</span>   */<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public void testDeleteExpiredStoreFiles(int minVersions) throws Exception {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    int storeFileNum = 4;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    int ttl = 4;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    IncrementingEnvironmentEdge edge = new IncrementingEnvironmentEdge();<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    EnvironmentEdgeManagerTestHelper.injectEdge(edge);<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>    Configuration conf = HBaseConfiguration.create();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    // Enable the expired store file deletion<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    conf.setBoolean("hbase.store.delete.expired.storefile", true);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    // Set the compaction threshold higher to avoid normal compactions.<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY, 5);<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    hcd.setMinVersions(minVersions);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    hcd.setTimeToLive(ttl);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    init(name.getMethodName() + "-" + minVersions, conf, hcd);<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    long storeTtl = this.store.getScanInfo().getTtl();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    long sleepTime = storeTtl / storeFileNum;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    long timeStamp;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    // There are 4 store files and the max time stamp difference among these<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // store files will be (this.store.ttl / storeFileNum)<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      LOG.info("Adding some data for the store file #" + i);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      timeStamp = EnvironmentEdgeManager.currentTime();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      this.store.add(new KeyValue(row, family, qf1, timeStamp, (byte[]) null), null);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      this.store.add(new KeyValue(row, family, qf2, timeStamp, (byte[]) null), null);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      this.store.add(new KeyValue(row, family, qf3, timeStamp, (byte[]) null), null);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      flush(i);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      edge.incrementTime(sleepTime);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>    // Verify the total number of store files<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    Assert.assertEquals(storeFileNum, this.store.getStorefiles().size());<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>     // Each call will find one expired store file and delete it before compaction happens.<a name="line.360"></a>
+<span class="sourceLineNo">361</span>     // There will be no compaction due to threshold above. Last file will not be replaced.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    for (int i = 1; i &lt;= storeFileNum - 1; i++) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      // verify the expired store file.<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      assertNull(this.store.requestCompaction());<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      // Ensure i files are gone.<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      if (minVersions == 0) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        assertEquals(storeFileNum - i, sfs.size());<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        // Ensure only non-expired files remain.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        for (StoreFile sf : sfs) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>          assertTrue(sf.getReader().getMaxTimestamp() &gt;= (edge.currentTime() - storeTtl));<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        }<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      } else {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        assertEquals(storeFileNum, sfs.size());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      // Let the next store file expired.<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      edge.incrementTime(sleepTime);<a name="line.377"></a>
 <span class="sourceLineNo">378</span>    }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    long ts = sfs.iterator().next().getReader().getMaxTimestamp();<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    assertTrue(ts &lt; (edge.currentTime() - storeTtl));<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    for (StoreFile sf : sfs) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      sf.closeReader(true);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  @Test<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public void testLowestModificationTime() throws Exception {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    Configuration conf = HBaseConfiguration.create();<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    FileSystem fs = FileSystem.get(conf);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    // Initialize region<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    init(name.getMethodName(), conf);<a name="line.392"></a>
+<span class="sourceLineNo">379</span>    assertNull(this.store.requestCompaction());<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>    Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    // Assert the last expired file is not removed.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    if (minVersions == 0) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      assertEquals(1, sfs.size());<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    }<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    long ts = sfs.iterator().next().getReader().getMaxTimestamp();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    assertTrue(ts &lt; (edge.currentTime() - storeTtl));<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>    for (StoreFile sf : sfs) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      sf.closeReader(true);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    }<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  }<a name="line.392"></a>
 <span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    int storeFileNum = 4;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      LOG.info("Adding some data for the store file #"+i);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      this.store.add(new KeyValue(row, family, qf1, i, (byte[])null), null);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      this.store.add(new KeyValue(row, family, qf2, i, (byte[])null), null);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      this.store.add(new KeyValue(row, family, qf3, i, (byte[])null), null);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      flush(i);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    // after flush; check the lowest time stamp<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    long lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    long lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    Assert.assertEquals(lowestTimeStampFromManager,lowestTimeStampFromFS);<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>    // after compact; check the lowest time stamp<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    store.compact(store.requestCompaction(), NoLimitThroughputController.INSTANCE, null);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    Assert.assertEquals(lowestTimeStampFromManager, lowestTimeStampFromFS);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
+<span class="sourceLineNo">394</span>  @Test<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  public void testLowestModificationTime() throws Exception {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    Configuration conf = HBaseConfiguration.create();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    FileSystem fs = FileSystem.get(conf);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Initialize region<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    init(name.getMethodName(), conf);<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    int storeFileNum = 4;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      LOG.info("Adding some data for the store file #"+i);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      this.store.add(new KeyValue(row, family, qf1, i, (byte[])null), null);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      this.store.add(new KeyValue(row, family, qf2, i, (byte[])null), null);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      this.store.add(new KeyValue(row, family, qf3, i, (byte[])null), null);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      flush(i);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    // after flush; check the lowest time stamp<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    long lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    long lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    Assert.assertEquals(lowestTimeStampFromManager,lowestTimeStampFromFS);<a name="line.412"></a>
 <span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  private static long getLowestTimeStampFromFS(FileSystem fs,<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      final Collection&lt;StoreFile&gt; candidates) throws IOException {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    long minTs = Long.MAX_VALUE;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    if (candidates.isEmpty()) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      return minTs;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    }<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    Path[] p = new Path[candidates.size()];<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    int i = 0;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    for (StoreFile sf : candidates) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      p[i] = sf.getPath();<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      ++i;<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    }<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>    FileStatus[] stats = fs.listStatus(p);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    if (stats == null || stats.length == 0) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      return minTs;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    for (FileStatus s : stats) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      minTs = Math.min(minTs, s.getModificationTime());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    return minTs;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  // Get tests<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>  private static final int BLOCKSIZE_SMALL = 8192;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Test for hbase-1686.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @throws IOException<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  @Test<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  public void testEmptyStoreFile() throws IOException {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    init(this.name.getMethodName());<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    // Write a store file.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    flush(1);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    // Now put in place an empty store file.  Its a little tricky.  Have to<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // do manually with hacked in sequence id.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    StoreFile f = this.store.getStorefiles().iterator().next();<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    Path storedir = f.getPath().getParent();<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    long seqid = f.getMaxSequenceId();<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    Configuration c = HBaseConfiguration.create();<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    FileSystem fs = FileSystem.get(c);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    HFileContext meta = new HFileContextBuilder().withBlockSize(BLOCKSIZE_SMALL).build();<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    StoreFileWriter w = new StoreFileWriter.Builder(c, new CacheConfig(c),<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        fs)<a name="line.462"></a>
-<span class="sourceLineNo">463</span>            .withOutputDir(storedir)<a name="line.463"></a>
-<span class="sourceLineNo">464</span>            .withFileContext(meta)<a name="line.464"></a>
-<span class="sourceLineNo">465</span>            .build();<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    w.appendMetadata(seqid + 1, false);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    w.close();<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    this.store.close();<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    // Reopen it... should pick up two files<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    this.store = new HStore(this.store.getHRegion(), this.store.getFamily(), c);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    Assert.assertEquals(2, this.store.getStorefilesCount());<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        get.getRow(),<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        qualifiers);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    Assert.assertEquals(1, result.size());<a name="line.476"></a>
-<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>  /**<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * Getting data from memstore only<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @throws IOException<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   */<a name="line.482"></a>
-<span class="sourceLineNo">483</span>  @Test<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  public void testGet_FromMemStoreOnly() throws IOException {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    init(this.name.getMethodName());<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>    //Put data in memstore<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    this.store.add(new KeyValue(row, family, qf3, 1, (byte[])null), null);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    this.store.add(new KeyValue(row, family, qf4, 1, (byte[])null), null);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    this.store.add(new KeyValue(row, family, qf5, 1, (byte[])null), null);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    this.store.add(new KeyValue(row, family, qf6, 1, (byte[])null), null);<a name="line.493"></a>
-<span class="sourceLineNo">494</span><a name="line.494"></a>
-<span class="sourceLineNo">495</span>    //Get<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        get.getRow(), qualifiers);<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    //Compare<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    assertCheck();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  }<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>   * Getting data from files only<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @throws IOException<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   */<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  @Test<a name="line.507"></a>
-<span class="sourceLineNo">508</span>  public void testGet_FromFilesOnly() throws IOException {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    init(this.name.getMethodName());<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>    //Put data in memstore<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    //flush<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    flush(1);<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>    //Add more data<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    this

<TRUNCATED>

[07/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStoreWithCustomCompactor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStoreWithCustomCompactor.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStoreWithCustomCompactor.html
index a1d9f98..9ce2441 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStoreWithCustomCompactor.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStoreWithCustomCompactor.html
@@ -28,1446 +28,1556 @@
 <span class="sourceLineNo">020</span>package org.apache.hadoop.hbase.regionserver;<a name="line.20"></a>
 <span class="sourceLineNo">021</span><a name="line.21"></a>
 <span class="sourceLineNo">022</span>import static org.junit.Assert.assertEquals;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.junit.Assert.assertNull;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.junit.Assert.assertTrue;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import static org.mockito.Matchers.any;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import static org.mockito.Mockito.spy;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import static org.mockito.Mockito.times;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import static org.mockito.Mockito.verify;<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.io.IOException;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.lang.ref.SoftReference;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.security.PrivilegedExceptionAction;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.ArrayList;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.Arrays;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.Collection;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.Collections;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.Iterator;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.List;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.ListIterator;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import java.util.NavigableSet;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import java.util.TreeSet;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import java.util.concurrent.ConcurrentSkipListSet;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.concurrent.CountDownLatch;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import java.util.concurrent.ExecutorService;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import java.util.concurrent.Executors;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import java.util.concurrent.TimeUnit;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.util.function.Consumer;<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.commons.logging.Log;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.commons.logging.LogFactory;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.fs.FileStatus;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FileSystem;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FilterFileSystem;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.LocalFileSystem;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.Path;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.permission.FsPermission;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.Cell;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HConstants;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.TableName;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Get;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.security.User;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.util.Progressable;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.junit.After;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.junit.Assert;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.junit.Before;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.junit.Rule;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.junit.Test;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.junit.experimental.categories.Category;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.junit.rules.TestName;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.mockito.Mockito;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>import com.google.common.collect.Lists;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>/**<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * Test class for the Store<a name="line.110"></a>
-<span class="sourceLineNo">111</span> */<a name="line.111"></a>
-<span class="sourceLineNo">112</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.112"></a>
-<span class="sourceLineNo">113</span>public class TestStore {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private static final Log LOG = LogFactory.getLog(TestStore.class);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  @Rule public TestName name = new TestName();<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  HStore store;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  byte [] table = Bytes.toBytes("table");<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  byte [] family = Bytes.toBytes("family");<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  byte [] row = Bytes.toBytes("row");<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  byte [] row2 = Bytes.toBytes("row2");<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  byte [] qf1 = Bytes.toBytes("qf1");<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  byte [] qf2 = Bytes.toBytes("qf2");<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  byte [] qf3 = Bytes.toBytes("qf3");<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  byte [] qf4 = Bytes.toBytes("qf4");<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  byte [] qf5 = Bytes.toBytes("qf5");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  byte [] qf6 = Bytes.toBytes("qf6");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  NavigableSet&lt;byte[]&gt; qualifiers = new ConcurrentSkipListSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  List&lt;Cell&gt; expected = new ArrayList&lt;&gt;();<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  List&lt;Cell&gt; result = new ArrayList&lt;&gt;();<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  long id = System.currentTimeMillis();<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  Get get = new Get(row);<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private final String DIR = TEST_UTIL.getDataTestDir("TestStore").toString();<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertFalse;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.junit.Assert.assertNull;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.junit.Assert.assertTrue;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import static org.mockito.Matchers.any;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import static org.mockito.Mockito.spy;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import static org.mockito.Mockito.times;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import static org.mockito.Mockito.verify;<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.io.IOException;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.lang.ref.SoftReference;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.security.PrivilegedExceptionAction;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.ArrayList;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.Arrays;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Collection;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.Collections;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.Iterator;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.List;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import java.util.ListIterator;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import java.util.NavigableSet;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import java.util.TreeSet;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import java.util.concurrent.ConcurrentSkipListSet;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.concurrent.CountDownLatch;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.ExecutorService;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import java.util.concurrent.Executors;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import java.util.concurrent.TimeUnit;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import java.util.function.Consumer;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.commons.logging.Log;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.commons.logging.LogFactory;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.conf.Configuration;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FileStatus;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.FileSystem;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.FilterFileSystem;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.LocalFileSystem;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.Path;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.fs.permission.FsPermission;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.Cell;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HConstants;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.TableName;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Get;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.security.User;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.util.Progressable;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.junit.After;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.junit.Assert;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.junit.Before;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.junit.Rule;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.junit.Test;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.junit.experimental.categories.Category;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.junit.rules.TestName;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.mockito.Mockito;<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>import com.google.common.collect.Lists;<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> * Test class for the Store<a name="line.111"></a>
+<span class="sourceLineNo">112</span> */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.113"></a>
+<span class="sourceLineNo">114</span>public class TestStore {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static final Log LOG = LogFactory.getLog(TestStore.class);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  @Rule public TestName name = new TestName();<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  HStore store;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  byte [] table = Bytes.toBytes("table");<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  byte [] family = Bytes.toBytes("family");<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>  byte [] row = Bytes.toBytes("row");<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  byte [] row2 = Bytes.toBytes("row2");<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  byte [] qf1 = Bytes.toBytes("qf1");<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  byte [] qf2 = Bytes.toBytes("qf2");<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  byte [] qf3 = Bytes.toBytes("qf3");<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  byte [] qf4 = Bytes.toBytes("qf4");<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  byte [] qf5 = Bytes.toBytes("qf5");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  byte [] qf6 = Bytes.toBytes("qf6");<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  NavigableSet&lt;byte[]&gt; qualifiers = new ConcurrentSkipListSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  List&lt;Cell&gt; expected = new ArrayList&lt;&gt;();<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  List&lt;Cell&gt; result = new ArrayList&lt;&gt;();<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  long id = System.currentTimeMillis();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  Get get = new Get(row);<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private final String DIR = TEST_UTIL.getDataTestDir("TestStore").toString();<a name="line.140"></a>
 <span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  /**<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * Setup<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * @throws IOException<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  @Before<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  public void setUp() throws IOException {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    qualifiers.add(qf1);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    qualifiers.add(qf3);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    qualifiers.add(qf5);<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>    Iterator&lt;byte[]&gt; iter = qualifiers.iterator();<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    while(iter.hasNext()){<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      byte [] next = iter.next();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      expected.add(new KeyValue(row, family, next, 1, (byte[])null));<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      get.addColumn(family, next);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>  private void init(String methodName) throws IOException {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    init(methodName, TEST_UTIL.getConfiguration());<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  private void init(String methodName, Configuration conf)<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  throws IOException {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    // some of the tests write 4 versions and then flush<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    // (with HBASE-4241, lower versions are collected on flush)<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    hcd.setMaxVersions(4);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    init(methodName, conf, hcd);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  private void init(String methodName, Configuration conf,<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      HColumnDescriptor hcd) throws IOException {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(table));<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    init(methodName, conf, htd, hcd);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  }<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      HColumnDescriptor hcd) throws IOException {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    return init(methodName, conf, htd, hcd, null);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  @SuppressWarnings("deprecation")<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      HColumnDescriptor hcd, MyScannerHook hook) throws IOException {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    //Setting up a Store<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    Path basedir = new Path(DIR+methodName);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    Path tableDir = FSUtils.getTableDir(basedir, htd.getTableName());<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    final Path logdir = new Path(basedir, AbstractFSWALProvider.getWALDirectoryName(methodName));<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>    FileSystem fs = FileSystem.get(conf);<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>    fs.delete(logdir, true);<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>    if (htd.hasFamily(hcd.getName())) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      htd.modifyFamily(hcd);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    } else {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      htd.addFamily(hcd);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false, MemStoreLABImpl.CHUNK_SIZE_DEFAULT, 1, 0, null);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    final Configuration walConf = new Configuration(conf);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    FSUtils.setRootDir(walConf, basedir);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    final WALFactory wals = new WALFactory(walConf, null, methodName);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    HRegion region = new HRegion(tableDir, wals.getWAL(info.getEncodedNameAsBytes(),<a name="line.206"></a>
-<span class="sourceLineNo">207</span>            info.getTable().getNamespace()), fs, conf, info, htd, null);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    if (hook == null) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      store = new HStore(region, hcd, conf);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    } else {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      store = new MyStore(region, hcd, conf, hook);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    return store;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  }<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  /**<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * Test we do not lose data if we fail a flush and then close.<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * Part of HBase-10466<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * @throws Exception<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   */<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  @Test<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  public void testFlushSizeAccounting() throws Exception {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    LOG.info("Setting up a faulty file system that cannot write in " +<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      this.name.getMethodName());<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    // Only retry once.<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    conf.setInt("hbase.hstore.flush.retries.number", 1);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    User user = User.createUserForTesting(conf, this.name.getMethodName(),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      new String[]{"foo"});<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // Inject our faulty LocalFileSystem<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    conf.setClass("fs.file.impl", FaultyFileSystem.class, FileSystem.class);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    user.runAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      public Object run() throws Exception {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        // Make sure it worked (above is sensitive to caching details in hadoop core)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        FileSystem fs = FileSystem.get(conf);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        Assert.assertEquals(FaultyFileSystem.class, fs.getClass());<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        FaultyFileSystem ffs = (FaultyFileSystem)fs;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>        // Initialize region<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        init(name.getMethodName(), conf);<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span>        MemstoreSize size = store.memstore.getFlushableSize();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        Assert.assertEquals(0, size.getDataSize());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        LOG.info("Adding some data");<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        MemstoreSize kvSize = new MemstoreSize();<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        store.add(new KeyValue(row, family, qf1, 1, (byte[])null), kvSize);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        size = store.memstore.getFlushableSize();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        Assert.assertEquals(kvSize, size);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        // Flush.  Bug #1 from HBASE-10466.  Make sure size calculation on failed flush is right.<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        try {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          LOG.info("Flushing");<a name="line.252"></a>
-<span class="sourceLineNo">253</span>          flushStore(store, id++);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          Assert.fail("Didn't bubble up IOE!");<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        } catch (IOException ioe) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>          Assert.assertTrue(ioe.getMessage().contains("Fault injected"));<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        size = store.memstore.getFlushableSize();<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        Assert.assertEquals(kvSize, size);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        MemstoreSize kvSize2 = new MemstoreSize();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        store.add(new KeyValue(row, family, qf2, 2, (byte[])null), kvSize2);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        // Even though we add a new kv, we expect the flushable size to be 'same' since we have<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        // not yet cleared the snapshot -- the above flush failed.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        Assert.assertEquals(kvSize, size);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        ffs.fault.set(false);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        flushStore(store, id++);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        size = store.memstore.getFlushableSize();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        // Size should be the foreground kv size.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        Assert.assertEquals(kvSize2, size);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        flushStore(store, id++);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        size = store.memstore.getFlushableSize();<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        assertEquals(0, size.getDataSize());<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        assertEquals(0, size.getHeapSize());<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        return null;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    });<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  }<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  /**<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   * Verify that compression and data block encoding are respected by the<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * Store.createWriterInTmp() method, used on store flush.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   */<a name="line.282"></a>
-<span class="sourceLineNo">283</span>  @Test<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  public void testCreateWriter() throws Exception {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    Configuration conf = HBaseConfiguration.create();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    FileSystem fs = FileSystem.get(conf);<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    hcd.setCompressionType(Compression.Algorithm.GZ);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    hcd.setDataBlockEncoding(DataBlockEncoding.DIFF);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    init(name.getMethodName(), conf, hcd);<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>    // Test createWriterInTmp()<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    StoreFileWriter writer = store.createWriterInTmp(4, hcd.getCompressionType(), false, true, false);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    Path path = writer.getPath();<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    writer.append(new KeyValue(row, family, qf1, Bytes.toBytes(1)));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    writer.append(new KeyValue(row, family, qf2, Bytes.toBytes(2)));<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    writer.append(new KeyValue(row2, family, qf1, Bytes.toBytes(3)));<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    writer.append(new KeyValue(row2, family, qf2, Bytes.toBytes(4)));<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    writer.close();<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>    // Verify that compression and encoding settings are respected<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    HFile.Reader reader = HFile.createReader(fs, path, new CacheConfig(conf), true, conf);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    Assert.assertEquals(hcd.getCompressionType(), reader.getCompressionAlgorithm());<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    Assert.assertEquals(hcd.getDataBlockEncoding(), reader.getDataBlockEncoding());<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    reader.close();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  /**<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * Setup<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * @throws IOException<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   */<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  @Before<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  public void setUp() throws IOException {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    qualifiers.add(qf1);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    qualifiers.add(qf3);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    qualifiers.add(qf5);<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    Iterator&lt;byte[]&gt; iter = qualifiers.iterator();<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    while(iter.hasNext()){<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      byte [] next = iter.next();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      expected.add(new KeyValue(row, family, next, 1, (byte[])null));<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      get.addColumn(family, next);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>  private void init(String methodName) throws IOException {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    init(methodName, TEST_UTIL.getConfiguration());<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  private Store init(String methodName, Configuration conf)<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  throws IOException {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    // some of the tests write 4 versions and then flush<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    // (with HBASE-4241, lower versions are collected on flush)<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    hcd.setMaxVersions(4);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    return init(methodName, conf, hcd);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>  private Store init(String methodName, Configuration conf,<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      HColumnDescriptor hcd) throws IOException {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(table));<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    return init(methodName, conf, htd, hcd);<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>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      HColumnDescriptor hcd) throws IOException {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    return init(methodName, conf, htd, hcd, null);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @SuppressWarnings("deprecation")<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      HColumnDescriptor hcd, MyScannerHook hook) throws IOException {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    return init(methodName, conf, htd, hcd, hook, false);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  @SuppressWarnings("deprecation")<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      HColumnDescriptor hcd, MyScannerHook hook, boolean switchToPread) throws IOException {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    //Setting up a Store<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    Path basedir = new Path(DIR+methodName);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    Path tableDir = FSUtils.getTableDir(basedir, htd.getTableName());<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    final Path logdir = new Path(basedir, AbstractFSWALProvider.getWALDirectoryName(methodName));<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>    FileSystem fs = FileSystem.get(conf);<a name="line.198"></a>
+<span class="sourceLineNo">199</span><a name="line.199"></a>
+<span class="sourceLineNo">200</span>    fs.delete(logdir, true);<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    if (htd.hasFamily(hcd.getName())) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      htd.modifyFamily(hcd);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    } else {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      htd.addFamily(hcd);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false,<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      MemStoreLABImpl.CHUNK_SIZE_DEFAULT, 1, 0, null);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    final Configuration walConf = new Configuration(conf);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    FSUtils.setRootDir(walConf, basedir);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    final WALFactory wals = new WALFactory(walConf, null, methodName);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    HRegion region = new HRegion(tableDir, wals.getWAL(info.getEncodedNameAsBytes(),<a name="line.213"></a>
+<span class="sourceLineNo">214</span>            info.getTable().getNamespace()), fs, conf, info, htd, null);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    if (hook == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      store = new HStore(region, hcd, conf);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    } else {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      store = new MyStore(region, hcd, conf, hook, switchToPread);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    return store;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  /**<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * Test we do not lose data if we fail a flush and then close.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * Part of HBase-10466<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   * @throws Exception<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   */<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  @Test<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  public void testFlushSizeAccounting() throws Exception {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    LOG.info("Setting up a faulty file system that cannot write in " +<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      this.name.getMethodName());<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    // Only retry once.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    conf.setInt("hbase.hstore.flush.retries.number", 1);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    User user = User.createUserForTesting(conf, this.name.getMethodName(),<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      new String[]{"foo"});<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    // Inject our faulty LocalFileSystem<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    conf.setClass("fs.file.impl", FaultyFileSystem.class, FileSystem.class);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    user.runAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      @Override<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      public Object run() throws Exception {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        // Make sure it worked (above is sensitive to caching details in hadoop core)<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        FileSystem fs = FileSystem.get(conf);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        Assert.assertEquals(FaultyFileSystem.class, fs.getClass());<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        FaultyFileSystem ffs = (FaultyFileSystem)fs;<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>        // Initialize region<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        init(name.getMethodName(), conf);<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>        MemstoreSize size = store.memstore.getFlushableSize();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        Assert.assertEquals(0, size.getDataSize());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        LOG.info("Adding some data");<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        MemstoreSize kvSize = new MemstoreSize();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        store.add(new KeyValue(row, family, qf1, 1, (byte[])null), kvSize);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        size = store.memstore.getFlushableSize();<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        Assert.assertEquals(kvSize, size);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        // Flush.  Bug #1 from HBASE-10466.  Make sure size calculation on failed flush is right.<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        try {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          LOG.info("Flushing");<a name="line.259"></a>
+<span class="sourceLineNo">260</span>          flushStore(store, id++);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>          Assert.fail("Didn't bubble up IOE!");<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        } catch (IOException ioe) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          Assert.assertTrue(ioe.getMessage().contains("Fault injected"));<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        size = store.memstore.getFlushableSize();<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        Assert.assertEquals(kvSize, size);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        MemstoreSize kvSize2 = new MemstoreSize();<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        store.add(new KeyValue(row, family, qf2, 2, (byte[])null), kvSize2);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        // Even though we add a new kv, we expect the flushable size to be 'same' since we have<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        // not yet cleared the snapshot -- the above flush failed.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        Assert.assertEquals(kvSize, size);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        ffs.fault.set(false);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        flushStore(store, id++);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        size = store.memstore.getFlushableSize();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        // Size should be the foreground kv size.<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        Assert.assertEquals(kvSize2, size);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        flushStore(store, id++);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        size = store.memstore.getFlushableSize();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        assertEquals(0, size.getDataSize());<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        assertEquals(0, size.getHeapSize());<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        return null;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    });<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  }<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>  /**<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * Verify that compression and data block encoding are respected by the<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * Store.createWriterInTmp() method, used on store flush.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   */<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  @Test<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  public void testCreateWriter() throws Exception {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    Configuration conf = HBaseConfiguration.create();<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    FileSystem fs = FileSystem.get(conf);<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    hcd.setCompressionType(Compression.Algorithm.GZ);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    hcd.setDataBlockEncoding(DataBlockEncoding.DIFF);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    init(name.getMethodName(), conf, hcd);<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // Test createWriterInTmp()<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    StoreFileWriter writer = store.createWriterInTmp(4, hcd.getCompressionType(), false, true, false);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    Path path = writer.getPath();<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    writer.append(new KeyValue(row, family, qf1, Bytes.toBytes(1)));<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    writer.append(new KeyValue(row, family, qf2, Bytes.toBytes(2)));<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    writer.append(new KeyValue(row2, family, qf1, Bytes.toBytes(3)));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    writer.append(new KeyValue(row2, family, qf2, Bytes.toBytes(4)));<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    writer.close();<a name="line.307"></a>
 <span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  @Test<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  public void testDeleteExpiredStoreFiles() throws Exception {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    testDeleteExpiredStoreFiles(0);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    testDeleteExpiredStoreFiles(1);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  /*<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * @param minVersions the MIN_VERSIONS for the column family<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   */<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public void testDeleteExpiredStoreFiles(int minVersions) throws Exception {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    int storeFileNum = 4;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    int ttl = 4;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    IncrementingEnvironmentEdge edge = new IncrementingEnvironmentEdge();<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    EnvironmentEdgeManagerTestHelper.injectEdge(edge);<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    Configuration conf = HBaseConfiguration.create();<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    // Enable the expired store file deletion<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    conf.setBoolean("hbase.store.delete.expired.storefile", true);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    // Set the compaction threshold higher to avoid normal compactions.<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY, 5);<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    hcd.setMinVersions(minVersions);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    hcd.setTimeToLive(ttl);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    init(name.getMethodName() + "-" + minVersions, conf, hcd);<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>    long storeTtl = this.store.getScanInfo().getTtl();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    long sleepTime = storeTtl / storeFileNum;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    long timeStamp;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    // There are 4 store files and the max time stamp difference among these<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    // store files will be (this.store.ttl / storeFileNum)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      LOG.info("Adding some data for the store file #" + i);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      timeStamp = EnvironmentEdgeManager.currentTime();<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      this.store.add(new KeyValue(row, family, qf1, timeStamp, (byte[]) null), null);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      this.store.add(new KeyValue(row, family, qf2, timeStamp, (byte[]) null), null);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      this.store.add(new KeyValue(row, family, qf3, timeStamp, (byte[]) null), null);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      flush(i);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      edge.incrementTime(sleepTime);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    }<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>    // Verify the total number of store files<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    Assert.assertEquals(storeFileNum, this.store.getStorefiles().size());<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>     // Each call will find one expired store file and delete it before compaction happens.<a name="line.353"></a>
-<span class="sourceLineNo">354</span>     // There will be no compaction due to threshold above. Last file will not be replaced.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    for (int i = 1; i &lt;= storeFileNum - 1; i++) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      // verify the expired store file.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      assertNull(this.store.requestCompaction());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      // Ensure i files are gone.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      if (minVersions == 0) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        assertEquals(storeFileNum - i, sfs.size());<a name="line.361"></a>
-<span class="sourceLineNo">362</span>        // Ensure only non-expired files remain.<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        for (StoreFile sf : sfs) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>          assertTrue(sf.getReader().getMaxTimestamp() &gt;= (edge.currentTime() - storeTtl));<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      } else {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        assertEquals(storeFileNum, sfs.size());<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      // Let the next store file expired.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      edge.incrementTime(sleepTime);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    }<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    assertNull(this.store.requestCompaction());<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>    Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    // Assert the last expired file is not removed.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    if (minVersions == 0) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      assertEquals(1, sfs.size());<a name="line.377"></a>
+<span class="sourceLineNo">309</span>    // Verify that compression and encoding settings are respected<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    HFile.Reader reader = HFile.createReader(fs, path, new CacheConfig(conf), true, conf);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    Assert.assertEquals(hcd.getCompressionType(), reader.getCompressionAlgorithm());<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    Assert.assertEquals(hcd.getDataBlockEncoding(), reader.getDataBlockEncoding());<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    reader.close();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  @Test<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public void testDeleteExpiredStoreFiles() throws Exception {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    testDeleteExpiredStoreFiles(0);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    testDeleteExpiredStoreFiles(1);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  /*<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   * @param minVersions the MIN_VERSIONS for the column family<a name="line.323"></a>
+<span class="sourceLineNo">324</span>   */<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public void testDeleteExpiredStoreFiles(int minVersions) throws Exception {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    int storeFileNum = 4;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    int ttl = 4;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    IncrementingEnvironmentEdge edge = new IncrementingEnvironmentEdge();<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    EnvironmentEdgeManagerTestHelper.injectEdge(edge);<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>    Configuration conf = HBaseConfiguration.create();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    // Enable the expired store file deletion<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    conf.setBoolean("hbase.store.delete.expired.storefile", true);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    // Set the compaction threshold higher to avoid normal compactions.<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY, 5);<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    hcd.setMinVersions(minVersions);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    hcd.setTimeToLive(ttl);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    init(name.getMethodName() + "-" + minVersions, conf, hcd);<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    long storeTtl = this.store.getScanInfo().getTtl();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    long sleepTime = storeTtl / storeFileNum;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    long timeStamp;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    // There are 4 store files and the max time stamp difference among these<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // store files will be (this.store.ttl / storeFileNum)<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      LOG.info("Adding some data for the store file #" + i);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      timeStamp = EnvironmentEdgeManager.currentTime();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      this.store.add(new KeyValue(row, family, qf1, timeStamp, (byte[]) null), null);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      this.store.add(new KeyValue(row, family, qf2, timeStamp, (byte[]) null), null);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      this.store.add(new KeyValue(row, family, qf3, timeStamp, (byte[]) null), null);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      flush(i);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      edge.incrementTime(sleepTime);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>    // Verify the total number of store files<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    Assert.assertEquals(storeFileNum, this.store.getStorefiles().size());<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>     // Each call will find one expired store file and delete it before compaction happens.<a name="line.360"></a>
+<span class="sourceLineNo">361</span>     // There will be no compaction due to threshold above. Last file will not be replaced.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    for (int i = 1; i &lt;= storeFileNum - 1; i++) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      // verify the expired store file.<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      assertNull(this.store.requestCompaction());<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      // Ensure i files are gone.<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      if (minVersions == 0) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        assertEquals(storeFileNum - i, sfs.size());<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        // Ensure only non-expired files remain.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        for (StoreFile sf : sfs) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>          assertTrue(sf.getReader().getMaxTimestamp() &gt;= (edge.currentTime() - storeTtl));<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        }<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      } else {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        assertEquals(storeFileNum, sfs.size());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      // Let the next store file expired.<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      edge.incrementTime(sleepTime);<a name="line.377"></a>
 <span class="sourceLineNo">378</span>    }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    long ts = sfs.iterator().next().getReader().getMaxTimestamp();<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    assertTrue(ts &lt; (edge.currentTime() - storeTtl));<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    for (StoreFile sf : sfs) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      sf.closeReader(true);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  @Test<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public void testLowestModificationTime() throws Exception {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    Configuration conf = HBaseConfiguration.create();<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    FileSystem fs = FileSystem.get(conf);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    // Initialize region<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    init(name.getMethodName(), conf);<a name="line.392"></a>
+<span class="sourceLineNo">379</span>    assertNull(this.store.requestCompaction());<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>    Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    // Assert the last expired file is not removed.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    if (minVersions == 0) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      assertEquals(1, sfs.size());<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    }<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    long ts = sfs.iterator().next().getReader().getMaxTimestamp();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    assertTrue(ts &lt; (edge.currentTime() - storeTtl));<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>    for (StoreFile sf : sfs) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      sf.closeReader(true);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    }<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  }<a name="line.392"></a>
 <span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    int storeFileNum = 4;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      LOG.info("Adding some data for the store file #"+i);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      this.store.add(new KeyValue(row, family, qf1, i, (byte[])null), null);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      this.store.add(new KeyValue(row, family, qf2, i, (byte[])null), null);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      this.store.add(new KeyValue(row, family, qf3, i, (byte[])null), null);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      flush(i);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    // after flush; check the lowest time stamp<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    long lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    long lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    Assert.assertEquals(lowestTimeStampFromManager,lowestTimeStampFromFS);<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>    // after compact; check the lowest time stamp<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    store.compact(store.requestCompaction(), NoLimitThroughputController.INSTANCE, null);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    Assert.assertEquals(lowestTimeStampFromManager, lowestTimeStampFromFS);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
+<span class="sourceLineNo">394</span>  @Test<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  public void testLowestModificationTime() throws Exception {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    Configuration conf = HBaseConfiguration.create();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    FileSystem fs = FileSystem.get(conf);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Initialize region<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    init(name.getMethodName(), conf);<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    int storeFileNum = 4;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      LOG.info("Adding some data for the store file #"+i);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      this.store.add(new KeyValue(row, family, qf1, i, (byte[])null), null);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      this.store.add(new KeyValue(row, family, qf2, i, (byte[])null), null);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      this.store.add(new KeyValue(row, family, qf3, i, (byte[])null), null);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      flush(i);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    // after flush; check the lowest time stamp<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    long lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    long lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    Assert.assertEquals(lowestTimeStampFromManager,lowestTimeStampFromFS);<a name="line.412"></a>
 <span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  private static long getLowestTimeStampFromFS(FileSystem fs,<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      final Collection&lt;StoreFile&gt; candidates) throws IOException {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    long minTs = Long.MAX_VALUE;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    if (candidates.isEmpty()) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      return minTs;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    }<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    Path[] p = new Path[candidates.size()];<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    int i = 0;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    for (StoreFile sf : candidates) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      p[i] = sf.getPath();<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      ++i;<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    }<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>    FileStatus[] stats = fs.listStatus(p);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    if (stats == null || stats.length == 0) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      return minTs;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    for (FileStatus s : stats) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      minTs = Math.min(minTs, s.getModificationTime());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    return minTs;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  // Get tests<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>  private static final int BLOCKSIZE_SMALL = 8192;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Test for hbase-1686.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @throws IOException<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  @Test<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  public void testEmptyStoreFile() throws IOException {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    init(this.name.getMethodName());<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    // Write a store file.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    flush(1);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    // Now put in place an empty store file.  Its a little tricky.  Have to<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // do manually with hacked in sequence id.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    StoreFile f = this.store.getStorefiles().iterator().next();<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    Path storedir = f.getPath().getParent();<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    long seqid = f.getMaxSequenceId();<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    Configuration c = HBaseConfiguration.create();<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    FileSystem fs = FileSystem.get(c);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    HFileContext meta = new HFileContextBuilder().withBlockSize(BLOCKSIZE_SMALL).build();<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    StoreFileWriter w = new StoreFileWriter.Builder(c, new CacheConfig(c),<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        fs)<a name="line.462"></a>
-<span class="sourceLineNo">463</span>            .withOutputDir(storedir)<a name="line.463"></a>
-<span class="sourceLineNo">464</span>            .withFileContext(meta)<a name="line.464"></a>
-<span class="sourceLineNo">465</span>            .build();<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    w.appendMetadata(seqid + 1, false);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    w.close();<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    this.store.close();<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    // Reopen it... should pick up two files<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    this.store = new HStore(this.store.getHRegion(), this.store.getFamily(), c);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    Assert.assertEquals(2, this.store.getStorefilesCount());<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        get.getRow(),<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        qualifiers);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    Assert.assertEquals(1, result.size());<a name="line.476"></a>
-<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>  /**<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * Getting data from memstore only<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @throws IOException<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   */<a name="line.482"></a>
-<span class="sourceLineNo">483</span>  @Test<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  public void testGet_FromMemStoreOnly() throws IOException {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    init(this.name.getMethodName());<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>    //Put data in memstore<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    this.store.add(new KeyValue(row, family, qf3, 1, (byte[])null), null);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    this.store.add(new KeyValue(row, family, qf4, 1, (byte[])null), null);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    this.store.add(new KeyValue(row, family, qf5, 1, (byte[])null), null);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    this.store.add(new KeyValue(row, family, qf6, 1, (byte[])null), null);<a name="line.493"></a>
-<span class="sourceLineNo">494</span><a name="line.494"></a>
-<span class="sourceLineNo">495</span>    //Get<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        get.getRow(), qualifiers);<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    //Compare<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    assertCheck();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  }<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>   * Getting data from files only<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @throws IOException<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   */<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  @Test<a name="line.507"></a>
-<span class="sourceLineNo">508</span>  public void testGet_FromFilesOnly() throws IOException {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    init(this.name.getMethodName());<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>    //Put data in memstore<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    //flush<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    flush(1);<a name="line.515"></a>
-<span class="sourceLineNo">5

<TRUNCATED>

[10/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyFileSystem.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyFileSystem.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyFileSystem.html
index a1d9f98..9ce2441 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyFileSystem.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyFileSystem.html
@@ -28,1446 +28,1556 @@
 <span class="sourceLineNo">020</span>package org.apache.hadoop.hbase.regionserver;<a name="line.20"></a>
 <span class="sourceLineNo">021</span><a name="line.21"></a>
 <span class="sourceLineNo">022</span>import static org.junit.Assert.assertEquals;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.junit.Assert.assertNull;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.junit.Assert.assertTrue;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import static org.mockito.Matchers.any;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import static org.mockito.Mockito.spy;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import static org.mockito.Mockito.times;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import static org.mockito.Mockito.verify;<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.io.IOException;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.lang.ref.SoftReference;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.security.PrivilegedExceptionAction;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.ArrayList;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.Arrays;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.Collection;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.Collections;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.Iterator;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.List;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.ListIterator;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import java.util.NavigableSet;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import java.util.TreeSet;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import java.util.concurrent.ConcurrentSkipListSet;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.concurrent.CountDownLatch;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import java.util.concurrent.ExecutorService;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import java.util.concurrent.Executors;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import java.util.concurrent.TimeUnit;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.util.function.Consumer;<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.commons.logging.Log;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.commons.logging.LogFactory;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.fs.FileStatus;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FileSystem;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FilterFileSystem;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.LocalFileSystem;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.Path;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.permission.FsPermission;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.Cell;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HConstants;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.TableName;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Get;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.security.User;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.util.Progressable;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.junit.After;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.junit.Assert;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.junit.Before;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.junit.Rule;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.junit.Test;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.junit.experimental.categories.Category;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.junit.rules.TestName;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.mockito.Mockito;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>import com.google.common.collect.Lists;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>/**<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * Test class for the Store<a name="line.110"></a>
-<span class="sourceLineNo">111</span> */<a name="line.111"></a>
-<span class="sourceLineNo">112</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.112"></a>
-<span class="sourceLineNo">113</span>public class TestStore {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private static final Log LOG = LogFactory.getLog(TestStore.class);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  @Rule public TestName name = new TestName();<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  HStore store;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  byte [] table = Bytes.toBytes("table");<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  byte [] family = Bytes.toBytes("family");<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  byte [] row = Bytes.toBytes("row");<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  byte [] row2 = Bytes.toBytes("row2");<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  byte [] qf1 = Bytes.toBytes("qf1");<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  byte [] qf2 = Bytes.toBytes("qf2");<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  byte [] qf3 = Bytes.toBytes("qf3");<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  byte [] qf4 = Bytes.toBytes("qf4");<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  byte [] qf5 = Bytes.toBytes("qf5");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  byte [] qf6 = Bytes.toBytes("qf6");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  NavigableSet&lt;byte[]&gt; qualifiers = new ConcurrentSkipListSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  List&lt;Cell&gt; expected = new ArrayList&lt;&gt;();<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  List&lt;Cell&gt; result = new ArrayList&lt;&gt;();<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  long id = System.currentTimeMillis();<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  Get get = new Get(row);<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private final String DIR = TEST_UTIL.getDataTestDir("TestStore").toString();<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertFalse;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.junit.Assert.assertNull;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.junit.Assert.assertTrue;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import static org.mockito.Matchers.any;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import static org.mockito.Mockito.spy;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import static org.mockito.Mockito.times;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import static org.mockito.Mockito.verify;<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.io.IOException;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.lang.ref.SoftReference;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.security.PrivilegedExceptionAction;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.ArrayList;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.Arrays;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Collection;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.Collections;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.Iterator;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.List;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import java.util.ListIterator;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import java.util.NavigableSet;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import java.util.TreeSet;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import java.util.concurrent.ConcurrentSkipListSet;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.concurrent.CountDownLatch;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.ExecutorService;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import java.util.concurrent.Executors;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import java.util.concurrent.TimeUnit;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import java.util.function.Consumer;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.commons.logging.Log;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.commons.logging.LogFactory;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.conf.Configuration;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FileStatus;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.FileSystem;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.FilterFileSystem;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.LocalFileSystem;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.Path;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.fs.permission.FsPermission;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.Cell;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HConstants;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.TableName;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Get;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.security.User;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.util.Progressable;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.junit.After;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.junit.Assert;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.junit.Before;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.junit.Rule;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.junit.Test;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.junit.experimental.categories.Category;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.junit.rules.TestName;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.mockito.Mockito;<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>import com.google.common.collect.Lists;<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> * Test class for the Store<a name="line.111"></a>
+<span class="sourceLineNo">112</span> */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.113"></a>
+<span class="sourceLineNo">114</span>public class TestStore {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static final Log LOG = LogFactory.getLog(TestStore.class);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  @Rule public TestName name = new TestName();<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  HStore store;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  byte [] table = Bytes.toBytes("table");<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  byte [] family = Bytes.toBytes("family");<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>  byte [] row = Bytes.toBytes("row");<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  byte [] row2 = Bytes.toBytes("row2");<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  byte [] qf1 = Bytes.toBytes("qf1");<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  byte [] qf2 = Bytes.toBytes("qf2");<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  byte [] qf3 = Bytes.toBytes("qf3");<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  byte [] qf4 = Bytes.toBytes("qf4");<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  byte [] qf5 = Bytes.toBytes("qf5");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  byte [] qf6 = Bytes.toBytes("qf6");<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  NavigableSet&lt;byte[]&gt; qualifiers = new ConcurrentSkipListSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  List&lt;Cell&gt; expected = new ArrayList&lt;&gt;();<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  List&lt;Cell&gt; result = new ArrayList&lt;&gt;();<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  long id = System.currentTimeMillis();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  Get get = new Get(row);<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private final String DIR = TEST_UTIL.getDataTestDir("TestStore").toString();<a name="line.140"></a>
 <span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  /**<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * Setup<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * @throws IOException<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  @Before<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  public void setUp() throws IOException {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    qualifiers.add(qf1);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    qualifiers.add(qf3);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    qualifiers.add(qf5);<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>    Iterator&lt;byte[]&gt; iter = qualifiers.iterator();<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    while(iter.hasNext()){<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      byte [] next = iter.next();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      expected.add(new KeyValue(row, family, next, 1, (byte[])null));<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      get.addColumn(family, next);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>  private void init(String methodName) throws IOException {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    init(methodName, TEST_UTIL.getConfiguration());<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  private void init(String methodName, Configuration conf)<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  throws IOException {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    // some of the tests write 4 versions and then flush<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    // (with HBASE-4241, lower versions are collected on flush)<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    hcd.setMaxVersions(4);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    init(methodName, conf, hcd);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  private void init(String methodName, Configuration conf,<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      HColumnDescriptor hcd) throws IOException {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(table));<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    init(methodName, conf, htd, hcd);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  }<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      HColumnDescriptor hcd) throws IOException {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    return init(methodName, conf, htd, hcd, null);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  @SuppressWarnings("deprecation")<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      HColumnDescriptor hcd, MyScannerHook hook) throws IOException {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    //Setting up a Store<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    Path basedir = new Path(DIR+methodName);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    Path tableDir = FSUtils.getTableDir(basedir, htd.getTableName());<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    final Path logdir = new Path(basedir, AbstractFSWALProvider.getWALDirectoryName(methodName));<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>    FileSystem fs = FileSystem.get(conf);<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>    fs.delete(logdir, true);<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>    if (htd.hasFamily(hcd.getName())) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      htd.modifyFamily(hcd);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    } else {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      htd.addFamily(hcd);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false, MemStoreLABImpl.CHUNK_SIZE_DEFAULT, 1, 0, null);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    final Configuration walConf = new Configuration(conf);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    FSUtils.setRootDir(walConf, basedir);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    final WALFactory wals = new WALFactory(walConf, null, methodName);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    HRegion region = new HRegion(tableDir, wals.getWAL(info.getEncodedNameAsBytes(),<a name="line.206"></a>
-<span class="sourceLineNo">207</span>            info.getTable().getNamespace()), fs, conf, info, htd, null);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    if (hook == null) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      store = new HStore(region, hcd, conf);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    } else {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      store = new MyStore(region, hcd, conf, hook);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    return store;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  }<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  /**<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * Test we do not lose data if we fail a flush and then close.<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * Part of HBase-10466<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * @throws Exception<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   */<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  @Test<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  public void testFlushSizeAccounting() throws Exception {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    LOG.info("Setting up a faulty file system that cannot write in " +<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      this.name.getMethodName());<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    // Only retry once.<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    conf.setInt("hbase.hstore.flush.retries.number", 1);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    User user = User.createUserForTesting(conf, this.name.getMethodName(),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      new String[]{"foo"});<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // Inject our faulty LocalFileSystem<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    conf.setClass("fs.file.impl", FaultyFileSystem.class, FileSystem.class);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    user.runAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      public Object run() throws Exception {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        // Make sure it worked (above is sensitive to caching details in hadoop core)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        FileSystem fs = FileSystem.get(conf);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        Assert.assertEquals(FaultyFileSystem.class, fs.getClass());<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        FaultyFileSystem ffs = (FaultyFileSystem)fs;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>        // Initialize region<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        init(name.getMethodName(), conf);<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span>        MemstoreSize size = store.memstore.getFlushableSize();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        Assert.assertEquals(0, size.getDataSize());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        LOG.info("Adding some data");<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        MemstoreSize kvSize = new MemstoreSize();<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        store.add(new KeyValue(row, family, qf1, 1, (byte[])null), kvSize);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        size = store.memstore.getFlushableSize();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        Assert.assertEquals(kvSize, size);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        // Flush.  Bug #1 from HBASE-10466.  Make sure size calculation on failed flush is right.<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        try {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          LOG.info("Flushing");<a name="line.252"></a>
-<span class="sourceLineNo">253</span>          flushStore(store, id++);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          Assert.fail("Didn't bubble up IOE!");<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        } catch (IOException ioe) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>          Assert.assertTrue(ioe.getMessage().contains("Fault injected"));<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        size = store.memstore.getFlushableSize();<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        Assert.assertEquals(kvSize, size);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        MemstoreSize kvSize2 = new MemstoreSize();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        store.add(new KeyValue(row, family, qf2, 2, (byte[])null), kvSize2);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        // Even though we add a new kv, we expect the flushable size to be 'same' since we have<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        // not yet cleared the snapshot -- the above flush failed.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        Assert.assertEquals(kvSize, size);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        ffs.fault.set(false);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        flushStore(store, id++);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        size = store.memstore.getFlushableSize();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        // Size should be the foreground kv size.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        Assert.assertEquals(kvSize2, size);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        flushStore(store, id++);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        size = store.memstore.getFlushableSize();<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        assertEquals(0, size.getDataSize());<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        assertEquals(0, size.getHeapSize());<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        return null;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    });<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  }<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  /**<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   * Verify that compression and data block encoding are respected by the<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * Store.createWriterInTmp() method, used on store flush.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   */<a name="line.282"></a>
-<span class="sourceLineNo">283</span>  @Test<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  public void testCreateWriter() throws Exception {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    Configuration conf = HBaseConfiguration.create();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    FileSystem fs = FileSystem.get(conf);<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    hcd.setCompressionType(Compression.Algorithm.GZ);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    hcd.setDataBlockEncoding(DataBlockEncoding.DIFF);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    init(name.getMethodName(), conf, hcd);<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>    // Test createWriterInTmp()<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    StoreFileWriter writer = store.createWriterInTmp(4, hcd.getCompressionType(), false, true, false);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    Path path = writer.getPath();<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    writer.append(new KeyValue(row, family, qf1, Bytes.toBytes(1)));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    writer.append(new KeyValue(row, family, qf2, Bytes.toBytes(2)));<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    writer.append(new KeyValue(row2, family, qf1, Bytes.toBytes(3)));<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    writer.append(new KeyValue(row2, family, qf2, Bytes.toBytes(4)));<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    writer.close();<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>    // Verify that compression and encoding settings are respected<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    HFile.Reader reader = HFile.createReader(fs, path, new CacheConfig(conf), true, conf);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    Assert.assertEquals(hcd.getCompressionType(), reader.getCompressionAlgorithm());<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    Assert.assertEquals(hcd.getDataBlockEncoding(), reader.getDataBlockEncoding());<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    reader.close();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  /**<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * Setup<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * @throws IOException<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   */<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  @Before<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  public void setUp() throws IOException {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    qualifiers.add(qf1);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    qualifiers.add(qf3);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    qualifiers.add(qf5);<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    Iterator&lt;byte[]&gt; iter = qualifiers.iterator();<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    while(iter.hasNext()){<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      byte [] next = iter.next();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      expected.add(new KeyValue(row, family, next, 1, (byte[])null));<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      get.addColumn(family, next);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>  private void init(String methodName) throws IOException {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    init(methodName, TEST_UTIL.getConfiguration());<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  private Store init(String methodName, Configuration conf)<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  throws IOException {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    // some of the tests write 4 versions and then flush<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    // (with HBASE-4241, lower versions are collected on flush)<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    hcd.setMaxVersions(4);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    return init(methodName, conf, hcd);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>  private Store init(String methodName, Configuration conf,<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      HColumnDescriptor hcd) throws IOException {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(table));<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    return init(methodName, conf, htd, hcd);<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>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      HColumnDescriptor hcd) throws IOException {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    return init(methodName, conf, htd, hcd, null);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @SuppressWarnings("deprecation")<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      HColumnDescriptor hcd, MyScannerHook hook) throws IOException {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    return init(methodName, conf, htd, hcd, hook, false);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  @SuppressWarnings("deprecation")<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      HColumnDescriptor hcd, MyScannerHook hook, boolean switchToPread) throws IOException {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    //Setting up a Store<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    Path basedir = new Path(DIR+methodName);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    Path tableDir = FSUtils.getTableDir(basedir, htd.getTableName());<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    final Path logdir = new Path(basedir, AbstractFSWALProvider.getWALDirectoryName(methodName));<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>    FileSystem fs = FileSystem.get(conf);<a name="line.198"></a>
+<span class="sourceLineNo">199</span><a name="line.199"></a>
+<span class="sourceLineNo">200</span>    fs.delete(logdir, true);<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    if (htd.hasFamily(hcd.getName())) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      htd.modifyFamily(hcd);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    } else {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      htd.addFamily(hcd);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false,<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      MemStoreLABImpl.CHUNK_SIZE_DEFAULT, 1, 0, null);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    final Configuration walConf = new Configuration(conf);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    FSUtils.setRootDir(walConf, basedir);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    final WALFactory wals = new WALFactory(walConf, null, methodName);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    HRegion region = new HRegion(tableDir, wals.getWAL(info.getEncodedNameAsBytes(),<a name="line.213"></a>
+<span class="sourceLineNo">214</span>            info.getTable().getNamespace()), fs, conf, info, htd, null);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    if (hook == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      store = new HStore(region, hcd, conf);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    } else {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      store = new MyStore(region, hcd, conf, hook, switchToPread);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    return store;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  /**<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * Test we do not lose data if we fail a flush and then close.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * Part of HBase-10466<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   * @throws Exception<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   */<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  @Test<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  public void testFlushSizeAccounting() throws Exception {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    LOG.info("Setting up a faulty file system that cannot write in " +<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      this.name.getMethodName());<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    // Only retry once.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    conf.setInt("hbase.hstore.flush.retries.number", 1);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    User user = User.createUserForTesting(conf, this.name.getMethodName(),<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      new String[]{"foo"});<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    // Inject our faulty LocalFileSystem<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    conf.setClass("fs.file.impl", FaultyFileSystem.class, FileSystem.class);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    user.runAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      @Override<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      public Object run() throws Exception {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        // Make sure it worked (above is sensitive to caching details in hadoop core)<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        FileSystem fs = FileSystem.get(conf);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        Assert.assertEquals(FaultyFileSystem.class, fs.getClass());<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        FaultyFileSystem ffs = (FaultyFileSystem)fs;<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>        // Initialize region<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        init(name.getMethodName(), conf);<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>        MemstoreSize size = store.memstore.getFlushableSize();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        Assert.assertEquals(0, size.getDataSize());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        LOG.info("Adding some data");<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        MemstoreSize kvSize = new MemstoreSize();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        store.add(new KeyValue(row, family, qf1, 1, (byte[])null), kvSize);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        size = store.memstore.getFlushableSize();<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        Assert.assertEquals(kvSize, size);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        // Flush.  Bug #1 from HBASE-10466.  Make sure size calculation on failed flush is right.<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        try {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          LOG.info("Flushing");<a name="line.259"></a>
+<span class="sourceLineNo">260</span>          flushStore(store, id++);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>          Assert.fail("Didn't bubble up IOE!");<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        } catch (IOException ioe) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          Assert.assertTrue(ioe.getMessage().contains("Fault injected"));<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        size = store.memstore.getFlushableSize();<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        Assert.assertEquals(kvSize, size);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        MemstoreSize kvSize2 = new MemstoreSize();<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        store.add(new KeyValue(row, family, qf2, 2, (byte[])null), kvSize2);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        // Even though we add a new kv, we expect the flushable size to be 'same' since we have<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        // not yet cleared the snapshot -- the above flush failed.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        Assert.assertEquals(kvSize, size);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        ffs.fault.set(false);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        flushStore(store, id++);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        size = store.memstore.getFlushableSize();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        // Size should be the foreground kv size.<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        Assert.assertEquals(kvSize2, size);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        flushStore(store, id++);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        size = store.memstore.getFlushableSize();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        assertEquals(0, size.getDataSize());<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        assertEquals(0, size.getHeapSize());<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        return null;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    });<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  }<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>  /**<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * Verify that compression and data block encoding are respected by the<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * Store.createWriterInTmp() method, used on store flush.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   */<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  @Test<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  public void testCreateWriter() throws Exception {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    Configuration conf = HBaseConfiguration.create();<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    FileSystem fs = FileSystem.get(conf);<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    hcd.setCompressionType(Compression.Algorithm.GZ);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    hcd.setDataBlockEncoding(DataBlockEncoding.DIFF);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    init(name.getMethodName(), conf, hcd);<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // Test createWriterInTmp()<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    StoreFileWriter writer = store.createWriterInTmp(4, hcd.getCompressionType(), false, true, false);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    Path path = writer.getPath();<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    writer.append(new KeyValue(row, family, qf1, Bytes.toBytes(1)));<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    writer.append(new KeyValue(row, family, qf2, Bytes.toBytes(2)));<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    writer.append(new KeyValue(row2, family, qf1, Bytes.toBytes(3)));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    writer.append(new KeyValue(row2, family, qf2, Bytes.toBytes(4)));<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    writer.close();<a name="line.307"></a>
 <span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  @Test<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  public void testDeleteExpiredStoreFiles() throws Exception {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    testDeleteExpiredStoreFiles(0);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    testDeleteExpiredStoreFiles(1);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  /*<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * @param minVersions the MIN_VERSIONS for the column family<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   */<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public void testDeleteExpiredStoreFiles(int minVersions) throws Exception {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    int storeFileNum = 4;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    int ttl = 4;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    IncrementingEnvironmentEdge edge = new IncrementingEnvironmentEdge();<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    EnvironmentEdgeManagerTestHelper.injectEdge(edge);<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    Configuration conf = HBaseConfiguration.create();<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    // Enable the expired store file deletion<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    conf.setBoolean("hbase.store.delete.expired.storefile", true);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    // Set the compaction threshold higher to avoid normal compactions.<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY, 5);<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    hcd.setMinVersions(minVersions);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    hcd.setTimeToLive(ttl);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    init(name.getMethodName() + "-" + minVersions, conf, hcd);<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>    long storeTtl = this.store.getScanInfo().getTtl();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    long sleepTime = storeTtl / storeFileNum;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    long timeStamp;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    // There are 4 store files and the max time stamp difference among these<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    // store files will be (this.store.ttl / storeFileNum)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      LOG.info("Adding some data for the store file #" + i);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      timeStamp = EnvironmentEdgeManager.currentTime();<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      this.store.add(new KeyValue(row, family, qf1, timeStamp, (byte[]) null), null);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      this.store.add(new KeyValue(row, family, qf2, timeStamp, (byte[]) null), null);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      this.store.add(new KeyValue(row, family, qf3, timeStamp, (byte[]) null), null);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      flush(i);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      edge.incrementTime(sleepTime);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    }<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>    // Verify the total number of store files<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    Assert.assertEquals(storeFileNum, this.store.getStorefiles().size());<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>     // Each call will find one expired store file and delete it before compaction happens.<a name="line.353"></a>
-<span class="sourceLineNo">354</span>     // There will be no compaction due to threshold above. Last file will not be replaced.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    for (int i = 1; i &lt;= storeFileNum - 1; i++) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      // verify the expired store file.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      assertNull(this.store.requestCompaction());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      // Ensure i files are gone.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      if (minVersions == 0) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        assertEquals(storeFileNum - i, sfs.size());<a name="line.361"></a>
-<span class="sourceLineNo">362</span>        // Ensure only non-expired files remain.<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        for (StoreFile sf : sfs) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>          assertTrue(sf.getReader().getMaxTimestamp() &gt;= (edge.currentTime() - storeTtl));<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      } else {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        assertEquals(storeFileNum, sfs.size());<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      // Let the next store file expired.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      edge.incrementTime(sleepTime);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    }<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    assertNull(this.store.requestCompaction());<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>    Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    // Assert the last expired file is not removed.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    if (minVersions == 0) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      assertEquals(1, sfs.size());<a name="line.377"></a>
+<span class="sourceLineNo">309</span>    // Verify that compression and encoding settings are respected<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    HFile.Reader reader = HFile.createReader(fs, path, new CacheConfig(conf), true, conf);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    Assert.assertEquals(hcd.getCompressionType(), reader.getCompressionAlgorithm());<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    Assert.assertEquals(hcd.getDataBlockEncoding(), reader.getDataBlockEncoding());<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    reader.close();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  @Test<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public void testDeleteExpiredStoreFiles() throws Exception {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    testDeleteExpiredStoreFiles(0);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    testDeleteExpiredStoreFiles(1);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  /*<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   * @param minVersions the MIN_VERSIONS for the column family<a name="line.323"></a>
+<span class="sourceLineNo">324</span>   */<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public void testDeleteExpiredStoreFiles(int minVersions) throws Exception {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    int storeFileNum = 4;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    int ttl = 4;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    IncrementingEnvironmentEdge edge = new IncrementingEnvironmentEdge();<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    EnvironmentEdgeManagerTestHelper.injectEdge(edge);<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>    Configuration conf = HBaseConfiguration.create();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    // Enable the expired store file deletion<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    conf.setBoolean("hbase.store.delete.expired.storefile", true);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    // Set the compaction threshold higher to avoid normal compactions.<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY, 5);<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    hcd.setMinVersions(minVersions);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    hcd.setTimeToLive(ttl);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    init(name.getMethodName() + "-" + minVersions, conf, hcd);<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    long storeTtl = this.store.getScanInfo().getTtl();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    long sleepTime = storeTtl / storeFileNum;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    long timeStamp;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    // There are 4 store files and the max time stamp difference among these<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // store files will be (this.store.ttl / storeFileNum)<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      LOG.info("Adding some data for the store file #" + i);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      timeStamp = EnvironmentEdgeManager.currentTime();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      this.store.add(new KeyValue(row, family, qf1, timeStamp, (byte[]) null), null);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      this.store.add(new KeyValue(row, family, qf2, timeStamp, (byte[]) null), null);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      this.store.add(new KeyValue(row, family, qf3, timeStamp, (byte[]) null), null);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      flush(i);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      edge.incrementTime(sleepTime);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>    // Verify the total number of store files<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    Assert.assertEquals(storeFileNum, this.store.getStorefiles().size());<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>     // Each call will find one expired store file and delete it before compaction happens.<a name="line.360"></a>
+<span class="sourceLineNo">361</span>     // There will be no compaction due to threshold above. Last file will not be replaced.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    for (int i = 1; i &lt;= storeFileNum - 1; i++) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      // verify the expired store file.<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      assertNull(this.store.requestCompaction());<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      // Ensure i files are gone.<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      if (minVersions == 0) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        assertEquals(storeFileNum - i, sfs.size());<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        // Ensure only non-expired files remain.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        for (StoreFile sf : sfs) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>          assertTrue(sf.getReader().getMaxTimestamp() &gt;= (edge.currentTime() - storeTtl));<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        }<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      } else {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        assertEquals(storeFileNum, sfs.size());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      // Let the next store file expired.<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      edge.incrementTime(sleepTime);<a name="line.377"></a>
 <span class="sourceLineNo">378</span>    }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    long ts = sfs.iterator().next().getReader().getMaxTimestamp();<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    assertTrue(ts &lt; (edge.currentTime() - storeTtl));<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    for (StoreFile sf : sfs) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      sf.closeReader(true);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  @Test<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public void testLowestModificationTime() throws Exception {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    Configuration conf = HBaseConfiguration.create();<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    FileSystem fs = FileSystem.get(conf);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    // Initialize region<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    init(name.getMethodName(), conf);<a name="line.392"></a>
+<span class="sourceLineNo">379</span>    assertNull(this.store.requestCompaction());<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>    Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    // Assert the last expired file is not removed.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    if (minVersions == 0) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      assertEquals(1, sfs.size());<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    }<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    long ts = sfs.iterator().next().getReader().getMaxTimestamp();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    assertTrue(ts &lt; (edge.currentTime() - storeTtl));<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>    for (StoreFile sf : sfs) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      sf.closeReader(true);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    }<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  }<a name="line.392"></a>
 <span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    int storeFileNum = 4;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      LOG.info("Adding some data for the store file #"+i);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      this.store.add(new KeyValue(row, family, qf1, i, (byte[])null), null);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      this.store.add(new KeyValue(row, family, qf2, i, (byte[])null), null);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      this.store.add(new KeyValue(row, family, qf3, i, (byte[])null), null);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      flush(i);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    // after flush; check the lowest time stamp<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    long lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    long lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    Assert.assertEquals(lowestTimeStampFromManager,lowestTimeStampFromFS);<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>    // after compact; check the lowest time stamp<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    store.compact(store.requestCompaction(), NoLimitThroughputController.INSTANCE, null);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    Assert.assertEquals(lowestTimeStampFromManager, lowestTimeStampFromFS);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
+<span class="sourceLineNo">394</span>  @Test<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  public void testLowestModificationTime() throws Exception {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    Configuration conf = HBaseConfiguration.create();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    FileSystem fs = FileSystem.get(conf);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Initialize region<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    init(name.getMethodName(), conf);<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    int storeFileNum = 4;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      LOG.info("Adding some data for the store file #"+i);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      this.store.add(new KeyValue(row, family, qf1, i, (byte[])null), null);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      this.store.add(new KeyValue(row, family, qf2, i, (byte[])null), null);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      this.store.add(new KeyValue(row, family, qf3, i, (byte[])null), null);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      flush(i);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    // after flush; check the lowest time stamp<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    long lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    long lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    Assert.assertEquals(lowestTimeStampFromManager,lowestTimeStampFromFS);<a name="line.412"></a>
 <span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  private static long getLowestTimeStampFromFS(FileSystem fs,<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      final Collection&lt;StoreFile&gt; candidates) throws IOException {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    long minTs = Long.MAX_VALUE;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    if (candidates.isEmpty()) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      return minTs;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    }<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    Path[] p = new Path[candidates.size()];<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    int i = 0;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    for (StoreFile sf : candidates) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      p[i] = sf.getPath();<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      ++i;<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    }<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>    FileStatus[] stats = fs.listStatus(p);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    if (stats == null || stats.length == 0) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      return minTs;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    for (FileStatus s : stats) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      minTs = Math.min(minTs, s.getModificationTime());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    return minTs;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  // Get tests<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>  private static final int BLOCKSIZE_SMALL = 8192;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Test for hbase-1686.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @throws IOException<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  @Test<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  public void testEmptyStoreFile() throws IOException {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    init(this.name.getMethodName());<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    // Write a store file.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    flush(1);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    // Now put in place an empty store file.  Its a little tricky.  Have to<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // do manually with hacked in sequence id.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    StoreFile f = this.store.getStorefiles().iterator().next();<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    Path storedir = f.getPath().getParent();<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    long seqid = f.getMaxSequenceId();<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    Configuration c = HBaseConfiguration.create();<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    FileSystem fs = FileSystem.get(c);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    HFileContext meta = new HFileContextBuilder().withBlockSize(BLOCKSIZE_SMALL).build();<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    StoreFileWriter w = new StoreFileWriter.Builder(c, new CacheConfig(c),<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        fs)<a name="line.462"></a>
-<span class="sourceLineNo">463</span>            .withOutputDir(storedir)<a name="line.463"></a>
-<span class="sourceLineNo">464</span>            .withFileContext(meta)<a name="line.464"></a>
-<span class="sourceLineNo">465</span>            .build();<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    w.appendMetadata(seqid + 1, false);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    w.close();<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    this.store.close();<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    // Reopen it... should pick up two files<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    this.store = new HStore(this.store.getHRegion(), this.store.getFamily(), c);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    Assert.assertEquals(2, this.store.getStorefilesCount());<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        get.getRow(),<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        qualifiers);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    Assert.assertEquals(1, result.size());<a name="line.476"></a>
-<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>  /**<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * Getting data from memstore only<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @throws IOException<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   */<a name="line.482"></a>
-<span class="sourceLineNo">483</span>  @Test<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  public void testGet_FromMemStoreOnly() throws IOException {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    init(this.name.getMethodName());<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>    //Put data in memstore<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    this.store.add(new KeyValue(row, family, qf3, 1, (byte[])null), null);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    this.store.add(new KeyValue(row, family, qf4, 1, (byte[])null), null);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    this.store.add(new KeyValue(row, family, qf5, 1, (byte[])null), null);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    this.store.add(new KeyValue(row, family, qf6, 1, (byte[])null), null);<a name="line.493"></a>
-<span class="sourceLineNo">494</span><a name="line.494"></a>
-<span class="sourceLineNo">495</span>    //Get<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        get.getRow(), qualifiers);<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    //Compare<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    assertCheck();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  }<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>   * Getting data from files only<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @throws IOException<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   */<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  @Test<a name="line.507"></a>
-<span class="sourceLineNo">508</span>  public void testGet_FromFilesOnly() throws IOException {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    init(this.name.getMethodName());<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>    //Put data in memstore<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    //flush<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    flush(1);<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>    //Add more data<a name="line.517"></a>
-

<TRUNCATED>

[28/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
index 6c614c0..8447279 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
@@ -36,2538 +36,2584 @@
 <span class="sourceLineNo">028</span>import java.util.HashSet;<a name="line.28"></a>
 <span class="sourceLineNo">029</span>import java.util.Iterator;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>import java.util.List;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.NavigableSet;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.Set;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.concurrent.Callable;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.concurrent.CompletionService;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.concurrent.ConcurrentHashMap;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.concurrent.ExecutionException;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.concurrent.ExecutorCompletionService;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.concurrent.Future;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import java.util.concurrent.locks.ReentrantLock;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import java.util.concurrent.locks.ReentrantReadWriteLock;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.function.Predicate;<a name="line.43"></a>
-<span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.commons.logging.Log;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.commons.logging.LogFactory;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.conf.Configuration;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.fs.FileSystem;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.fs.Path;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.Cell;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.HConstants;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.TableName;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.backup.FailedArchiveException;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.io.crypto.Encryption;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoder;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoderImpl;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.io.hfile.HFileScanner;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.io.hfile.InvalidHFileException;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionProgress;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.regionserver.compactions.OffPeakHours;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.security.EncryptionUtil;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.security.User;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescriptor;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.util.ChecksumType;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.ReflectionUtils;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.util.StringUtils;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>import com.google.common.annotations.VisibleForTesting;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.google.common.base.Preconditions;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.google.common.collect.ImmutableCollection;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.google.common.collect.ImmutableList;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import com.google.common.collect.Lists;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import com.google.common.collect.Sets;<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>/**<a name="line.102"></a>
-<span class="sourceLineNo">103</span> * A Store holds a column family in a Region.  Its a memstore and a set of zero<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * or more StoreFiles, which stretch backwards over time.<a name="line.104"></a>
-<span class="sourceLineNo">105</span> *<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * &lt;p&gt;There's no reason to consider append-logging at this level; all logging<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * and locking is handled at the HRegion level.  Store just provides<a name="line.107"></a>
-<span class="sourceLineNo">108</span> * services to manage sets of StoreFiles.  One of the most important of those<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * services is compaction services where files are aggregated once they pass<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * a configurable threshold.<a name="line.110"></a>
-<span class="sourceLineNo">111</span> *<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * &lt;p&gt;Locking and transactions are handled at a higher level.  This API should<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * not be called directly but by an HRegion manager.<a name="line.113"></a>
-<span class="sourceLineNo">114</span> */<a name="line.114"></a>
-<span class="sourceLineNo">115</span>@InterfaceAudience.Private<a name="line.115"></a>
-<span class="sourceLineNo">116</span>public class HStore implements Store {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  public static final String MEMSTORE_CLASS_NAME = "hbase.regionserver.memstore.class";<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  public static final String COMPACTCHECKER_INTERVAL_MULTIPLIER_KEY =<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      "hbase.server.compactchecker.interval.multiplier";<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  public static final String BLOCKING_STOREFILES_KEY = "hbase.hstore.blockingStoreFiles";<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  public static final String BLOCK_STORAGE_POLICY_KEY = "hbase.hstore.block.storage.policy";<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  // keep in accordance with HDFS default storage policy<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  public static final String DEFAULT_BLOCK_STORAGE_POLICY = "HOT";<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public static final int DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER = 1000;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  public static final int DEFAULT_BLOCKING_STOREFILE_COUNT = 7;<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>  private static final Log LOG = LogFactory.getLog(HStore.class);<a name="line.127"></a>
-<span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>  protected final MemStore memstore;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  // This stores directory in the filesystem.<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  protected final HRegion region;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private final HColumnDescriptor family;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private final HRegionFileSystem fs;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  protected Configuration conf;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  protected CacheConfig cacheConf;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  private long lastCompactSize = 0;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  volatile boolean forceMajor = false;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  /* how many bytes to write between status checks */<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  static int closeCheckInterval = 0;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  private volatile long storeSize = 0L;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private volatile long totalUncompressedBytes = 0L;<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>  /**<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * RWLock for store operations.<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   * Locked in shared mode when the list of component stores is looked at:<a name="line.145"></a>
-<span class="sourceLineNo">146</span>   *   - all reads/writes to table data<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   *   - checking for split<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   * Locked in exclusive mode when the list of component stores is modified:<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   *   - closing<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   *   - completing a compaction<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   */<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  /**<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * Lock specific to archiving compacted store files.  This avoids races around<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   * the combination of retrieving the list of compacted files and moving them to<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   * the archive directory.  Since this is usually a background process (other than<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * on close), we don't want to handle this with the store write lock, which would<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   * block readers and degrade performance.<a name="line.158"></a>
-<span class="sourceLineNo">159</span>   *<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   * Locked by:<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   *   - CompactedHFilesDispatchHandler via closeAndArchiveCompactedFiles()<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   *   - close()<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   */<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  final ReentrantLock archiveLock = new ReentrantLock();<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  private final boolean verifyBulkLoads;<a name="line.166"></a>
-<span class="sourceLineNo">167</span><a name="line.167"></a>
-<span class="sourceLineNo">168</span>  private ScanInfo scanInfo;<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>  // TODO: ideally, this should be part of storeFileManager, as we keep passing this to it.<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  final List&lt;StoreFile&gt; filesCompacting = Lists.newArrayList();<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  // All access must be synchronized.<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  private final Set&lt;ChangedReadersObserver&gt; changedReaderObservers =<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    Collections.newSetFromMap(new ConcurrentHashMap&lt;ChangedReadersObserver, Boolean&gt;());<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>  protected final int blocksize;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  private HFileDataBlockEncoder dataBlockEncoder;<a name="line.178"></a>
-<span class="sourceLineNo">179</span><a name="line.179"></a>
-<span class="sourceLineNo">180</span>  /** Checksum configuration */<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  protected ChecksumType checksumType;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  protected int bytesPerChecksum;<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  // Comparing KeyValues<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  protected final CellComparator comparator;<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>  final StoreEngine&lt;?, ?, ?, ?&gt; storeEngine;<a name="line.187"></a>
-<span class="sourceLineNo">188</span><a name="line.188"></a>
-<span class="sourceLineNo">189</span>  private static final AtomicBoolean offPeakCompactionTracker = new AtomicBoolean();<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  private volatile OffPeakHours offPeakHours;<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>  private static final int DEFAULT_FLUSH_RETRIES_NUMBER = 10;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>  private int flushRetriesNumber;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>  private int pauseTime;<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>  private long blockingFileCount;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private int compactionCheckMultiplier;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>  protected Encryption.Context cryptoContext = Encryption.Context.NONE;<a name="line.198"></a>
-<span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>  private volatile long flushedCellsCount = 0;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>  private volatile long compactedCellsCount = 0;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>  private volatile long majorCompactedCellsCount = 0;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  private volatile long flushedCellsSize = 0;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  private volatile long flushedOutputFileSize = 0;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  private volatile long compactedCellsSize = 0;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  private volatile long majorCompactedCellsSize = 0;<a name="line.206"></a>
-<span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>  /**<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   * Constructor<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   * @param region<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   * @param family HColumnDescriptor for this column<a name="line.211"></a>
-<span class="sourceLineNo">212</span>   * @param confParam configuration object<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * failed.  Can be null.<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   * @throws IOException<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   */<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  protected HStore(final HRegion region, final HColumnDescriptor family,<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      final Configuration confParam) throws IOException {<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>    this.fs = region.getRegionFileSystem();<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>    // Assemble the store's home directory and Ensure it exists.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    fs.createStoreDir(family.getNameAsString());<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    this.region = region;<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    this.family = family;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    // 'conf' renamed to 'confParam' b/c we use this.conf in the constructor<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    // CompoundConfiguration will look for keys in reverse order of addition, so we'd<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    // add global config first, then table and cf overrides, then cf metadata.<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    this.conf = new CompoundConfiguration()<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      .add(confParam)<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      .addStringMap(region.getTableDesc().getConfiguration())<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      .addStringMap(family.getConfiguration())<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      .addBytesMap(family.getValues());<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    this.blocksize = family.getBlocksize();<a name="line.233"></a>
-<span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>    // set block storage policy for store directory<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    String policyName = family.getStoragePolicy();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    if (null == policyName) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      policyName = this.conf.get(BLOCK_STORAGE_POLICY_KEY, DEFAULT_BLOCK_STORAGE_POLICY);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    this.fs.setStoragePolicy(family.getNameAsString(), policyName.trim());<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>    this.dataBlockEncoder =<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        new HFileDataBlockEncoderImpl(family.getDataBlockEncoding());<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    this.comparator = region.getCellComparator();<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    // used by ScanQueryMatcher<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    long timeToPurgeDeletes =<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        Math.max(conf.getLong("hbase.hstore.time.to.purge.deletes", 0), 0);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    LOG.trace("Time to purge deletes set to " + timeToPurgeDeletes +<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        "ms in store " + this);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    // Get TTL<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    long ttl = determineTTLFromFamily(family);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    // Why not just pass a HColumnDescriptor in here altogether?  Even if have<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    // to clone it?<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    scanInfo = new ScanInfo(conf, family, ttl, timeToPurgeDeletes, this.comparator);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    MemoryCompactionPolicy inMemoryCompaction = family.getInMemoryCompaction();<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    if(inMemoryCompaction == null) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      inMemoryCompaction = MemoryCompactionPolicy.valueOf(<a name="line.258"></a>
-<span class="sourceLineNo">259</span>          conf.get(CompactingMemStore.COMPACTING_MEMSTORE_TYPE_KEY,<a name="line.259"></a>
-<span class="sourceLineNo">260</span>              CompactingMemStore.COMPACTING_MEMSTORE_TYPE_DEFAULT));<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    String className;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    switch (inMemoryCompaction) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      case BASIC :<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      case EAGER :<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        Class&lt;? extends CompactingMemStore&gt; clz = conf.getClass(MEMSTORE_CLASS_NAME,<a name="line.266"></a>
-<span class="sourceLineNo">267</span>          CompactingMemStore.class, CompactingMemStore.class);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        className = clz.getName();<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        this.memstore = ReflectionUtils.newInstance(clz, new Object[] { conf, this.comparator, this,<a name="line.269"></a>
-<span class="sourceLineNo">270</span>            this.getHRegion().getRegionServicesForStores(), inMemoryCompaction});<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        break;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      case NONE :<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      default:<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        className = DefaultMemStore.class.getName();<a name="line.274"></a>
-<span class="sourceLineNo">275</span>        this.memstore = ReflectionUtils.instantiateWithCustomCtor(className, new Class[] {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        Configuration.class, CellComparator.class }, new Object[] { conf, this.comparator });<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    LOG.info("Memstore class name is " + className);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    this.offPeakHours = OffPeakHours.getInstance(conf);<a name="line.279"></a>
-<span class="sourceLineNo">280</span><a name="line.280"></a>
-<span class="sourceLineNo">281</span>    // Setting up cache configuration for this family<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    createCacheConf(family);<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>    this.verifyBulkLoads = conf.getBoolean("hbase.hstore.bulkload.verify", false);<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    this.blockingFileCount =<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        conf.getInt(BLOCKING_STOREFILES_KEY, DEFAULT_BLOCKING_STOREFILE_COUNT);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    this.compactionCheckMultiplier = conf.getInt(<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        COMPACTCHECKER_INTERVAL_MULTIPLIER_KEY, DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    if (this.compactionCheckMultiplier &lt;= 0) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      LOG.error("Compaction check period multiplier must be positive, setting default: "<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          + DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER);<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      this.compactionCheckMultiplier = DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    }<a name="line.294"></a>
-<span class="sourceLineNo">295</span><a name="line.295"></a>
-<span class="sourceLineNo">296</span>    if (HStore.closeCheckInterval == 0) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      HStore.closeCheckInterval = conf.getInt(<a name="line.297"></a>
-<span class="sourceLineNo">298</span>          "hbase.hstore.close.check.interval", 10*1000*1000 /* 10 MB */);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    }<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>    this.storeEngine = createStoreEngine(this, this.conf, this.comparator);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    this.storeEngine.getStoreFileManager().loadFiles(loadStoreFiles());<a name="line.302"></a>
-<span class="sourceLineNo">303</span><a name="line.303"></a>
-<span class="sourceLineNo">304</span>    // Initialize checksum type from name. The names are CRC32, CRC32C, etc.<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    this.checksumType = getChecksumType(conf);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    // initilize bytes per checksum<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    this.bytesPerChecksum = getBytesPerChecksum(conf);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    flushRetriesNumber = conf.getInt(<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        "hbase.hstore.flush.retries.number", DEFAULT_FLUSH_RETRIES_NUMBER);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    pauseTime = conf.getInt(HConstants.HBASE_SERVER_PAUSE, HConstants.DEFAULT_HBASE_SERVER_PAUSE);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    if (flushRetriesNumber &lt;= 0) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      throw new IllegalArgumentException(<a name="line.312"></a>
-<span class="sourceLineNo">313</span>          "hbase.hstore.flush.retries.number must be &gt; 0, not "<a name="line.313"></a>
-<span class="sourceLineNo">314</span>              + flushRetriesNumber);<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    cryptoContext = EncryptionUtil.createEncryptionContext(conf, family);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>  }<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>  /**<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   * Creates the cache config.<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * @param family The current column family.<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   */<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  protected void createCacheConf(final HColumnDescriptor family) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    this.cacheConf = new CacheConfig(conf, family);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>  /**<a name="line.327"></a>
-<span class="sourceLineNo">328</span>   * Creates the store engine configured for the given Store.<a name="line.328"></a>
-<span class="sourceLineNo">329</span>   * @param store The store. An unfortunate dependency needed due to it<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   *              being passed to coprocessors via the compactor.<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * @param conf Store configuration.<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * @param kvComparator KVComparator for storeFileManager.<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   * @return StoreEngine to use.<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   */<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  protected StoreEngine&lt;?, ?, ?, ?&gt; createStoreEngine(Store store, Configuration conf,<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      CellComparator kvComparator) throws IOException {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    return StoreEngine.create(store, conf, comparator);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>  /**<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * @param family<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * @return TTL in seconds of the specified family<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   */<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  public static long determineTTLFromFamily(final HColumnDescriptor family) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    // HCD.getTimeToLive returns ttl in seconds.  Convert to milliseconds.<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    long ttl = family.getTimeToLive();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    if (ttl == HConstants.FOREVER) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      // Default is unlimited ttl.<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      ttl = Long.MAX_VALUE;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    } else if (ttl == -1) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      ttl = Long.MAX_VALUE;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    } else {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      // Second -&gt; ms adjust for user data<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      ttl *= 1000;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    return ttl;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  }<a name="line.357"></a>
-<span class="sourceLineNo">358</span><a name="line.358"></a>
-<span class="sourceLineNo">359</span>  @Override<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  public String getColumnFamilyName() {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    return this.family.getNameAsString();<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>  @Override<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  public TableName getTableName() {<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    return this.getRegionInfo().getTable();<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  @Override<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public FileSystem getFileSystem() {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    return this.fs.getFileSystem();<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  public HRegionFileSystem getRegionFileSystem() {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    return this.fs;<a name="line.375"></a>
-<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>  /* Implementation of StoreConfigInformation */<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  @Override<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  public long getStoreFileTtl() {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    // TTL only applies if there's no MIN_VERSIONs setting on the column.<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    return (this.scanInfo.getMinVersions() == 0) ? this.scanInfo.getTtl() : Long.MAX_VALUE;<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>  @Override<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  public long getMemstoreFlushSize() {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    // TODO: Why is this in here?  The flushsize of the region rather than the store?  St.Ack<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    return this.region.memstoreFlushSize;<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>  @Override<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  @Deprecated<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  public long getFlushableSize() {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    MemstoreSize size = getSizeToFlush();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    return size.getHeapSize();<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  }<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  @Override<a name="line.398"></a>
-<span class="sourceLineNo">399</span>  public MemstoreSize getSizeToFlush() {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    return this.memstore.getFlushableSize();<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  @Override<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  @Deprecated<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  public long getSnapshotSize() {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    MemstoreSize size = getSizeOfSnapshot();<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    return size.getHeapSize();<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  }<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>  @Override<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  public MemstoreSize getSizeOfSnapshot() {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    return this.memstore.getSnapshotSize();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  }<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>  @Override<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  public long getCompactionCheckMultiplier() {<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    return this.compactionCheckMultiplier;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>  @Override<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  public long getBlockingFileCount() {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    return blockingFileCount;<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  }<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  /* End implementation of StoreConfigInformation */<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>  /**<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * Returns the configured bytesPerChecksum value.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * @param conf The configuration<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @return The bytesPerChecksum that is set in the configuration<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   */<a name="line.430"></a>
-<span class="sourceLineNo">431</span>  public static int getBytesPerChecksum(Configuration conf) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    return conf.getInt(HConstants.BYTES_PER_CHECKSUM,<a name="line.432"></a>
-<span class="sourceLineNo">433</span>                       HFile.DEFAULT_BYTES_PER_CHECKSUM);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
-<span class="sourceLineNo">435</span><a name="line.435"></a>
-<span class="sourceLineNo">436</span>  /**<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * Returns the configured checksum algorithm.<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   * @param conf The configuration<a name="line.438"></a>
-<span class="sourceLineNo">439</span>   * @return The checksum algorithm that is set in the configuration<a name="line.439"></a>
-<span class="sourceLineNo">440</span>   */<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  public static ChecksumType getChecksumType(Configuration conf) {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    String checksumName = conf.get(HConstants.CHECKSUM_TYPE_NAME);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    if (checksumName == null) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      return ChecksumType.getDefaultChecksumType();<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    } else {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      return ChecksumType.nameToType(checksumName);<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><a name="line.449"></a>
-<span class="sourceLineNo">450</span>  /**<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * @return how many bytes to write between status checks<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   */<a name="line.452"></a>
-<span class="sourceLineNo">453</span>  public static int getCloseCheckInterval() {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    return closeCheckInterval;<a name="line.454"></a>
-<span class="sourceLineNo">455</span>  }<a name="line.455"></a>
-<span class="sourceLineNo">456</span><a name="line.456"></a>
-<span class="sourceLineNo">457</span>  @Override<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  public HColumnDescriptor getFamily() {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    return this.family;<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>  /**<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * @return The maximum sequence id in all store files. Used for log replay.<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   */<a name="line.464"></a>
-<span class="sourceLineNo">465</span>  @Override<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  public long getMaxSequenceId() {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    return StoreUtils.getMaxSequenceIdInList(this.getStorefiles());<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  }<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>  @Override<a name="line.470"></a>
-<span class="sourceLineNo">471</span>  public long getMaxMemstoreTS() {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return StoreUtils.getMaxMemstoreTSInList(this.getStorefiles());<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * @param tabledir {@link Path} to where the table is being stored<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @param hri {@link HRegionInfo} for the region.<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * @param family {@link HColumnDescriptor} describing the column family<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * @return Path to family/Store home directory.<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   */<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  @Deprecated<a name="line.481"></a>
-<span class="sourceLineNo">482</span>  public static Path getStoreHomedir(final Path tabledir,<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      final HRegionInfo hri, final byte[] family) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    return getStoreHomedir(tabledir, hri.getEncodedName(), family);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  }<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>  /**<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * @param tabledir {@link Path} to where the table is being stored<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   * @param encodedName Encoded region name.<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * @param family {@link HColumnDescriptor} describing the column family<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * @return Path to family/Store home directory.<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   */<a name="line.492"></a>
-<span class="sourceLineNo">493</span>  @Deprecated<a name="line.493"></a>
-<span class="sourceLineNo">494</span>  public static Path getStoreHomedir(final Path tabledir,<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      final String encodedName, final byte[] family) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    return new Path(tabledir, new Path(encodedName, Bytes.toString(family)));<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  }<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>  @Override<a name="line.499"></a>
-<span class="sourceLineNo">500</span>  public HFileDataBlockEncoder getDataBlockEncoder() {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    return dataBlockEncoder;<a name="line.501"></a>
-<span class="sourceLineNo">502</span>  }<a name="line.502"></a>
-<span class="sourceLineNo">503</span><a name="line.503"></a>
-<span class="sourceLineNo">504</span>  /**<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * Should be used only in tests.<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @param blockEncoder the block delta encoder to use<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   */<a name="line.507"></a>
-<span class="sourceLineNo">508</span>  void setDataBlockEncoderInTest(HFileDataBlockEncoder blockEncoder) {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    this.dataBlockEncoder = blockEncoder;<a name="line.509"></a>
-<span class="sourceLineNo">510</span>  }<a name="line.510"></a>
-<span class="sourceLineNo">511</span><a name="line.511"></a>
-<span class="sourceLineNo">512</span>  /**<a name="line.512"></a>
-<span class="sourceLineNo">513</span>   * Creates an unsorted list of StoreFile loaded in parallel<a name="line.513"></a>
-<span class="sourceLineNo">514</span>   * from the given directory.<a name="line.514"></a>
-<span class="sourceLineNo">515</span>   * @throws IOException<a name="line.515"></a>
-<span class="sourceLineNo">516</span>   */<a name="line.516"></a>
-<span class="sourceLineNo">517</span>  private List&lt;StoreFile&gt; loadStoreFiles() throws IOException {<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    Collection&lt;StoreFileInfo&gt; files = fs.getStoreFiles(getColumnFamilyName());<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    return openStoreFiles(files);<a name="line.519"></a>
-<span class="sourceLineNo">520</span>  }<a name="line.520"></a>
-<span class="sourceLineNo">521</span><a name="line.521"></a>
-<span class="sourceLineNo">522</span>  private List&lt;StoreFile&gt; openStoreFiles(Collection&lt;StoreFileInfo&gt; files) throws IOException {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    if (files == null || files.isEmpty()) {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      return new ArrayList&lt;&gt;();<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    // initialize the thread pool for opening store files in parallel..<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    ThreadPoolExecutor storeFileOpenerThreadPool =<a name="line.527"></a>
-<span class="sourceLineNo">528</span>      this.region.getStoreFileOpenAndCloseThreadPool("StoreFileOpenerThread-" +<a name="line.528"></a>
-<span class="sourceLineNo">529</span>          this.getColumnFamilyName());<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    CompletionService&lt;StoreFile&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeFileOpenerThreadPool);<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>    int totalValidStoreFile = 0;<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    for (final StoreFileInfo storeFileInfo: files) {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      // open each store file in parallel<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      completionService.submit(new Callable&lt;StoreFile&gt;() {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        @Override<a name="line.536"></a>
-<span class="sourceLineNo">537</span>        public StoreFile call() throws IOException {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>          StoreFile storeFile = createStoreFileAndReader(storeFileInfo);<a name="line.538"></a>
-<span class="sourceLineNo">539</span>          return storeFile;<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>      totalValidStoreFile++;<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>    ArrayList&lt;StoreFile&gt; results = new ArrayList&lt;&gt;(files.size());<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    IOException ioe = null;<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    try {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      for (int i = 0; i &lt; totalValidStoreFile; i++) {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>        try {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>          Future&lt;StoreFile&gt; future = completionService.take();<a name="line.550"></a>
-<span class="sourceLineNo">551</span>          StoreFile storeFile = future.get();<a name="line.551"></a>
-<span class="sourceLineNo">552</span>          if (storeFile != null) {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>            long length = storeFile.getReader().length();<a name="line.553"></a>
-<span class="sourceLineNo">554</span>            this.storeSize += length;<a name="line.554"></a>
-<span class="sourceLineNo">555</span>            this.totalUncompressedBytes += storeFile.getReader().getTotalUncompressedBytes();<a name="line.555"></a>
-<span class="sourceLineNo">556</span>            if (LOG.isDebugEnabled()) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>              LOG.debug("loaded " + storeFile.toStringDetailed());<a name="line.557"></a>
-<span class="sourceLineNo">558</span>            }<a name="line.558"></a>
-<span class="sourceLineNo">559</span>            results.add(storeFile);<a name="line.559"></a>
-<span class="sourceLineNo">560</span>          }<a name="line.560"></a>
-<span class="sourceLineNo">561</span>        } catch (InterruptedException e) {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>          if (ioe == null) ioe = new InterruptedIOException(e.getMessage());<a name="line.562"></a>
-<span class="sourceLineNo">563</span>        } catch (ExecutionException e) {<a name="line.563"></a>
-<span class="sourceLineNo">564</span>          if (ioe == null) ioe = new IOException(e.getCause());<a name="line.564"></a>
-<span class="sourceLineNo">565</span>        }<a name="line.565"></a>
-<span class="sourceLineNo">566</span>      }<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    } finally {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      storeFileOpenerThreadPool.shutdownNow();<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    }<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    if (ioe != null) {<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      // close StoreFile readers<a name="line.571"></a>
-<span class="sourceLineNo">572</span>      boolean evictOnClose =<a name="line.572"></a>
-<span class="sourceLineNo">573</span>          cacheConf != null? cacheConf.shouldEvictOnClose(): true;<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      for (StoreFile file : results) {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>        try {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>          if (file != null) file.closeReader(evictOnClose);<a name="line.576"></a>
-<span class="sourceLineNo">577</span>        } catch (IOException e) {<a name="line.577"></a>
-<span class="sourceLineNo">578</span>          LOG.warn(e.getMessage());<a name="line.578"></a>
-<span class="sourceLineNo">579</span>        }<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      }<a name="line.580"></a>
-<span class="sourceLineNo">581</span>      throw ioe;<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>    return results;<a name="line.584"></a>
-<span class="sourceLineNo">585</span>  }<a name="line.585"></a>
-<span class="sourceLineNo">586</span><a name="line.586"></a>
-<span class="sourceLineNo">587</span>  /**<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * Checks the underlying store files, and opens the files that  have not<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * been opened, and removes the store file readers for store files no longer<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   * available. Mainly used by secondary region replicas to keep up to date with<a name="line.590"></a>
-<span class="sourceLineNo">591</span>   * the primary region files.<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   * @throws IOException<a name="line.592"></a>
-<span class="sourceLineNo">593</span>   */<a name="line.593"></a>
-<span class="sourceLineNo">594</span>  @Override<a name="line.594"></a>
-<span class="sourceLineNo">595</span>  public void refreshStoreFiles() throws IOException {<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    Collection&lt;StoreFileInfo&gt; newFiles = fs.getStoreFiles(getColumnFamilyName());<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    refreshStoreFilesInternal(newFiles);<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 void refreshStoreFiles(Collection&lt;String&gt; newFiles) throws IOException {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    List&lt;StoreFileInfo&gt; storeFiles = new ArrayList&lt;&gt;(newFiles.size());<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    for (String file : newFiles) {<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      storeFiles.add(fs.getStoreFileInfo(getColumnFamilyName(), file));<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    }<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    refreshStoreFilesInternal(storeFiles);<a name="line.606"></a>
-<span class="sourceLineNo">607</span>  }<a name="line.607"></a>
-<span class="sourceLineNo">608</span><a name="line.608"></a>
-<span class="sourceLineNo">609</span>  /**<a name="line.609"></a>
-<span class="sourceLineNo">610</span>   * Checks the underlying store files, and opens the files that  have not<a name="line.610"></a>
-<span class="sourceLineNo">611</span>   * been opened, and removes the store file readers for store files no longer<a name="line.611"></a>
-<span class="sourceLineNo">612</span>   * available. Mainly used by secondary region replicas to keep up to date with<a name="line.612"></a>
-<span class="sourceLineNo">613</span>   * the primary region files.<a name="line.613"></a>
-<span class="sourceLineNo">614</span>   * @throws IOException<a name="line.614"></a>
-<span class="sourceLineNo">615</span>   */<a name="line.615"></a>
-<span class="sourceLineNo">616</span>  private void refreshStoreFilesInternal(Collection&lt;StoreFileInfo&gt; newFiles) throws IOException {<a name="line.616"></a>
-<span class="sourceLineNo">617</span>    StoreFileManager sfm = storeEngine.getStoreFileManager();<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    Collection&lt;StoreFile&gt; currentFiles = sfm.getStorefiles();<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    if (currentFiles == null) currentFiles = new ArrayList&lt;&gt;(0);<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>    if (newFiles == null) newFiles = new ArrayList&lt;&gt;(0);<a name="line.621"></a>
-<span class="sourceLineNo">622</span><a name="line.622"></a>
-<span class="sourceLineNo">623</span>    HashMap&lt;StoreFileInfo, StoreFile&gt; currentFilesSet = new HashMap&lt;&gt;(currentFiles.size());<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    for (StoreFile sf : currentFiles) {<a name="line.624"></a>
-<span class="sourceLineNo">625</span>      currentFilesSet.put(sf.getFileInfo(), sf);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    }<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    HashSet&lt;StoreFileInfo&gt; newFilesSet = new HashSet&lt;&gt;(newFiles);<a name="line.627"></a>
-<span class="sourceLineNo">628</span><a name="line.628"></a>
-<span class="sourceLineNo">629</span>    Set&lt;StoreFileInfo&gt; toBeAddedFiles = Sets.difference(newFilesSet, currentFilesSet.keySet());<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    Set&lt;StoreFileInfo&gt; toBeRemovedFiles = Sets.difference(currentFilesSet.keySet(), newFilesSet);<a name="line.630"></a>
-<span class="sourceLineNo">631</span><a name="line.631"></a>
-<span class="sourceLineNo">632</span>    if (toBeAddedFiles.isEmpty() &amp;&amp; toBeRemovedFiles.isEmpty()) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>      return;<a name="line.633"></a>
-<span class="sourceLineNo">634</span>    }<a name="line.634"></a>
-<span class="sourceLineNo">635</span><a name="line.635"></a>
-<span class="sourceLineNo">636</span>    LOG.info("Refreshing store files for region " + this.getRegionInfo().getRegionNameAsString()<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      + " files to add: " + toBeAddedFiles + " files to remove: " + toBeRemovedFiles);<a name="line.637"></a>
-<span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>    Set&lt;StoreFile&gt; toBeRemovedStoreFiles = new HashSet&lt;&gt;(toBeRemovedFiles.size());<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    for (StoreFileInfo sfi : toBeRemovedFiles) {<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      toBeRemovedStoreFiles.add(currentFilesSet.get(sfi));<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    }<a name="line.642"></a>
-<span class="sourceLineNo">643</span><a name="line.643"></a>
-<span class="sourceLineNo">644</span>    // try to open the files<a name="line.644"></a>
-<span class="sourceLineNo">645</span>    List&lt;StoreFile&gt; openedFiles = openStoreFiles(toBeAddedFiles);<a name="line.645"></a>
-<span class="sourceLineNo">646</span><a name="line.646"></a>
-<span class="sourceLineNo">647</span>    // propogate the file changes to the underlying store file manager<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    replaceStoreFiles(toBeRemovedStoreFiles, openedFiles); //won't throw an exception<a name="line.648"></a>
-<span class="sourceLineNo">649</span><a name="line.649"></a>
-<span class="sourceLineNo">650</span>    // Advance the memstore read point to be at least the new store files seqIds so that<a name="line.650"></a>
-<span class="sourceLineNo">651</span>    // readers might pick it up. This assumes that the store is not getting any writes (otherwise<a name="line.651"></a>
-<span class="sourceLineNo">652</span>    // in-flight transactions might be made visible)<a name="line.652"></a>
-<span class="sourceLineNo">653</span>    if (!toBeAddedFiles.isEmpty()) {<a name="line.653"></a>
-<span class="sourceLineNo">654</span>      region.getMVCC().advanceTo(this.getMaxSequenceId());<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    }<a name="line.655"></a>
-<span class="sourceLineNo">656</span><a name="line.656"></a>
-<span class="sourceLineNo">657</span>    completeCompaction(toBeRemovedStoreFiles);<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>  private StoreFile createStoreFileAndReader(final Path p) throws IOException {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    StoreFileInfo info = new StoreFileInfo(conf, this.getFileSystem(), p);<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    return createStoreFileAndReader(info);<a name="line.662"></a>
-<span class="sourceLineNo">663</span>  }<a name="line.663"></a>
-<span class="sourceLineNo">664</span><a name="line.664"></a>
-<span class="sourceLineNo">665</span>  private StoreFile createStoreFileAndReader(final StoreFileInfo info) throws IOException {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    info.setRegionCoprocessorHost(this.region.getCoprocessorHost());<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    StoreFile storeFile = new HStoreFile(this.getFileSystem(), info, this.conf, this.cacheConf,<a name="line.667"></a>
-<span class="sourceLineNo">668</span>        this.family.getBloomFilterType(), isPrimaryReplicaStore());<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    storeFile.initReader();<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    return storeFile;<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>  /**<a name="line.673"></a>
-<span class="sourceLineNo">674</span>   * This message intends to inform the MemStore that next coming updates<a name="line.674"></a>
-<span class="sourceLineNo">675</span>   * are going to be part of the replaying edits from WAL<a name="line.675"></a>
-<span class="sourceLineNo">676</span>   */<a name="line.676"></a>
-<span class="sourceLineNo">677</span>  public void startReplayingFromWAL(){<a name="line.677"></a>
-<span class="sourceLineNo">678</span>    this.memstore.startReplayingFromWAL();<a name="line.678"></a>
-<span class="sourceLineNo">679</span>  }<a name="line.679"></a>
-<span class="sourceLineNo">680</span><a name="line.680"></a>
-<span class="sourceLineNo">681</span>  /**<a name="line.681"></a>
-<span class="sourceLineNo">682</span>   * This message intends to inform the MemStore that the replaying edits from WAL<a name="line.682"></a>
-<span class="sourceLineNo">683</span>   * are done<a name="line.683"></a>
-<span class="sourceLineNo">684</span>   */<a name="line.684"></a>
-<span class="sourceLineNo">685</span>  public void stopReplayingFromWAL(){<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    this.memstore.stopReplayingFromWAL();<a name="line.686"></a>
-<span class="sourceLineNo">687</span>  }<a name="line.687"></a>
-<span class="sourceLineNo">688</span><a name="line.688"></a>
-<span class="sourceLineNo">689</span>  /**<a name="line.689"></a>
-<span class="sourceLineNo">690</span>   * Adds a value to the memstore<a name="line.690"></a>
-<span class="sourceLineNo">691</span>   * @param cell<a name="line.691"></a>
-<span class="sourceLineNo">692</span>   * @param memstoreSize<a name="line.692"></a>
-<span class="sourceLineNo">693</span>   */<a name="line.693"></a>
-<span class="sourceLineNo">694</span>  public void add(final Cell cell, MemstoreSize memstoreSize) {<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    lock.readLock().lock();<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    try {<a name="line.696"></a>
-<span class="sourceLineNo">697</span>       this.memstore.add(cell, memstoreSize);<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    } finally {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>      lock.readLock().unlock();<a name="line.699"></a>
-<span class="sourceLineNo">700</span>    }<a name="line.700"></a>
-<span class="sourceLineNo">701</span>  }<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>  /**<a name="line.703"></a>
-<span class="sourceLineNo">704</span>   * Adds the specified value to the memstore<a name="line.704"></a>
-<span class="sourceLineNo">705</span>   * @param cells<a name="line.705"></a>
-<span class="sourceLineNo">706</span>   * @param memstoreSize<a name="line.706"></a>
-<span class="sourceLineNo">707</span>   */<a name="line.707"></a>
-<span class="sourceLineNo">708</span>  public void add(final Iterable&lt;Cell&gt; cells, MemstoreSize memstoreSize) {<a name="line.708"></a>
-<span class="sourceLineNo">709</span>    lock.readLock().lock();<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    try {<a name="line.710"></a>
-<span class="sourceLineNo">711</span>      memstore.add(cells, memstoreSize);<a name="line.711"></a>
-<span class="sourceLineNo">712</span>    } finally {<a name="line.712"></a>
-<span class="sourceLineNo">713</span>      lock.readLock().unlock();<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><a name="line.716"></a>
-<span class="sourceLineNo">717</span>  @Override<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  public long timeOfOldestEdit() {<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    return memstore.timeOfOldestEdit();<a name="line.719"></a>
-<span class="sourceLineNo">720</span>  }<a name="line.720"></a>
-<span class="sourceLineNo">721</span><a name="line.721"></a>
-<span class="sourceLineNo">722</span>  /**<a name="line.722"></a>
-<span class="sourceLineNo">723</span>   * @return All store files.<a name="line.723"></a>
-<span class="sourceLineNo">724</span>   */<a name="line.724"></a>
-<span class="sourceLineNo">725</span>  @Override<a name="line.725"></a>
-<span class="sourceLineNo">726</span>  public Collection&lt;StoreFile&gt; getStorefiles() {<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    return this.storeEngine.getStoreFileManager().getStorefiles();<a name="line.727"></a>
-<span class="sourceLineNo">728</span>  }<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>   * This throws a WrongRegionException if the HFile does not fit in this region, or an<a name="line.731"></a>
-<span class="sourceLineNo">732</span>   * InvalidHFileException if the HFile is not valid.<a name="line.732"></a>
-<span class="sourceLineNo">733</span>   */<a name="line.733"></a>
-<span class="sourceLineNo">734</span>  public void assertBulkLoadHFileOk(Path srcPath) throws IOException {<a name="line.734"></a>
-<span class="sourceLineNo">735</span>    HFile.Reader reader  = null;<a name="line.735"></a>
-<span class="sourceLineNo">736</span>    try {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>      LOG.info("Validating hfile at " + srcPath + " for inclusion in "<a name="line.737"></a>
-<span class="sourceLineNo">738</span>          + "store " + this + " region " + this.getRegionInfo().getRegionNameAsString());<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      reader = HFile.createReader(srcPath.getFileSystem(conf), srcPath, cacheConf,<a name="line.739"></a>
-<span class="sourceLineNo">740</span>        isPrimaryReplicaStore(), conf);<a name="line.740"></a>
-<span class="sourceLineNo">741</span>      reader.loadFileInfo();<a name="line.741"></a>
-<span class="sourceLineNo">742</span><a name="line.742"></a>
-<span class="sourceLineNo">743</span>      byte[] firstKey = reader.getFirstRowKey();<a name="line.743"></a>
-<span class="sourceLineNo">744</span>      Preconditions.checkState(firstKey != null, "First key can not be null");<a name="line.744"></a>
-<span class="sourceLineNo">745</span>      Cell lk = reader.getLastKey();<a name="line.745"></a>
-<span class="sourceLineNo">746</span>      Preconditions.checkState(lk != null, "Last key can not be null");<a name="line.746"></a>
-<span class="sourceLineNo">747</span>      byte[] lastKey =  CellUtil.cloneRow(lk);<a name="line.747"></a>
+<span class="sourceLineNo">031</span>import java.util.Map;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.NavigableSet;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.Set;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.concurrent.Callable;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.concurrent.CompletionService;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.concurrent.ConcurrentHashMap;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.concurrent.ExecutionException;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.concurrent.ExecutorCompletionService;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.concurrent.Future;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import java.util.concurrent.locks.ReentrantLock;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import java.util.concurrent.locks.ReentrantReadWriteLock;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.function.Predicate;<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.commons.logging.Log;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.commons.logging.LogFactory;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.conf.Configuration;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.fs.FileSystem;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.fs.Path;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.Cell;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.HConstants;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.TableName;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.backup.FailedArchiveException;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.io.crypto.Encryption;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoder;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoderImpl;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.io.hfile.HFileScanner;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.io.hfile.InvalidHFileException;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionProgress;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.regionserver.compactions.OffPeakHours;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.security.EncryptionUtil;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.security.User;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescriptor;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.util.ChecksumType;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.util.ReflectionUtils;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.util.StringUtils;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>import com.google.common.annotations.VisibleForTesting;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.google.common.base.Preconditions;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.google.common.collect.ImmutableCollection;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import com.google.common.collect.ImmutableList;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import com.google.common.collect.Lists;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import com.google.common.collect.Sets;<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>/**<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * A Store holds a column family in a Region.  Its a memstore and a set of zero<a name="line.104"></a>
+<span class="sourceLineNo">105</span> * or more StoreFiles, which stretch backwards over time.<a name="line.105"></a>
+<span class="sourceLineNo">106</span> *<a name="line.106"></a>
+<span class="sourceLineNo">107</span> * &lt;p&gt;There's no reason to consider append-logging at this level; all logging<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * and locking is handled at the HRegion level.  Store just provides<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * services to manage sets of StoreFiles.  One of the most important of those<a name="line.109"></a>
+<span class="sourceLineNo">110</span> * services is compaction services where files are aggregated once they pass<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * a configurable threshold.<a name="line.111"></a>
+<span class="sourceLineNo">112</span> *<a name="line.112"></a>
+<span class="sourceLineNo">113</span> * &lt;p&gt;Locking and transactions are handled at a higher level.  This API should<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * not be called directly but by an HRegion manager.<a name="line.114"></a>
+<span class="sourceLineNo">115</span> */<a name="line.115"></a>
+<span class="sourceLineNo">116</span>@InterfaceAudience.Private<a name="line.116"></a>
+<span class="sourceLineNo">117</span>public class HStore implements Store {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  public static final String MEMSTORE_CLASS_NAME = "hbase.regionserver.memstore.class";<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  public static final String COMPACTCHECKER_INTERVAL_MULTIPLIER_KEY =<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      "hbase.server.compactchecker.interval.multiplier";<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  public static final String BLOCKING_STOREFILES_KEY = "hbase.hstore.blockingStoreFiles";<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  public static final String BLOCK_STORAGE_POLICY_KEY = "hbase.hstore.block.storage.policy";<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  // keep in accordance with HDFS default storage policy<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  public static final String DEFAULT_BLOCK_STORAGE_POLICY = "HOT";<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  public static final int DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER = 1000;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  public static final int DEFAULT_BLOCKING_STOREFILE_COUNT = 7;<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private static final Log LOG = LogFactory.getLog(HStore.class);<a name="line.128"></a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span>  protected final MemStore memstore;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  // This stores directory in the filesystem.<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  protected final HRegion region;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private final HColumnDescriptor family;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  private final HRegionFileSystem fs;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  protected Configuration conf;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  protected CacheConfig cacheConf;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  private long lastCompactSize = 0;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  volatile boolean forceMajor = false;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  /* how many bytes to write between status checks */<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  static int closeCheckInterval = 0;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  private volatile long storeSize = 0L;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  private volatile long totalUncompressedBytes = 0L;<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>   * RWLock for store operations.<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   * Locked in shared mode when the list of component stores is looked at:<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   *   - all reads/writes to table data<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   *   - checking for split<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * Locked in exclusive mode when the list of component stores is modified:<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   *   - closing<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   *   - completing a compaction<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  /**<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   * Lock specific to archiving compacted store files.  This avoids races around<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   * the combination of retrieving the list of compacted files and moving them to<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   * the archive directory.  Since this is usually a background process (other than<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   * on close), we don't want to handle this with the store write lock, which would<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   * block readers and degrade performance.<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   *<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   * Locked by:<a name="line.161"></a>
+<span class="sourceLineNo">162</span>   *   - CompactedHFilesDispatchHandler via closeAndArchiveCompactedFiles()<a name="line.162"></a>
+<span class="sourceLineNo">163</span>   *   - close()<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   */<a name="line.164"></a>
+<span class="sourceLineNo">165</span>  final ReentrantLock archiveLock = new ReentrantLock();<a name="line.165"></a>
+<span class="sourceLineNo">166</span><a name="line.166"></a>
+<span class="sourceLineNo">167</span>  private final boolean verifyBulkLoads;<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>  private ScanInfo scanInfo;<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>  // TODO: ideally, this should be part of storeFileManager, as we keep passing this to it.<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  final List&lt;StoreFile&gt; filesCompacting = Lists.newArrayList();<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>  // All access must be synchronized.<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  private final Set&lt;ChangedReadersObserver&gt; changedReaderObservers =<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    Collections.newSetFromMap(new ConcurrentHashMap&lt;ChangedReadersObserver, Boolean&gt;());<a name="line.176"></a>
+<span class="sourceLineNo">177</span><a name="line.177"></a>
+<span class="sourceLineNo">178</span>  protected final int blocksize;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  private HFileDataBlockEncoder dataBlockEncoder;<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  /** Checksum configuration */<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  protected ChecksumType checksumType;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  protected int bytesPerChecksum;<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  // Comparing KeyValues<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  protected final CellComparator comparator;<a name="line.186"></a>
+<span class="sourceLineNo">187</span><a name="line.187"></a>
+<span class="sourceLineNo">188</span>  final StoreEngine&lt;?, ?, ?, ?&gt; storeEngine;<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>  private static final AtomicBoolean offPeakCompactionTracker = new AtomicBoolean();<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private volatile OffPeakHours offPeakHours;<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>  private static final int DEFAULT_FLUSH_RETRIES_NUMBER = 10;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  private int flushRetriesNumber;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>  private int pauseTime;<a name="line.195"></a>
+<span class="sourceLineNo">196</span><a name="line.196"></a>
+<span class="sourceLineNo">197</span>  private long blockingFileCount;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>  private int compactionCheckMultiplier;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  protected Encryption.Context cryptoContext = Encryption.Context.NONE;<a name="line.199"></a>
+<span class="sourceLineNo">200</span><a name="line.200"></a>
+<span class="sourceLineNo">201</span>  private volatile long flushedCellsCount = 0;<a name="line.201"></a>
+<span class="sourceLine

<TRUNCATED>

[26/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileManager.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileManager.html
index b8042dc..05376b4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileManager.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileManager.html
@@ -112,71 +112,77 @@
 <span class="sourceLineNo">104</span>  int getStorefileCount();<a name="line.104"></a>
 <span class="sourceLineNo">105</span><a name="line.105"></a>
 <span class="sourceLineNo">106</span>  /**<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   * Gets the store files to scan for a Scan or Get request.<a name="line.107"></a>
-<span class="sourceLineNo">108</span>   * @param startRow Start row of the request.<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * @param stopRow Stop row of the request.<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   * @return The list of files that are to be read for this request.<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   */<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  Collection&lt;StoreFile&gt; getFilesForScan(byte[] startRow, boolean includeStartRow, byte[] stopRow,<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      boolean includeStopRow);<a name="line.113"></a>
-<span class="sourceLineNo">114</span><a name="line.114"></a>
-<span class="sourceLineNo">115</span>  /**<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   * Gets initial, full list of candidate store files to check for row-key-before.<a name="line.116"></a>
-<span class="sourceLineNo">117</span>   * @param targetKey The key that is the basis of the search.<a name="line.117"></a>
-<span class="sourceLineNo">118</span>   * @return The files that may have the key less than or equal to targetKey, in reverse<a name="line.118"></a>
-<span class="sourceLineNo">119</span>   *         order of new-ness, and preference for target key.<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   */<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  Iterator&lt;StoreFile&gt; getCandidateFilesForRowKeyBefore(<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    KeyValue targetKey<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  );<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>  /**<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * Updates the candidate list for finding row key before. Based on the list of candidates<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * remaining to check from getCandidateFilesForRowKeyBefore, targetKey and current candidate,<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   * may trim and reorder the list to remove the files where a better candidate cannot be found.<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   * @param candidateFiles The candidate files not yet checked for better candidates - return<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   *                       value from {@link #getCandidateFilesForRowKeyBefore(KeyValue)},<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   *                       with some files already removed.<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   * @param targetKey The key to search for.<a name="line.132"></a>
-<span class="sourceLineNo">133</span>   * @param candidate The current best candidate found.<a name="line.133"></a>
-<span class="sourceLineNo">134</span>   * @return The list to replace candidateFiles.<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   */<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  Iterator&lt;StoreFile&gt; updateCandidateFilesForRowKeyBefore(<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    Iterator&lt;StoreFile&gt; candidateFiles, KeyValue targetKey, Cell candidate<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  );<a name="line.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  /**<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   * Gets the split point for the split of this set of store files (approx. middle).<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * @return The mid-point, or null if no split is possible.<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * @throws IOException<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  byte[] getSplitPoint() throws IOException;<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>  /**<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * @return The store compaction priority.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   */<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  int getStoreCompactionPriority();<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  /**<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * @param maxTs Maximum expired timestamp.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   * @param filesCompacting Files that are currently compacting.<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   * @return The files which don't have any necessary data according to TTL and other criteria.<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   */<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  Collection&lt;StoreFile&gt; getUnneededFiles(long maxTs, List&lt;StoreFile&gt; filesCompacting);<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>  /**<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   * @return the compaction pressure used for compaction throughput tuning.<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   * @see Store#getCompactionPressure()<a name="line.162"></a>
+<span class="sourceLineNo">107</span>   * Returns the number of compacted files.<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * @return The number of files.<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   */<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  int getCompactedFilesCount();<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span>  /**<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   * Gets the store files to scan for a Scan or Get request.<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * @param startRow Start row of the request.<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   * @param stopRow Stop row of the request.<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   * @return The list of files that are to be read for this request.<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   */<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  Collection&lt;StoreFile&gt; getFilesForScan(byte[] startRow, boolean includeStartRow, byte[] stopRow,<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      boolean includeStopRow);<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>  /**<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   * Gets initial, full list of candidate store files to check for row-key-before.<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   * @param targetKey The key that is the basis of the search.<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   * @return The files that may have the key less than or equal to targetKey, in reverse<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   *         order of new-ness, and preference for target key.<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   */<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  Iterator&lt;StoreFile&gt; getCandidateFilesForRowKeyBefore(<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    KeyValue targetKey<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  );<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  /**<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   * Updates the candidate list for finding row key before. Based on the list of candidates<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   * remaining to check from getCandidateFilesForRowKeyBefore, targetKey and current candidate,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   * may trim and reorder the list to remove the files where a better candidate cannot be found.<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   * @param candidateFiles The candidate files not yet checked for better candidates - return<a name="line.135"></a>
+<span class="sourceLineNo">136</span>   *                       value from {@link #getCandidateFilesForRowKeyBefore(KeyValue)},<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   *                       with some files already removed.<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   * @param targetKey The key to search for.<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * @param candidate The current best candidate found.<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   * @return The list to replace candidateFiles.<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   */<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  Iterator&lt;StoreFile&gt; updateCandidateFilesForRowKeyBefore(<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    Iterator&lt;StoreFile&gt; candidateFiles, KeyValue targetKey, Cell candidate<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  );<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  /**<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * Gets the split point for the split of this set of store files (approx. middle).<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * @return The mid-point, or null if no split is possible.<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   * @throws IOException<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   */<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  byte[] getSplitPoint() throws IOException;<a name="line.152"></a>
+<span class="sourceLineNo">153</span><a name="line.153"></a>
+<span class="sourceLineNo">154</span>  /**<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   * @return The store compaction priority.<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   */<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  int getStoreCompactionPriority();<a name="line.157"></a>
+<span class="sourceLineNo">158</span><a name="line.158"></a>
+<span class="sourceLineNo">159</span>  /**<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   * @param maxTs Maximum expired timestamp.<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   * @param filesCompacting Files that are currently compacting.<a name="line.161"></a>
+<span class="sourceLineNo">162</span>   * @return The files which don't have any necessary data according to TTL and other criteria.<a name="line.162"></a>
 <span class="sourceLineNo">163</span>   */<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  double getCompactionPressure();<a name="line.164"></a>
+<span class="sourceLineNo">164</span>  Collection&lt;StoreFile&gt; getUnneededFiles(long maxTs, List&lt;StoreFile&gt; filesCompacting);<a name="line.164"></a>
 <span class="sourceLineNo">165</span><a name="line.165"></a>
 <span class="sourceLineNo">166</span>  /**<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * @return the comparator used to sort storefiles. Usually, the<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   *         {@link StoreFile#getMaxSequenceId()} is the first priority.<a name="line.168"></a>
+<span class="sourceLineNo">167</span>   * @return the compaction pressure used for compaction throughput tuning.<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * @see Store#getCompactionPressure()<a name="line.168"></a>
 <span class="sourceLineNo">169</span>   */<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  Comparator&lt;StoreFile&gt; getStoreFileComparator();<a name="line.170"></a>
-<span class="sourceLineNo">171</span>}<a name="line.171"></a>
+<span class="sourceLineNo">170</span>  double getCompactionPressure();<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  /**<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * @return the comparator used to sort storefiles. Usually, the<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   *         {@link StoreFile#getMaxSequenceId()} is the first priority.<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   */<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  Comparator&lt;StoreFile&gt; getStoreFileComparator();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>}<a name="line.177"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.StoreScannerCompactionRace.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.StoreScannerCompactionRace.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.StoreScannerCompactionRace.html
index b2b7ff9..b32645e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.StoreScannerCompactionRace.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.StoreScannerCompactionRace.html
@@ -974,185 +974,179 @@
 <span class="sourceLineNo">966</span>    return heap.reseek(kv);<a name="line.966"></a>
 <span class="sourceLineNo">967</span>  }<a name="line.967"></a>
 <span class="sourceLineNo">968</span><a name="line.968"></a>
-<span class="sourceLineNo">969</span>  private void trySwitchToStreamRead() {<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    if (readType != Scan.ReadType.DEFAULT || !scanUsePread || closing || heap.peek() == null ||<a name="line.970"></a>
-<span class="sourceLineNo">971</span>        bytesRead &lt; preadMaxBytes) {<a name="line.971"></a>
-<span class="sourceLineNo">972</span>      return;<a name="line.972"></a>
-<span class="sourceLineNo">973</span>    }<a name="line.973"></a>
-<span class="sourceLineNo">974</span>    if (LOG.isDebugEnabled()) {<a name="line.974"></a>
-<span class="sourceLineNo">975</span>      LOG.debug("Switch to stream read because we have already read " + bytesRead +<a name="line.975"></a>
-<span class="sourceLineNo">976</span>          " bytes from this scanner");<a name="line.976"></a>
-<span class="sourceLineNo">977</span>    }<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    scanUsePread = false;<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    Cell lastTop = heap.peek();<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    Map&lt;String, StoreFile&gt; name2File = new HashMap&lt;&gt;(store.getStorefilesCount());<a name="line.980"></a>
-<span class="sourceLineNo">981</span>    for (StoreFile file : store.getStorefiles()) {<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      name2File.put(file.getFileInfo().getActiveFileName(), file);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span>    List&lt;StoreFile&gt; filesToReopen = new ArrayList&lt;&gt;();<a name="line.984"></a>
-<span class="sourceLineNo">985</span>    List&lt;KeyValueScanner&gt; memstoreScanners = new ArrayList&lt;&gt;();<a name="line.985"></a>
-<span class="sourceLineNo">986</span>    List&lt;KeyValueScanner&gt; scannersToClose = new ArrayList&lt;&gt;();<a name="line.986"></a>
-<span class="sourceLineNo">987</span>    for (KeyValueScanner kvs : currentScanners) {<a name="line.987"></a>
-<span class="sourceLineNo">988</span>      if (!kvs.isFileScanner()) {<a name="line.988"></a>
-<span class="sourceLineNo">989</span>        memstoreScanners.add(kvs);<a name="line.989"></a>
-<span class="sourceLineNo">990</span>      } else {<a name="line.990"></a>
-<span class="sourceLineNo">991</span>        scannersToClose.add(kvs);<a name="line.991"></a>
-<span class="sourceLineNo">992</span>        if (kvs.peek() == null) {<a name="line.992"></a>
-<span class="sourceLineNo">993</span>          continue;<a name="line.993"></a>
-<span class="sourceLineNo">994</span>        }<a name="line.994"></a>
-<span class="sourceLineNo">995</span>        filesToReopen.add(name2File.get(kvs.getFilePath().getName()));<a name="line.995"></a>
-<span class="sourceLineNo">996</span>      }<a name="line.996"></a>
-<span class="sourceLineNo">997</span>    }<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    if (filesToReopen.isEmpty()) {<a name="line.998"></a>
-<span class="sourceLineNo">999</span>      return;<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>    }<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>    List&lt;KeyValueScanner&gt; fileScanners = null;<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>    List&lt;KeyValueScanner&gt; newCurrentScanners;<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>    KeyValueHeap newHeap;<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>    try {<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>      fileScanners =<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>          store.getScanners(filesToReopen, cacheBlocks, false, false, matcher, scan.getStartRow(),<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>            scan.includeStartRow(), scan.getStopRow(), scan.includeStopRow(), readPt, false);<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>      seekScanners(fileScanners, lastTop, false, parallelSeekEnabled);<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      newCurrentScanners = new ArrayList&lt;&gt;(fileScanners.size() + memstoreScanners.size());<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>      newCurrentScanners.addAll(fileScanners);<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>      newCurrentScanners.addAll(memstoreScanners);<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>      newHeap = new KeyValueHeap(newCurrentScanners, store.getComparator());<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    } catch (Exception e) {<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>      LOG.warn("failed to switch to stream read", e);<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>      if (fileScanners != null) {<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>        fileScanners.forEach(KeyValueScanner::close);<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>      }<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>      return;<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>    }<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>    currentScanners.clear();<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>    addCurrentScanners(newCurrentScanners);<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>    this.heap = newHeap;<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>    resetQueryMatcher(lastTop);<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>    scannersToClose.forEach(KeyValueScanner::close);<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>  }<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span><a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>  protected final boolean checkFlushed() {<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>    // check the var without any lock. Suppose even if we see the old<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>    // value here still it is ok to continue because we will not be resetting<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>    // the heap but will continue with the referenced memstore's snapshot. For compactions<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>    // any way we don't need the updateReaders at all to happen as we still continue with<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>    // the older files<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>    if (flushed) {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>      // If there is a flush and the current scan is notified on the flush ensure that the<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>      // scan's heap gets reset and we do a seek on the newly flushed file.<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>      if (this.closing) {<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>        return false;<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>      }<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>      // reset the flag<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>      flushed = false;<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>      return true;<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>    }<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>    return false;<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>  }<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span><a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>  /**<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>   * @see KeyValueScanner#getScannerOrder()<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>   */<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>  @Override<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>  public long getScannerOrder() {<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>    return 0;<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>  }<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span><a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>  /**<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>   * Seek storefiles in parallel to optimize IO latency as much as possible<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>   * @param scanners the list {@link KeyValueScanner}s to be read from<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>   * @param kv the KeyValue on which the operation is being requested<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>   * @throws IOException<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>   */<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>  private void parallelSeek(final List&lt;? extends KeyValueScanner&gt;<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>      scanners, final Cell kv) throws IOException {<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>    if (scanners.isEmpty()) return;<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>    int storeFileScannerCount = scanners.size();<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>    CountDownLatch latch = new CountDownLatch(storeFileScannerCount);<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>    List&lt;ParallelSeekHandler&gt; handlers = new ArrayList&lt;&gt;(storeFileScannerCount);<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>    for (KeyValueScanner scanner : scanners) {<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>      if (scanner instanceof StoreFileScanner) {<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>        ParallelSeekHandler seekHandler = new ParallelSeekHandler(scanner, kv,<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>          this.readPt, latch);<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>        executor.submit(seekHandler);<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>        handlers.add(seekHandler);<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>      } else {<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>        scanner.seek(kv);<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>        latch.countDown();<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>      }<a name="line.1075"></a>
+<span class="sourceLineNo">969</span>  @VisibleForTesting<a name="line.969"></a>
+<span class="sourceLineNo">970</span>  void trySwitchToStreamRead() {<a name="line.970"></a>
+<span class="sourceLineNo">971</span>    if (readType != Scan.ReadType.DEFAULT || !scanUsePread || closing || heap.peek() == null ||<a name="line.971"></a>
+<span class="sourceLineNo">972</span>        bytesRead &lt; preadMaxBytes) {<a name="line.972"></a>
+<span class="sourceLineNo">973</span>      return;<a name="line.973"></a>
+<span class="sourceLineNo">974</span>    }<a name="line.974"></a>
+<span class="sourceLineNo">975</span>    if (LOG.isDebugEnabled()) {<a name="line.975"></a>
+<span class="sourceLineNo">976</span>      LOG.debug("Switch to stream read because we have already read " + bytesRead +<a name="line.976"></a>
+<span class="sourceLineNo">977</span>          " bytes from this scanner");<a name="line.977"></a>
+<span class="sourceLineNo">978</span>    }<a name="line.978"></a>
+<span class="sourceLineNo">979</span>    scanUsePread = false;<a name="line.979"></a>
+<span class="sourceLineNo">980</span>    Cell lastTop = heap.peek();<a name="line.980"></a>
+<span class="sourceLineNo">981</span>    List&lt;KeyValueScanner&gt; memstoreScanners = new ArrayList&lt;&gt;();<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    List&lt;KeyValueScanner&gt; scannersToClose = new ArrayList&lt;&gt;();<a name="line.982"></a>
+<span class="sourceLineNo">983</span>    for (KeyValueScanner kvs : currentScanners) {<a name="line.983"></a>
+<span class="sourceLineNo">984</span>      if (!kvs.isFileScanner()) {<a name="line.984"></a>
+<span class="sourceLineNo">985</span>        // collect memstorescanners here<a name="line.985"></a>
+<span class="sourceLineNo">986</span>        memstoreScanners.add(kvs);<a name="line.986"></a>
+<span class="sourceLineNo">987</span>      } else {<a name="line.987"></a>
+<span class="sourceLineNo">988</span>        scannersToClose.add(kvs);<a name="line.988"></a>
+<span class="sourceLineNo">989</span>      }<a name="line.989"></a>
+<span class="sourceLineNo">990</span>    }<a name="line.990"></a>
+<span class="sourceLineNo">991</span>    List&lt;KeyValueScanner&gt; fileScanners = null;<a name="line.991"></a>
+<span class="sourceLineNo">992</span>    List&lt;KeyValueScanner&gt; newCurrentScanners;<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    KeyValueHeap newHeap;<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    try {<a name="line.994"></a>
+<span class="sourceLineNo">995</span>      // recreate the scanners on the current file scanners<a name="line.995"></a>
+<span class="sourceLineNo">996</span>      fileScanners = store.recreateScanners(scannersToClose, cacheBlocks, false, false,<a name="line.996"></a>
+<span class="sourceLineNo">997</span>        matcher, scan.getStartRow(), scan.includeStartRow(), scan.getStopRow(),<a name="line.997"></a>
+<span class="sourceLineNo">998</span>        scan.includeStopRow(), readPt, false);<a name="line.998"></a>
+<span class="sourceLineNo">999</span>      if (fileScanners == null) {<a name="line.999"></a>
+<span class="sourceLineNo">1000</span>        return;<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>      }<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>      seekScanners(fileScanners, lastTop, false, parallelSeekEnabled);<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>      newCurrentScanners = new ArrayList&lt;&gt;(fileScanners.size() + memstoreScanners.size());<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>      newCurrentScanners.addAll(fileScanners);<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>      newCurrentScanners.addAll(memstoreScanners);<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>      newHeap = new KeyValueHeap(newCurrentScanners, store.getComparator());<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span>    } catch (Exception e) {<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>      LOG.warn("failed to switch to stream read", e);<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>      if (fileScanners != null) {<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>        fileScanners.forEach(KeyValueScanner::close);<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>      }<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>      return;<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>    }<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>    currentScanners.clear();<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>    addCurrentScanners(newCurrentScanners);<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>    this.heap = newHeap;<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>    resetQueryMatcher(lastTop);<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>    scannersToClose.forEach(KeyValueScanner::close);<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>  }<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span><a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>  protected final boolean checkFlushed() {<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>    // check the var without any lock. Suppose even if we see the old<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>    // value here still it is ok to continue because we will not be resetting<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>    // the heap but will continue with the referenced memstore's snapshot. For compactions<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>    // any way we don't need the updateReaders at all to happen as we still continue with<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>    // the older files<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    if (flushed) {<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>      // If there is a flush and the current scan is notified on the flush ensure that the<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>      // scan's heap gets reset and we do a seek on the newly flushed file.<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>      if (this.closing) {<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>        return false;<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>      }<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>      // reset the flag<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>      flushed = false;<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>      return true;<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>    }<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span>    return false;<a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>  }<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span><a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>  /**<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>   * @see KeyValueScanner#getScannerOrder()<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>   */<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>  @Override<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>  public long getScannerOrder() {<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>    return 0;<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>  }<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span><a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>  /**<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>   * Seek storefiles in parallel to optimize IO latency as much as possible<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>   * @param scanners the list {@link KeyValueScanner}s to be read from<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>   * @param kv the KeyValue on which the operation is being requested<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>   * @throws IOException<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>   */<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>  private void parallelSeek(final List&lt;? extends KeyValueScanner&gt;<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>      scanners, final Cell kv) throws IOException {<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>    if (scanners.isEmpty()) return;<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>    int storeFileScannerCount = scanners.size();<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>    CountDownLatch latch = new CountDownLatch(storeFileScannerCount);<a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>    List&lt;ParallelSeekHandler&gt; handlers = new ArrayList&lt;&gt;(storeFileScannerCount);<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>    for (KeyValueScanner scanner : scanners) {<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>      if (scanner instanceof StoreFileScanner) {<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>        ParallelSeekHandler seekHandler = new ParallelSeekHandler(scanner, kv,<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>          this.readPt, latch);<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>        executor.submit(seekHandler);<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>        handlers.add(seekHandler);<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>      } else {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>        scanner.seek(kv);<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>        latch.countDown();<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span>      }<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>    }<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span><a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>    try {<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>      latch.await();<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>    } catch (InterruptedException ie) {<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>      throw (InterruptedIOException)new InterruptedIOException().initCause(ie);<a name="line.1075"></a>
 <span class="sourceLineNo">1076</span>    }<a name="line.1076"></a>
 <span class="sourceLineNo">1077</span><a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    try {<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>      latch.await();<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>    } catch (InterruptedException ie) {<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>      throw (InterruptedIOException)new InterruptedIOException().initCause(ie);<a name="line.1081"></a>
+<span class="sourceLineNo">1078</span>    for (ParallelSeekHandler handler : handlers) {<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>      if (handler.getErr() != null) {<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>        throw new IOException(handler.getErr());<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      }<a name="line.1081"></a>
 <span class="sourceLineNo">1082</span>    }<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span><a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>    for (ParallelSeekHandler handler : handlers) {<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>      if (handler.getErr() != null) {<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>        throw new IOException(handler.getErr());<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>      }<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>    }<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>  }<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span><a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>  /**<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>   * Used in testing.<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>   * @return all scanners in no particular order<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>   */<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>  @VisibleForTesting<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>  List&lt;KeyValueScanner&gt; getAllScannersForTesting() {<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    List&lt;KeyValueScanner&gt; allScanners = new ArrayList&lt;&gt;();<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    KeyValueScanner current = heap.getCurrentForTesting();<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>    if (current != null)<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      allScanners.add(current);<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>    for (KeyValueScanner scanner : heap.getHeap())<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      allScanners.add(scanner);<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>    return allScanners;<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>  }<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span><a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>  static void enableLazySeekGlobally(boolean enable) {<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>    lazySeekEnabledGlobally = enable;<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>  }<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span><a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>  /**<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>   * @return The estimated number of KVs seen by this scanner (includes some skipped KVs).<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>   */<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>  public long getEstimatedNumberOfKvsScanned() {<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>    return this.kvsScanned;<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>  }<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span><a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>  @Override<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>  public Cell getNextIndexedKey() {<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>    return this.heap.getNextIndexedKey();<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  }<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span><a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>  @Override<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>  public void shipped() throws IOException {<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>    if (prevCell != null) {<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>      // Do the copy here so that in case the prevCell ref is pointing to the previous<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>      // blocks we can safely release those blocks.<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>      // This applies to blocks that are got from Bucket cache, L1 cache and the blocks<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>      // fetched from HDFS. Copying this would ensure that we let go the references to these<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>      // blocks so that they can be GCed safely(in case of bucket cache)<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>      prevCell = KeyValueUtil.toNewKeyCell(this.prevCell);<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>    }<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    matcher.beforeShipped();<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>    // There wont be further fetch of Cells from these scanners. Just close.<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>    clearAndClose(scannersForDelayedClose);<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>    if (this.heap != null) {<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      this.heap.shipped();<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      // When switching from pread to stream, we will open a new scanner for each store file, but<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      // the old scanner may still track the HFileBlocks we have scanned but not sent back to client<a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>      // yet. If we close the scanner immediately then the HFileBlocks may be messed up by others<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>      // before we serialize and send it back to client. The HFileBlocks will be released in shipped<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>      // method, so we here will also open new scanners and close old scanners in shipped method.<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>      // See HBASE-18055 for more details.<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>      trySwitchToStreamRead();<a name="line.1143"></a>
-<span class="sourceLineNo">1144</span>    }<a name="line.1144"></a>
-<span class="sourceLineNo">1145</span>  }<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>}<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span><a name="line.1147"></a>
+<span class="sourceLineNo">1083</span>  }<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span><a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>  /**<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>   * Used in testing.<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>   * @return all scanners in no particular order<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>   */<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>  @VisibleForTesting<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>  List&lt;KeyValueScanner&gt; getAllScannersForTesting() {<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>    List&lt;KeyValueScanner&gt; allScanners = new ArrayList&lt;&gt;();<a name="line.1091"></a>
+<span class="sourceLineNo">1092</span>    KeyValueScanner current = heap.getCurrentForTesting();<a name="line.1092"></a>
+<span class="sourceLineNo">1093</span>    if (current != null)<a name="line.1093"></a>
+<span class="sourceLineNo">1094</span>      allScanners.add(current);<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>    for (KeyValueScanner scanner : heap.getHeap())<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>      allScanners.add(scanner);<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>    return allScanners;<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span>  }<a name="line.1098"></a>
+<span class="sourceLineNo">1099</span><a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>  static void enableLazySeekGlobally(boolean enable) {<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>    lazySeekEnabledGlobally = enable;<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>  }<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span><a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>  /**<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>   * @return The estimated number of KVs seen by this scanner (includes some skipped KVs).<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>   */<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>  public long getEstimatedNumberOfKvsScanned() {<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>    return this.kvsScanned;<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span>  }<a name="line.1109"></a>
+<span class="sourceLineNo">1110</span><a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>  @Override<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>  public Cell getNextIndexedKey() {<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>    return this.heap.getNextIndexedKey();<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>  }<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span><a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>  @Override<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>  public void shipped() throws IOException {<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>    if (prevCell != null) {<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span>      // Do the copy here so that in case the prevCell ref is pointing to the previous<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span>      // blocks we can safely release those blocks.<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>      // This applies to blocks that are got from Bucket cache, L1 cache and the blocks<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>      // fetched from HDFS. Copying this would ensure that we let go the references to these<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>      // blocks so that they can be GCed safely(in case of bucket cache)<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>      prevCell = KeyValueUtil.toNewKeyCell(this.prevCell);<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>    }<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>    matcher.beforeShipped();<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>    // There wont be further fetch of Cells from these scanners. Just close.<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span>    clearAndClose(scannersForDelayedClose);<a name="line.1128"></a>
+<span class="sourceLineNo">1129</span>    if (this.heap != null) {<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>      this.heap.shipped();<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>      // When switching from pread to stream, we will open a new scanner for each store file, but<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>      // the old scanner may still track the HFileBlocks we have scanned but not sent back to client<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>      // yet. If we close the scanner immediately then the HFileBlocks may be messed up by others<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>      // before we serialize and send it back to client. The HFileBlocks will be released in shipped<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>      // method, so we here will also open new scanners and close old scanners in shipped method.<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>      // See HBASE-18055 for more details.<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      trySwitchToStreamRead();<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>    }<a name="line.1138"></a>
+<span class="sourceLineNo">1139</span>  }<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>}<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span><a name="line.1141"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html
index b2b7ff9..b32645e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html
@@ -974,185 +974,179 @@
 <span class="sourceLineNo">966</span>    return heap.reseek(kv);<a name="line.966"></a>
 <span class="sourceLineNo">967</span>  }<a name="line.967"></a>
 <span class="sourceLineNo">968</span><a name="line.968"></a>
-<span class="sourceLineNo">969</span>  private void trySwitchToStreamRead() {<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    if (readType != Scan.ReadType.DEFAULT || !scanUsePread || closing || heap.peek() == null ||<a name="line.970"></a>
-<span class="sourceLineNo">971</span>        bytesRead &lt; preadMaxBytes) {<a name="line.971"></a>
-<span class="sourceLineNo">972</span>      return;<a name="line.972"></a>
-<span class="sourceLineNo">973</span>    }<a name="line.973"></a>
-<span class="sourceLineNo">974</span>    if (LOG.isDebugEnabled()) {<a name="line.974"></a>
-<span class="sourceLineNo">975</span>      LOG.debug("Switch to stream read because we have already read " + bytesRead +<a name="line.975"></a>
-<span class="sourceLineNo">976</span>          " bytes from this scanner");<a name="line.976"></a>
-<span class="sourceLineNo">977</span>    }<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    scanUsePread = false;<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    Cell lastTop = heap.peek();<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    Map&lt;String, StoreFile&gt; name2File = new HashMap&lt;&gt;(store.getStorefilesCount());<a name="line.980"></a>
-<span class="sourceLineNo">981</span>    for (StoreFile file : store.getStorefiles()) {<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      name2File.put(file.getFileInfo().getActiveFileName(), file);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span>    List&lt;StoreFile&gt; filesToReopen = new ArrayList&lt;&gt;();<a name="line.984"></a>
-<span class="sourceLineNo">985</span>    List&lt;KeyValueScanner&gt; memstoreScanners = new ArrayList&lt;&gt;();<a name="line.985"></a>
-<span class="sourceLineNo">986</span>    List&lt;KeyValueScanner&gt; scannersToClose = new ArrayList&lt;&gt;();<a name="line.986"></a>
-<span class="sourceLineNo">987</span>    for (KeyValueScanner kvs : currentScanners) {<a name="line.987"></a>
-<span class="sourceLineNo">988</span>      if (!kvs.isFileScanner()) {<a name="line.988"></a>
-<span class="sourceLineNo">989</span>        memstoreScanners.add(kvs);<a name="line.989"></a>
-<span class="sourceLineNo">990</span>      } else {<a name="line.990"></a>
-<span class="sourceLineNo">991</span>        scannersToClose.add(kvs);<a name="line.991"></a>
-<span class="sourceLineNo">992</span>        if (kvs.peek() == null) {<a name="line.992"></a>
-<span class="sourceLineNo">993</span>          continue;<a name="line.993"></a>
-<span class="sourceLineNo">994</span>        }<a name="line.994"></a>
-<span class="sourceLineNo">995</span>        filesToReopen.add(name2File.get(kvs.getFilePath().getName()));<a name="line.995"></a>
-<span class="sourceLineNo">996</span>      }<a name="line.996"></a>
-<span class="sourceLineNo">997</span>    }<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    if (filesToReopen.isEmpty()) {<a name="line.998"></a>
-<span class="sourceLineNo">999</span>      return;<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>    }<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>    List&lt;KeyValueScanner&gt; fileScanners = null;<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>    List&lt;KeyValueScanner&gt; newCurrentScanners;<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>    KeyValueHeap newHeap;<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>    try {<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>      fileScanners =<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>          store.getScanners(filesToReopen, cacheBlocks, false, false, matcher, scan.getStartRow(),<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>            scan.includeStartRow(), scan.getStopRow(), scan.includeStopRow(), readPt, false);<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>      seekScanners(fileScanners, lastTop, false, parallelSeekEnabled);<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      newCurrentScanners = new ArrayList&lt;&gt;(fileScanners.size() + memstoreScanners.size());<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>      newCurrentScanners.addAll(fileScanners);<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>      newCurrentScanners.addAll(memstoreScanners);<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>      newHeap = new KeyValueHeap(newCurrentScanners, store.getComparator());<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    } catch (Exception e) {<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>      LOG.warn("failed to switch to stream read", e);<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>      if (fileScanners != null) {<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>        fileScanners.forEach(KeyValueScanner::close);<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>      }<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>      return;<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>    }<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>    currentScanners.clear();<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>    addCurrentScanners(newCurrentScanners);<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>    this.heap = newHeap;<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>    resetQueryMatcher(lastTop);<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>    scannersToClose.forEach(KeyValueScanner::close);<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>  }<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span><a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>  protected final boolean checkFlushed() {<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>    // check the var without any lock. Suppose even if we see the old<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>    // value here still it is ok to continue because we will not be resetting<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>    // the heap but will continue with the referenced memstore's snapshot. For compactions<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>    // any way we don't need the updateReaders at all to happen as we still continue with<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>    // the older files<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>    if (flushed) {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>      // If there is a flush and the current scan is notified on the flush ensure that the<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>      // scan's heap gets reset and we do a seek on the newly flushed file.<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>      if (this.closing) {<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>        return false;<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>      }<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>      // reset the flag<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>      flushed = false;<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>      return true;<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>    }<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>    return false;<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>  }<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span><a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>  /**<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>   * @see KeyValueScanner#getScannerOrder()<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>   */<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>  @Override<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>  public long getScannerOrder() {<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>    return 0;<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>  }<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span><a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>  /**<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>   * Seek storefiles in parallel to optimize IO latency as much as possible<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>   * @param scanners the list {@link KeyValueScanner}s to be read from<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>   * @param kv the KeyValue on which the operation is being requested<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>   * @throws IOException<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>   */<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>  private void parallelSeek(final List&lt;? extends KeyValueScanner&gt;<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>      scanners, final Cell kv) throws IOException {<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>    if (scanners.isEmpty()) return;<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>    int storeFileScannerCount = scanners.size();<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>    CountDownLatch latch = new CountDownLatch(storeFileScannerCount);<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>    List&lt;ParallelSeekHandler&gt; handlers = new ArrayList&lt;&gt;(storeFileScannerCount);<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>    for (KeyValueScanner scanner : scanners) {<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>      if (scanner instanceof StoreFileScanner) {<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>        ParallelSeekHandler seekHandler = new ParallelSeekHandler(scanner, kv,<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>          this.readPt, latch);<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>        executor.submit(seekHandler);<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>        handlers.add(seekHandler);<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>      } else {<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>        scanner.seek(kv);<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>        latch.countDown();<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>      }<a name="line.1075"></a>
+<span class="sourceLineNo">969</span>  @VisibleForTesting<a name="line.969"></a>
+<span class="sourceLineNo">970</span>  void trySwitchToStreamRead() {<a name="line.970"></a>
+<span class="sourceLineNo">971</span>    if (readType != Scan.ReadType.DEFAULT || !scanUsePread || closing || heap.peek() == null ||<a name="line.971"></a>
+<span class="sourceLineNo">972</span>        bytesRead &lt; preadMaxBytes) {<a name="line.972"></a>
+<span class="sourceLineNo">973</span>      return;<a name="line.973"></a>
+<span class="sourceLineNo">974</span>    }<a name="line.974"></a>
+<span class="sourceLineNo">975</span>    if (LOG.isDebugEnabled()) {<a name="line.975"></a>
+<span class="sourceLineNo">976</span>      LOG.debug("Switch to stream read because we have already read " + bytesRead +<a name="line.976"></a>
+<span class="sourceLineNo">977</span>          " bytes from this scanner");<a name="line.977"></a>
+<span class="sourceLineNo">978</span>    }<a name="line.978"></a>
+<span class="sourceLineNo">979</span>    scanUsePread = false;<a name="line.979"></a>
+<span class="sourceLineNo">980</span>    Cell lastTop = heap.peek();<a name="line.980"></a>
+<span class="sourceLineNo">981</span>    List&lt;KeyValueScanner&gt; memstoreScanners = new ArrayList&lt;&gt;();<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    List&lt;KeyValueScanner&gt; scannersToClose = new ArrayList&lt;&gt;();<a name="line.982"></a>
+<span class="sourceLineNo">983</span>    for (KeyValueScanner kvs : currentScanners) {<a name="line.983"></a>
+<span class="sourceLineNo">984</span>      if (!kvs.isFileScanner()) {<a name="line.984"></a>
+<span class="sourceLineNo">985</span>        // collect memstorescanners here<a name="line.985"></a>
+<span class="sourceLineNo">986</span>        memstoreScanners.add(kvs);<a name="line.986"></a>
+<span class="sourceLineNo">987</span>      } else {<a name="line.987"></a>
+<span class="sourceLineNo">988</span>        scannersToClose.add(kvs);<a name="line.988"></a>
+<span class="sourceLineNo">989</span>      }<a name="line.989"></a>
+<span class="sourceLineNo">990</span>    }<a name="line.990"></a>
+<span class="sourceLineNo">991</span>    List&lt;KeyValueScanner&gt; fileScanners = null;<a name="line.991"></a>
+<span class="sourceLineNo">992</span>    List&lt;KeyValueScanner&gt; newCurrentScanners;<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    KeyValueHeap newHeap;<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    try {<a name="line.994"></a>
+<span class="sourceLineNo">995</span>      // recreate the scanners on the current file scanners<a name="line.995"></a>
+<span class="sourceLineNo">996</span>      fileScanners = store.recreateScanners(scannersToClose, cacheBlocks, false, false,<a name="line.996"></a>
+<span class="sourceLineNo">997</span>        matcher, scan.getStartRow(), scan.includeStartRow(), scan.getStopRow(),<a name="line.997"></a>
+<span class="sourceLineNo">998</span>        scan.includeStopRow(), readPt, false);<a name="line.998"></a>
+<span class="sourceLineNo">999</span>      if (fileScanners == null) {<a name="line.999"></a>
+<span class="sourceLineNo">1000</span>        return;<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>      }<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>      seekScanners(fileScanners, lastTop, false, parallelSeekEnabled);<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>      newCurrentScanners = new ArrayList&lt;&gt;(fileScanners.size() + memstoreScanners.size());<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>      newCurrentScanners.addAll(fileScanners);<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>      newCurrentScanners.addAll(memstoreScanners);<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>      newHeap = new KeyValueHeap(newCurrentScanners, store.getComparator());<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span>    } catch (Exception e) {<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>      LOG.warn("failed to switch to stream read", e);<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>      if (fileScanners != null) {<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>        fileScanners.forEach(KeyValueScanner::close);<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>      }<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>      return;<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>    }<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>    currentScanners.clear();<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>    addCurrentScanners(newCurrentScanners);<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>    this.heap = newHeap;<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>    resetQueryMatcher(lastTop);<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>    scannersToClose.forEach(KeyValueScanner::close);<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>  }<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span><a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>  protected final boolean checkFlushed() {<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>    // check the var without any lock. Suppose even if we see the old<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>    // value here still it is ok to continue because we will not be resetting<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>    // the heap but will continue with the referenced memstore's snapshot. For compactions<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>    // any way we don't need the updateReaders at all to happen as we still continue with<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>    // the older files<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    if (flushed) {<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>      // If there is a flush and the current scan is notified on the flush ensure that the<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>      // scan's heap gets reset and we do a seek on the newly flushed file.<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>      if (this.closing) {<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>        return false;<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>      }<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>      // reset the flag<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>      flushed = false;<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>      return true;<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>    }<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span>    return false;<a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>  }<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span><a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>  /**<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>   * @see KeyValueScanner#getScannerOrder()<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>   */<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>  @Override<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>  public long getScannerOrder() {<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>    return 0;<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>  }<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span><a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>  /**<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>   * Seek storefiles in parallel to optimize IO latency as much as possible<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>   * @param scanners the list {@link KeyValueScanner}s to be read from<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>   * @param kv the KeyValue on which the operation is being requested<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>   * @throws IOException<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>   */<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>  private void parallelSeek(final List&lt;? extends KeyValueScanner&gt;<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>      scanners, final Cell kv) throws IOException {<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>    if (scanners.isEmpty()) return;<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>    int storeFileScannerCount = scanners.size();<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>    CountDownLatch latch = new CountDownLatch(storeFileScannerCount);<a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>    List&lt;ParallelSeekHandler&gt; handlers = new ArrayList&lt;&gt;(storeFileScannerCount);<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>    for (KeyValueScanner scanner : scanners) {<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>      if (scanner instanceof StoreFileScanner) {<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>        ParallelSeekHandler seekHandler = new ParallelSeekHandler(scanner, kv,<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>          this.readPt, latch);<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>        executor.submit(seekHandler);<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>        handlers.add(seekHandler);<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>      } else {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>        scanner.seek(kv);<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>        latch.countDown();<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span>      }<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>    }<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span><a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>    try {<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>      latch.await();<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>    } catch (InterruptedException ie) {<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>      throw (InterruptedIOException)new InterruptedIOException().initCause(ie);<a name="line.1075"></a>
 <span class="sourceLineNo">1076</span>    }<a name="line.1076"></a>
 <span class="sourceLineNo">1077</span><a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    try {<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>      latch.await();<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>    } catch (InterruptedException ie) {<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>      throw (InterruptedIOException)new InterruptedIOException().initCause(ie);<a name="line.1081"></a>
+<span class="sourceLineNo">1078</span>    for (ParallelSeekHandler handler : handlers) {<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>      if (handler.getErr() != null) {<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>        throw new IOException(handler.getErr());<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      }<a name="line.1081"></a>
 <span class="sourceLineNo">1082</span>    }<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span><a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>    for (ParallelSeekHandler handler : handlers) {<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>      if (handler.getErr() != null) {<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>        throw new IOException(handler.getErr());<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>      }<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>    }<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>  }<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span><a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>  /**<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>   * Used in testing.<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>   * @return all scanners in no particular order<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>   */<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>  @VisibleForTesting<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>  List&lt;KeyValueScanner&gt; getAllScannersForTesting() {<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    List&lt;KeyValueScanner&gt; allScanners = new ArrayList&lt;&gt;();<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    KeyValueScanner current = heap.getCurrentForTesting();<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>    if (current != null)<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      allScanners.add(current);<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>    for (KeyValueScanner scanner : heap.getHeap())<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      allScanners.add(scanner);<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>    return allScanners;<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>  }<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span><a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>  static void enableLazySeekGlobally(boolean enable) {<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>    lazySeekEnabledGlobally = enable;<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>  }<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span><a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>  /**<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>   * @return The estimated number of KVs seen by this scanner (includes some skipped KVs).<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>   */<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>  public long getEstimatedNumberOfKvsScanned() {<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>    return this.kvsScanned;<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>  }<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span><a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>  @Override<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>  public Cell getNextIndexedKey() {<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>    return this.heap.getNextIndexedKey();<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  }<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span><a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>  @Override<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>  public void shipped() throws IOException {<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>    if (prevCell != null) {<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>      // Do the copy here so that in case the prevCell ref is pointing to the previous<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>      // blocks we can safely release those blocks.<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>      // This applies to blocks that are got from Bucket cache, L1 cache and the blocks<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>      // fetched from HDFS. Copying this would ensure that we let go the references to these<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>      // blocks so that they can be GCed safely(in case of bucket cache)<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>      prevCell = KeyValueUtil.toNewKeyCell(this.prevCell);<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>    }<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    matcher.beforeShipped();<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>    // There wont be further fetch of Cells from these scanners. Just close.<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>    clearAndClose(scannersForDelayedClose);<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>    if (this.heap != null) {<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      this.heap.shipped();<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      // When switching from pread to stream, we will open a new scanner for each store file, but<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      // the old scanner may still track the HFileBlocks we have scanned but not sent back to client<a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>      // yet. If we close the scanner immediately then the HFileBlocks may be messed up by others<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>      // before we serialize and send it back to client. The HFileBlocks will be released in shipped<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>      // method, so we here will also open new scanners and close old scanners in shipped method.<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>      // See HBASE-18055 for more details.<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>      trySwitchToStreamRead();<a name="line.1143"></a>
-<span class="sourceLineNo">1144</span>    }<a name="line.1144"></a>
-<span class="sourceLineNo">1145</span>  }<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>}<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span><a name="line.1147"></a>
+<span class="sourceLineNo">1083</span>  }<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span><a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>  /**<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>   * Used in testing.<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>   * @return all scanners in no particular order<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>   */<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>  @VisibleForTesting<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>  List&lt;KeyValueScanner&gt; getAllScannersForTesting() {<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>    List&lt;KeyValueScanner&gt; allScanners = new ArrayList&lt;&gt;();<a name="line.1091"></a>
+<span class="sourceLineNo">1092</span>    KeyValueScanner current = heap.getCurrentForTesting();<a name="line.1092"></a>
+<span class="sourceLineNo">1093</span>    if (current != null)<a name="line.1093"></a>
+<span class="sourceLineNo">1094</span>      allScanners.add(current);<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>    for (KeyValueScanner scanner : heap.getHeap())<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>      allScanners.add(scanner);<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>    return allScanners;<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span>  }<a name="line.1098"></a>
+<span class="sourceLineNo">1099</span><a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>  static void enableLazySeekGlobally(boolean enable) {<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>    lazySeekEnabledGlobally = enable;<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>  }<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span><a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>  /**<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>   * @return The estimated number of KVs seen by this scanner (includes some skipped KVs).<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>   */<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>  public long getEstimatedNumberOfKvsScanned() {<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>    return this.kvsScanned;<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span>  }<a name="line.1109"></a>
+<span class="sourceLineNo">1110</span><a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>  @Override<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>  public Cell getNextIndexedKey() {<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>    return this.heap.getNextIndexedKey();<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>  }<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span><a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>  @Override<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>  public void shipped() throws IOException {<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>    if (prevCell != null) {<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span>      // Do the copy here so that in case the prevCell ref is pointing to the previous<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span>      // blocks we can safely release those blocks.<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>      // This applies to blocks that are got from Bucket cache, L1 cache and the blocks<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>      // fetched from HDFS. Copying this would ensure that we let go the references to these<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>      // blocks so that they can be GCed safely(in case of bucket cache)<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>      prevCell = KeyValueUtil.toNewKeyCell(this.prevCell);<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>    }<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>    matcher.beforeShipped();<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>    // There wont be further fetch of Cells from these scanners. Just close.<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span>    clearAndClose(scannersForDelayedClose);<a name="line.1128"></a>
+<span class="sourceLineNo">1129</span>    if (this.heap != null) {<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>      this.heap.shipped();<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>      // When switching from pread to stream, we will open a new scanner for each store file, but<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>      // the old scanner may still track the HFileBlocks we have scanned but not sent back to client<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>      // yet. If we close the scanner immediately then the HFileBlocks may be messed up by others<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>      // before we serialize and send it back to client. The HFileBlocks will be released in shipped<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>      // method, so we here will also open new scanners and close old scanners in shipped method.<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>      // See HBASE-18055 for more details.<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      trySwitchToStreamRead();<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>    }<a name="line.1138"></a>
+<span class="sourceLineNo">1139</span>  }<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>}<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span><a name="line.1141"></a>
 
 
 


[25/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html
index b09e20b..3c088c8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html
@@ -155,937 +155,942 @@
 <span class="sourceLineNo">147</span>  }<a name="line.147"></a>
 <span class="sourceLineNo">148</span><a name="line.148"></a>
 <span class="sourceLineNo">149</span>  @Override<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  public void insertNewFiles(Collection&lt;StoreFile&gt; sfs) throws IOException {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(true);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    // Passing null does not cause NPE??<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    cmc.mergeResults(null, sfs);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    debugDumpState("Added new files");<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  }<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  @Override<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  public ImmutableCollection&lt;StoreFile&gt; clearFiles() {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    ImmutableCollection&lt;StoreFile&gt; result = state.allFilesCached;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    this.state = new State();<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    this.fileStarts.clear();<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    this.fileEnds.clear();<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    return result;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  }<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  @Override<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  public ImmutableCollection&lt;StoreFile&gt; clearCompactedFiles() {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    ImmutableCollection&lt;StoreFile&gt; result = state.allCompactedFilesCached;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    this.state = new State();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    return result;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  @Override<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public int getStorefileCount() {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    return state.allFilesCached.size();<a name="line.175"></a>
+<span class="sourceLineNo">150</span>  public int getCompactedFilesCount() {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    return state.allCompactedFilesCached.size();<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
+<span class="sourceLineNo">153</span><a name="line.153"></a>
+<span class="sourceLineNo">154</span>  @Override<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  public void insertNewFiles(Collection&lt;StoreFile&gt; sfs) throws IOException {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(true);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    // Passing null does not cause NPE??<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    cmc.mergeResults(null, sfs);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    debugDumpState("Added new files");<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 ImmutableCollection&lt;StoreFile&gt; clearFiles() {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    ImmutableCollection&lt;StoreFile&gt; result = state.allFilesCached;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    this.state = new State();<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    this.fileStarts.clear();<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    this.fileEnds.clear();<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    return result;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>  }<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>  @Override<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public ImmutableCollection&lt;StoreFile&gt; clearCompactedFiles() {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    ImmutableCollection&lt;StoreFile&gt; result = state.allCompactedFilesCached;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    this.state = new State();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    return result;<a name="line.175"></a>
 <span class="sourceLineNo">176</span>  }<a name="line.176"></a>
 <span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  /** See {@link StoreFileManager#getCandidateFilesForRowKeyBefore(KeyValue)}<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   * for details on this methods. */<a name="line.179"></a>
-<span class="sourceLineNo">180</span>  @Override<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  public Iterator&lt;StoreFile&gt; getCandidateFilesForRowKeyBefore(final KeyValue targetKey) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    KeyBeforeConcatenatedLists result = new KeyBeforeConcatenatedLists();<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    // Order matters for this call.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    result.addSublist(state.level0Files);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    if (!state.stripeFiles.isEmpty()) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      int lastStripeIndex = findStripeForRow(CellUtil.cloneRow(targetKey), false);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      for (int stripeIndex = lastStripeIndex; stripeIndex &gt;= 0; --stripeIndex) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>        result.addSublist(state.stripeFiles.get(stripeIndex));<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    return result.iterator();<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  /** See {@link StoreFileManager#getCandidateFilesForRowKeyBefore(KeyValue)} and<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * {@link StoreFileManager#updateCandidateFilesForRowKeyBefore(Iterator, KeyValue, Cell)}<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   * for details on this methods. */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  @Override<a name="line.197"></a>
-<span class="sourceLineNo">198</span>  public Iterator&lt;StoreFile&gt; updateCandidateFilesForRowKeyBefore(<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      Iterator&lt;StoreFile&gt; candidateFiles, final KeyValue targetKey, final Cell candidate) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    KeyBeforeConcatenatedLists.Iterator original =<a name="line.200"></a>
-<span class="sourceLineNo">201</span>        (KeyBeforeConcatenatedLists.Iterator)candidateFiles;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    assert original != null;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    ArrayList&lt;List&lt;StoreFile&gt;&gt; components = original.getComponents();<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    for (int firstIrrelevant = 0; firstIrrelevant &lt; components.size(); ++firstIrrelevant) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      StoreFile sf = components.get(firstIrrelevant).get(0);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      byte[] endKey = endOf(sf);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      // Entries are ordered as such: L0, then stripes in reverse order. We never remove<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      // level 0; we remove the stripe, and all subsequent ones, as soon as we find the<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      // first one that cannot possibly have better candidates.<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      if (!isInvalid(endKey) &amp;&amp; !isOpen(endKey)<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          &amp;&amp; (nonOpenRowCompare(targetKey, endKey) &gt;= 0)) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        original.removeComponents(firstIrrelevant);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>        break;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    return original;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  }<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>  private byte[] getSplitPoint(Collection&lt;StoreFile&gt; sfs) throws IOException {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    Optional&lt;StoreFile&gt; largestFile = StoreUtils.getLargestFile(sfs);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    return largestFile.isPresent()<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        ? StoreUtils.getFileSplitPoint(largestFile.get(), cellComparator).orElse(null) : null;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>  /**<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * Override of getSplitPoint that determines the split point as the boundary between two<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * stripes, unless it causes significant imbalance between split sides' sizes. In that<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * case, the split boundary will be chosen from the middle of one of the stripes to<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * minimize imbalance.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   * @return The split point, or null if no split is possible.<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   */<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  @Override<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  public byte[] getSplitPoint() throws IOException {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    if (this.getStorefileCount() == 0) return null;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    if (state.stripeFiles.size() &lt;= 1) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      return getSplitPointFromAllFiles();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    int leftIndex = -1, rightIndex = state.stripeFiles.size();<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    long leftSize = 0, rightSize = 0;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    long lastLeftSize = 0, lastRightSize = 0;<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    while (rightIndex - 1 != leftIndex) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      if (leftSize &gt;= rightSize) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        --rightIndex;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        lastRightSize = getStripeFilesSize(rightIndex);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        rightSize += lastRightSize;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      } else {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        ++leftIndex;<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        lastLeftSize = getStripeFilesSize(leftIndex);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        leftSize += lastLeftSize;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      }<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    if (leftSize == 0 || rightSize == 0) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      String errMsg = String.format("Cannot split on a boundary - left index %d size %d, "<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          + "right index %d size %d", leftIndex, leftSize, rightIndex, rightSize);<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      debugDumpState(errMsg);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      LOG.warn(errMsg);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      return getSplitPointFromAllFiles();<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    }<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    double ratio = (double)rightSize / leftSize;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    if (ratio &lt; 1) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      ratio = 1 / ratio;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    if (config.getMaxSplitImbalance() &gt; ratio) return state.stripeEndRows[leftIndex];<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>    // If the difference between the sides is too large, we could get the proportional key on<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    // the a stripe to equalize the difference, but there's no proportional key method at the<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    // moment, and it's not extremely important.<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    // See if we can achieve better ratio if we split the bigger side in half.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    boolean isRightLarger = rightSize &gt;= leftSize;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    double newRatio = isRightLarger<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        ? getMidStripeSplitRatio(leftSize, rightSize, lastRightSize)<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        : getMidStripeSplitRatio(rightSize, leftSize, lastLeftSize);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    if (newRatio &lt; 1) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      newRatio = 1 / newRatio;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    if (newRatio &gt;= ratio)  return state.stripeEndRows[leftIndex];<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    LOG.debug("Splitting the stripe - ratio w/o split " + ratio + ", ratio with split "<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        + newRatio + " configured ratio " + config.getMaxSplitImbalance());<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // Ok, we may get better ratio, get it.<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    return getSplitPoint(state.stripeFiles.get(isRightLarger ? rightIndex : leftIndex));<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  private byte[] getSplitPointFromAllFiles() throws IOException {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    ConcatenatedLists&lt;StoreFile&gt; sfs = new ConcatenatedLists&lt;&gt;();<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    sfs.addSublist(state.level0Files);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    sfs.addAllSublists(state.stripeFiles);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    return getSplitPoint(sfs);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>  private double getMidStripeSplitRatio(long smallerSize, long largerSize, long lastLargerSize) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    return (double)(largerSize - lastLargerSize / 2f) / (smallerSize + lastLargerSize / 2f);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>  @Override<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public Collection&lt;StoreFile&gt; getFilesForScan(byte[] startRow, boolean includeStartRow,<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      byte[] stopRow, boolean includeStopRow) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    if (state.stripeFiles.isEmpty()) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      return state.level0Files; // There's just L0.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    }<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>    int firstStripe = findStripeForRow(startRow, true);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    int lastStripe = findStripeForRow(stopRow, false);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    assert firstStripe &lt;= lastStripe;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    if (firstStripe == lastStripe &amp;&amp; state.level0Files.isEmpty()) {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      return state.stripeFiles.get(firstStripe); // There's just one stripe we need.<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    if (firstStripe == 0 &amp;&amp; lastStripe == (state.stripeFiles.size() - 1)) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      return state.allFilesCached; // We need to read all files.<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    }<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>    ConcatenatedLists&lt;StoreFile&gt; result = new ConcatenatedLists&lt;&gt;();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    result.addAllSublists(state.stripeFiles.subList(firstStripe, lastStripe + 1));<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    result.addSublist(state.level0Files);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    return result;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  }<a name="line.315"></a>
-<span class="sourceLineNo">316</span><a name="line.316"></a>
-<span class="sourceLineNo">317</span>  @Override<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public void addCompactionResults(<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    Collection&lt;StoreFile&gt; compactedFiles, Collection&lt;StoreFile&gt; results) throws IOException {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    // See class comment for the assumptions we make here.<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    LOG.debug("Attempting to merge compaction results: " + compactedFiles.size()<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        + " files replaced by " + results.size());<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    // In order to be able to fail in the middle of the operation, we'll operate on lazy<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    // copies and apply the result at the end.<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(false);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    cmc.mergeResults(compactedFiles, results);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    markCompactedAway(compactedFiles);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    debugDumpState("Merged compaction results");<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  }<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  // Mark the files as compactedAway once the storefiles and compactedfiles list is finalised<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  // Let a background thread close the actual reader on these compacted files and also<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  // ensure to evict the blocks from block cache so that they are no longer in<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  // cache<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  private void markCompactedAway(Collection&lt;StoreFile&gt; compactedFiles) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    for (StoreFile file : compactedFiles) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      file.markCompactedAway();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  }<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  @Override<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public void removeCompactedFiles(Collection&lt;StoreFile&gt; compactedFiles) throws IOException {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    // See class comment for the assumptions we make here.<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    LOG.debug("Attempting to delete compaction results: " + compactedFiles.size());<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    // In order to be able to fail in the middle of the operation, we'll operate on lazy<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    // copies and apply the result at the end.<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(false);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    cmc.deleteResults(compactedFiles);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    debugDumpState("Deleted compaction results");<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  }<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  @Override<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  public int getStoreCompactionPriority() {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    // If there's only L0, do what the default store does.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    // If we are in critical priority, do the same - we don't want to trump all stores all<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    // the time due to how many files we have.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    int fc = getStorefileCount();<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    if (state.stripeFiles.isEmpty() || (this.blockingFileCount &lt;= fc)) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      return this.blockingFileCount - fc;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    // If we are in good shape, we don't want to be trumped by all other stores due to how<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    // many files we have, so do an approximate mapping to normal priority range; L0 counts<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    // for all stripes.<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    int l0 = state.level0Files.size(), sc = state.stripeFiles.size();<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    int priority = (int)Math.ceil(((double)(this.blockingFileCount - fc + l0) / sc) - l0);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    return (priority &lt;= HStore.PRIORITY_USER) ? (HStore.PRIORITY_USER + 1) : priority;<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  /**<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * Gets the total size of all files in the stripe.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * @param stripeIndex Stripe index.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * @return Size.<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   */<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  private long getStripeFilesSize(int stripeIndex) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    long result = 0;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    for (StoreFile sf : state.stripeFiles.get(stripeIndex)) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      result += sf.getReader().length();<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    return result;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  }<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>  /**<a name="line.382"></a>
-<span class="sourceLineNo">383</span>   * Loads initial store files that were picked up from some physical location pertaining to<a name="line.383"></a>
-<span class="sourceLineNo">384</span>   * this store (presumably). Unlike adding files after compaction, assumes empty initial<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * sets, and is forgiving with regard to stripe constraints - at worst, many/all files will<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   * go to level 0.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * @param storeFiles Store files to add.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private void loadUnclassifiedStoreFiles(List&lt;StoreFile&gt; storeFiles) {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    LOG.debug("Attempting to load " + storeFiles.size() + " store files.");<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    TreeMap&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; candidateStripes = new TreeMap&lt;&gt;(MAP_COMPARATOR);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    ArrayList&lt;StoreFile&gt; level0Files = new ArrayList&lt;&gt;();<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    // Separate the files into tentative stripes; then validate. Currently, we rely on metadata.<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    // If needed, we could dynamically determine the stripes in future.<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    for (StoreFile sf : storeFiles) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      byte[] startRow = startOf(sf), endRow = endOf(sf);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      // Validate the range and put the files into place.<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      if (isInvalid(startRow) || isInvalid(endRow)) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        insertFileIntoStripe(level0Files, sf); // No metadata - goes to L0.<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        ensureLevel0Metadata(sf);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      } else if (!isOpen(startRow) &amp;&amp; !isOpen(endRow) &amp;&amp;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>          nonOpenRowCompare(startRow, endRow) &gt;= 0) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        LOG.error("Unexpected metadata - start row [" + Bytes.toString(startRow) + "], end row ["<a name="line.403"></a>
-<span class="sourceLineNo">404</span>          + Bytes.toString(endRow) + "] in file [" + sf.getPath() + "], pushing to L0");<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        insertFileIntoStripe(level0Files, sf); // Bad metadata - goes to L0 also.<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        ensureLevel0Metadata(sf);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      } else {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        ArrayList&lt;StoreFile&gt; stripe = candidateStripes.get(endRow);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        if (stripe == null) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>          stripe = new ArrayList&lt;&gt;();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>          candidateStripes.put(endRow, stripe);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        }<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        insertFileIntoStripe(stripe, sf);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      }<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    }<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    // Possible improvement - for variable-count stripes, if all the files are in L0, we can<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    // instead create single, open-ended stripe with all files.<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>    boolean hasOverlaps = false;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    byte[] expectedStartRow = null; // first stripe can start wherever<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    Iterator&lt;Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt;&gt; entryIter =<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        candidateStripes.entrySet().iterator();<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    while (entryIter.hasNext()) {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; entry = entryIter.next();<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      ArrayList&lt;StoreFile&gt; files = entry.getValue();<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      // Validate the file start rows, and remove the bad ones to level 0.<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      for (int i = 0; i &lt; files.size(); ++i) {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        StoreFile sf = files.get(i);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        byte[] startRow = startOf(sf);<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        if (expectedStartRow == null) {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>          expectedStartRow = startRow; // ensure that first stripe is still consistent<a name="line.431"></a>
-<span class="sourceLineNo">432</span>        } else if (!rowEquals(expectedStartRow, startRow)) {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          hasOverlaps = true;<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          LOG.warn("Store file doesn't fit into the tentative stripes - expected to start at ["<a name="line.434"></a>
-<span class="sourceLineNo">435</span>              + Bytes.toString(expectedStartRow) + "], but starts at [" + Bytes.toString(startRow)<a name="line.435"></a>
-<span class="sourceLineNo">436</span>              + "], to L0 it goes");<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          StoreFile badSf = files.remove(i);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>          insertFileIntoStripe(level0Files, badSf);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>          ensureLevel0Metadata(badSf);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>          --i;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      }<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      // Check if any files from the candidate stripe are valid. If so, add a stripe.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      byte[] endRow = entry.getKey();<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      if (!files.isEmpty()) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>        expectedStartRow = endRow; // Next stripe must start exactly at that key.<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      } else {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>        entryIter.remove();<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>    // In the end, there must be open ends on two sides. If not, and there were no errors i.e.<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    // files are consistent, they might be coming from a split. We will treat the boundaries<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // as open keys anyway, and log the message.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    // If there were errors, we'll play it safe and dump everything into L0.<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    if (!candidateStripes.isEmpty()) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      StoreFile firstFile = candidateStripes.firstEntry().getValue().get(0);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      boolean isOpen = isOpen(startOf(firstFile)) &amp;&amp; isOpen(candidateStripes.lastKey());<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      if (!isOpen) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        LOG.warn("The range of the loaded files does not cover full key space: from ["<a name="line.460"></a>
-<span class="sourceLineNo">461</span>            + Bytes.toString(startOf(firstFile)) + "], to ["<a name="line.461"></a>
-<span class="sourceLineNo">462</span>            + Bytes.toString(candidateStripes.lastKey()) + "]");<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        if (!hasOverlaps) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>          ensureEdgeStripeMetadata(candidateStripes.firstEntry().getValue(), true);<a name="line.464"></a>
-<span class="sourceLineNo">465</span>          ensureEdgeStripeMetadata(candidateStripes.lastEntry().getValue(), false);<a name="line.465"></a>
-<span class="sourceLineNo">466</span>        } else {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>          LOG.warn("Inconsistent files, everything goes to L0.");<a name="line.467"></a>
-<span class="sourceLineNo">468</span>          for (ArrayList&lt;StoreFile&gt; files : candidateStripes.values()) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>            for (StoreFile sf : files) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>              insertFileIntoStripe(level0Files, sf);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>              ensureLevel0Metadata(sf);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>            }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>          }<a name="line.473"></a>
-<span class="sourceLineNo">474</span>          candidateStripes.clear();<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        }<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      }<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>    // Copy the results into the fields.<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    State state = new State();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    state.level0Files = ImmutableList.copyOf(level0Files);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    state.stripeFiles = new ArrayList&lt;&gt;(candidateStripes.size());<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    state.stripeEndRows = new byte[Math.max(0, candidateStripes.size() - 1)][];<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    ArrayList&lt;StoreFile&gt; newAllFiles = new ArrayList&lt;&gt;(level0Files);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    int i = candidateStripes.size() - 1;<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    for (Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; entry : candidateStripes.entrySet()) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      state.stripeFiles.add(ImmutableList.copyOf(entry.getValue()));<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      newAllFiles.addAll(entry.getValue());<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      if (i &gt; 0) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        state.stripeEndRows[state.stripeFiles.size() - 1] = entry.getKey();<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      }<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      --i;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    }<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    state.allFilesCached = ImmutableList.copyOf(newAllFiles);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    this.state = state;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    debugDumpState("Files loaded");<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  }<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>  private void ensureEdgeStripeMetadata(ArrayList&lt;StoreFile&gt; stripe, boolean isFirst) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    HashMap&lt;StoreFile, byte[]&gt; targetMap = isFirst ? fileStarts : fileEnds;<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    for (StoreFile sf : stripe) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      targetMap.put(sf, OPEN_KEY);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    }<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  }<a name="line.504"></a>
-<span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>  private void ensureLevel0Metadata(StoreFile sf) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    if (!isInvalid(startOf(sf))) this.fileStarts.put(sf, INVALID_KEY_IN_MAP);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    if (!isInvalid(endOf(sf))) this.fileEnds.put(sf, INVALID_KEY_IN_MAP);<a name="line.508"></a>
+<span class="sourceLineNo">178</span>  @Override<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  public int getStorefileCount() {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    return state.allFilesCached.size();<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  }<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>  /** See {@link StoreFileManager#getCandidateFilesForRowKeyBefore(KeyValue)}<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * for details on this methods. */<a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @Override<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public Iterator&lt;StoreFile&gt; getCandidateFilesForRowKeyBefore(final KeyValue targetKey) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    KeyBeforeConcatenatedLists result = new KeyBeforeConcatenatedLists();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    // Order matters for this call.<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    result.addSublist(state.level0Files);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    if (!state.stripeFiles.isEmpty()) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      int lastStripeIndex = findStripeForRow(CellUtil.cloneRow(targetKey), false);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      for (int stripeIndex = lastStripeIndex; stripeIndex &gt;= 0; --stripeIndex) {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        result.addSublist(state.stripeFiles.get(stripeIndex));<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      }<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    return result.iterator();<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  }<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span>  /** See {@link StoreFileManager#getCandidateFilesForRowKeyBefore(KeyValue)} and<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * {@link StoreFileManager#updateCandidateFilesForRowKeyBefore(Iterator, KeyValue, Cell)}<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   * for details on this methods. */<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  @Override<a name="line.202"></a>
+<span class="sourceLineNo">203</span>  public Iterator&lt;StoreFile&gt; updateCandidateFilesForRowKeyBefore(<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      Iterator&lt;StoreFile&gt; candidateFiles, final KeyValue targetKey, final Cell candidate) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    KeyBeforeConcatenatedLists.Iterator original =<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        (KeyBeforeConcatenatedLists.Iterator)candidateFiles;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    assert original != null;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    ArrayList&lt;List&lt;StoreFile&gt;&gt; components = original.getComponents();<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    for (int firstIrrelevant = 0; firstIrrelevant &lt; components.size(); ++firstIrrelevant) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      StoreFile sf = components.get(firstIrrelevant).get(0);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      byte[] endKey = endOf(sf);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      // Entries are ordered as such: L0, then stripes in reverse order. We never remove<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      // level 0; we remove the stripe, and all subsequent ones, as soon as we find the<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      // first one that cannot possibly have better candidates.<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      if (!isInvalid(endKey) &amp;&amp; !isOpen(endKey)<a name="line.215"></a>
+<span class="sourceLineNo">216</span>          &amp;&amp; (nonOpenRowCompare(targetKey, endKey) &gt;= 0)) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        original.removeComponents(firstIrrelevant);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        break;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    return original;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>  private byte[] getSplitPoint(Collection&lt;StoreFile&gt; sfs) throws IOException {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    Optional&lt;StoreFile&gt; largestFile = StoreUtils.getLargestFile(sfs);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    return largestFile.isPresent()<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        ? StoreUtils.getFileSplitPoint(largestFile.get(), cellComparator).orElse(null) : null;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  }<a name="line.228"></a>
+<span class="sourceLineNo">229</span><a name="line.229"></a>
+<span class="sourceLineNo">230</span>  /**<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * Override of getSplitPoint that determines the split point as the boundary between two<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   * stripes, unless it causes significant imbalance between split sides' sizes. In that<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   * case, the split boundary will be chosen from the middle of one of the stripes to<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * minimize imbalance.<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * @return The split point, or null if no split is possible.<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  @Override<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  public byte[] getSplitPoint() throws IOException {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    if (this.getStorefileCount() == 0) return null;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    if (state.stripeFiles.size() &lt;= 1) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      return getSplitPointFromAllFiles();<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    int leftIndex = -1, rightIndex = state.stripeFiles.size();<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    long leftSize = 0, rightSize = 0;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    long lastLeftSize = 0, lastRightSize = 0;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    while (rightIndex - 1 != leftIndex) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      if (leftSize &gt;= rightSize) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        --rightIndex;<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        lastRightSize = getStripeFilesSize(rightIndex);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        rightSize += lastRightSize;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      } else {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        ++leftIndex;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        lastLeftSize = getStripeFilesSize(leftIndex);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        leftSize += lastLeftSize;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    }<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    if (leftSize == 0 || rightSize == 0) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      String errMsg = String.format("Cannot split on a boundary - left index %d size %d, "<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          + "right index %d size %d", leftIndex, leftSize, rightIndex, rightSize);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      debugDumpState(errMsg);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      LOG.warn(errMsg);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      return getSplitPointFromAllFiles();<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    double ratio = (double)rightSize / leftSize;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    if (ratio &lt; 1) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      ratio = 1 / ratio;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    if (config.getMaxSplitImbalance() &gt; ratio) return state.stripeEndRows[leftIndex];<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span>    // If the difference between the sides is too large, we could get the proportional key on<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    // the a stripe to equalize the difference, but there's no proportional key method at the<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    // moment, and it's not extremely important.<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // See if we can achieve better ratio if we split the bigger side in half.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    boolean isRightLarger = rightSize &gt;= leftSize;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    double newRatio = isRightLarger<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        ? getMidStripeSplitRatio(leftSize, rightSize, lastRightSize)<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        : getMidStripeSplitRatio(rightSize, leftSize, lastLeftSize);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    if (newRatio &lt; 1) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      newRatio = 1 / newRatio;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    if (newRatio &gt;= ratio)  return state.stripeEndRows[leftIndex];<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    LOG.debug("Splitting the stripe - ratio w/o split " + ratio + ", ratio with split "<a name="line.282"></a>
+<span class="sourceLineNo">283</span>        + newRatio + " configured ratio " + config.getMaxSplitImbalance());<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // Ok, we may get better ratio, get it.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    return getSplitPoint(state.stripeFiles.get(isRightLarger ? rightIndex : leftIndex));<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  }<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>  private byte[] getSplitPointFromAllFiles() throws IOException {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    ConcatenatedLists&lt;StoreFile&gt; sfs = new ConcatenatedLists&lt;&gt;();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    sfs.addSublist(state.level0Files);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    sfs.addAllSublists(state.stripeFiles);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    return getSplitPoint(sfs);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>  private double getMidStripeSplitRatio(long smallerSize, long largerSize, long lastLargerSize) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    return (double)(largerSize - lastLargerSize / 2f) / (smallerSize + lastLargerSize / 2f);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  }<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span>  @Override<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  public Collection&lt;StoreFile&gt; getFilesForScan(byte[] startRow, boolean includeStartRow,<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      byte[] stopRow, boolean includeStopRow) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    if (state.stripeFiles.isEmpty()) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      return state.level0Files; // There's just L0.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>    int firstStripe = findStripeForRow(startRow, true);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    int lastStripe = findStripeForRow(stopRow, false);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    assert firstStripe &lt;= lastStripe;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    if (firstStripe == lastStripe &amp;&amp; state.level0Files.isEmpty()) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      return state.stripeFiles.get(firstStripe); // There's just one stripe we need.<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    if (firstStripe == 0 &amp;&amp; lastStripe == (state.stripeFiles.size() - 1)) {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      return state.allFilesCached; // We need to read all files.<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    }<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>    ConcatenatedLists&lt;StoreFile&gt; result = new ConcatenatedLists&lt;&gt;();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    result.addAllSublists(state.stripeFiles.subList(firstStripe, lastStripe + 1));<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    result.addSublist(state.level0Files);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    return result;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  @Override<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public void addCompactionResults(<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    Collection&lt;StoreFile&gt; compactedFiles, Collection&lt;StoreFile&gt; results) throws IOException {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // See class comment for the assumptions we make here.<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    LOG.debug("Attempting to merge compaction results: " + compactedFiles.size()<a name="line.326"></a>
+<span class="sourceLineNo">327</span>        + " files replaced by " + results.size());<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    // In order to be able to fail in the middle of the operation, we'll operate on lazy<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    // copies and apply the result at the end.<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(false);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    cmc.mergeResults(compactedFiles, results);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    markCompactedAway(compactedFiles);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    debugDumpState("Merged compaction results");<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  // Mark the files as compactedAway once the storefiles and compactedfiles list is finalised<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  // Let a background thread close the actual reader on these compacted files and also<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  // ensure to evict the blocks from block cache so that they are no longer in<a name="line.338"></a>
+<span class="sourceLineNo">339</span>  // cache<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  private void markCompactedAway(Collection&lt;StoreFile&gt; compactedFiles) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    for (StoreFile file : compactedFiles) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      file.markCompactedAway();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>  @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  public void removeCompactedFiles(Collection&lt;StoreFile&gt; compactedFiles) throws IOException {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    // See class comment for the assumptions we make here.<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    LOG.debug("Attempting to delete compaction results: " + compactedFiles.size());<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // In order to be able to fail in the middle of the operation, we'll operate on lazy<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    // copies and apply the result at the end.<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(false);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    cmc.deleteResults(compactedFiles);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    debugDumpState("Deleted compaction results");<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>  @Override<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  public int getStoreCompactionPriority() {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    // If there's only L0, do what the default store does.<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    // If we are in critical priority, do the same - we don't want to trump all stores all<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    // the time due to how many files we have.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    int fc = getStorefileCount();<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    if (state.stripeFiles.isEmpty() || (this.blockingFileCount &lt;= fc)) {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      return this.blockingFileCount - fc;<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    }<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    // If we are in good shape, we don't want to be trumped by all other stores due to how<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    // many files we have, so do an approximate mapping to normal priority range; L0 counts<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    // for all stripes.<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    int l0 = state.level0Files.size(), sc = state.stripeFiles.size();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    int priority = (int)Math.ceil(((double)(this.blockingFileCount - fc + l0) / sc) - l0);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    return (priority &lt;= HStore.PRIORITY_USER) ? (HStore.PRIORITY_USER + 1) : priority;<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  /**<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * Gets the total size of all files in the stripe.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @param stripeIndex Stripe index.<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * @return Size.<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   */<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  private long getStripeFilesSize(int stripeIndex) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    long result = 0;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    for (StoreFile sf : state.stripeFiles.get(stripeIndex)) {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      result += sf.getReader().length();<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    }<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    return result;<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
+<span class="sourceLineNo">386</span><a name="line.386"></a>
+<span class="sourceLineNo">387</span>  /**<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * Loads initial store files that were picked up from some physical location pertaining to<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * this store (presumably). Unlike adding files after compaction, assumes empty initial<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * sets, and is forgiving with regard to stripe constraints - at worst, many/all files will<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * go to level 0.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   * @param storeFiles Store files to add.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>   */<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  private void loadUnclassifiedStoreFiles(List&lt;StoreFile&gt; storeFiles) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    LOG.debug("Attempting to load " + storeFiles.size() + " store files.");<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    TreeMap&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; candidateStripes = new TreeMap&lt;&gt;(MAP_COMPARATOR);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    ArrayList&lt;StoreFile&gt; level0Files = new ArrayList&lt;&gt;();<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Separate the files into tentative stripes; then validate. Currently, we rely on metadata.<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    // If needed, we could dynamically determine the stripes in future.<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    for (StoreFile sf : storeFiles) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      byte[] startRow = startOf(sf), endRow = endOf(sf);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      // Validate the range and put the files into place.<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      if (isInvalid(startRow) || isInvalid(endRow)) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>        insertFileIntoStripe(level0Files, sf); // No metadata - goes to L0.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        ensureLevel0Metadata(sf);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      } else if (!isOpen(startRow) &amp;&amp; !isOpen(endRow) &amp;&amp;<a name="line.406"></a>
+<span class="sourceLineNo">407</span>          nonOpenRowCompare(startRow, endRow) &gt;= 0) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        LOG.error("Unexpected metadata - start row [" + Bytes.toString(startRow) + "], end row ["<a name="line.408"></a>
+<span class="sourceLineNo">409</span>          + Bytes.toString(endRow) + "] in file [" + sf.getPath() + "], pushing to L0");<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        insertFileIntoStripe(level0Files, sf); // Bad metadata - goes to L0 also.<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        ensureLevel0Metadata(sf);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      } else {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        ArrayList&lt;StoreFile&gt; stripe = candidateStripes.get(endRow);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        if (stripe == null) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>          stripe = new ArrayList&lt;&gt;();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>          candidateStripes.put(endRow, stripe);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        insertFileIntoStripe(stripe, sf);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      }<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    // Possible improvement - for variable-count stripes, if all the files are in L0, we can<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    // instead create single, open-ended stripe with all files.<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    boolean hasOverlaps = false;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    byte[] expectedStartRow = null; // first stripe can start wherever<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    Iterator&lt;Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt;&gt; entryIter =<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        candidateStripes.entrySet().iterator();<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    while (entryIter.hasNext()) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; entry = entryIter.next();<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      ArrayList&lt;StoreFile&gt; files = entry.getValue();<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      // Validate the file start rows, and remove the bad ones to level 0.<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      for (int i = 0; i &lt; files.size(); ++i) {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>        StoreFile sf = files.get(i);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        byte[] startRow = startOf(sf);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>        if (expectedStartRow == null) {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>          expectedStartRow = startRow; // ensure that first stripe is still consistent<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        } else if (!rowEquals(expectedStartRow, startRow)) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          hasOverlaps = true;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          LOG.warn("Store file doesn't fit into the tentative stripes - expected to start at ["<a name="line.439"></a>
+<span class="sourceLineNo">440</span>              + Bytes.toString(expectedStartRow) + "], but starts at [" + Bytes.toString(startRow)<a name="line.440"></a>
+<span class="sourceLineNo">441</span>              + "], to L0 it goes");<a name="line.441"></a>
+<span class="sourceLineNo">442</span>          StoreFile badSf = files.remove(i);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>          insertFileIntoStripe(level0Files, badSf);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>          ensureLevel0Metadata(badSf);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>          --i;<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>      // Check if any files from the candidate stripe are valid. If so, add a stripe.<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      byte[] endRow = entry.getKey();<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      if (!files.isEmpty()) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>        expectedStartRow = endRow; // Next stripe must start exactly at that key.<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      } else {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        entryIter.remove();<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>    // In the end, there must be open ends on two sides. If not, and there were no errors i.e.<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    // files are consistent, they might be coming from a split. We will treat the boundaries<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    // as open keys anyway, and log the message.<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    // If there were errors, we'll play it safe and dump everything into L0.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    if (!candidateStripes.isEmpty()) {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      StoreFile firstFile = candidateStripes.firstEntry().getValue().get(0);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      boolean isOpen = isOpen(startOf(firstFile)) &amp;&amp; isOpen(candidateStripes.lastKey());<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      if (!isOpen) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>        LOG.warn("The range of the loaded files does not cover full key space: from ["<a name="line.465"></a>
+<span class="sourceLineNo">466</span>            + Bytes.toString(startOf(firstFile)) + "], to ["<a name="line.466"></a>
+<span class="sourceLineNo">467</span>            + Bytes.toString(candidateStripes.lastKey()) + "]");<a name="line.467"></a>
+<span class="sourceLineNo">468</span>        if (!hasOverlaps) {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>          ensureEdgeStripeMetadata(candidateStripes.firstEntry().getValue(), true);<a name="line.469"></a>
+<span class="sourceLineNo">470</span>          ensureEdgeStripeMetadata(candidateStripes.lastEntry().getValue(), false);<a name="line.470"></a>
+<span class="sourceLineNo">471</span>        } else {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>          LOG.warn("Inconsistent files, everything goes to L0.");<a name="line.472"></a>
+<span class="sourceLineNo">473</span>          for (ArrayList&lt;StoreFile&gt; files : candidateStripes.values()) {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>            for (StoreFile sf : files) {<a name="line.474"></a>
+<span class="sourceLineNo">475</span>              insertFileIntoStripe(level0Files, sf);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>              ensureLevel0Metadata(sf);<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>          candidateStripes.clear();<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><a name="line.483"></a>
+<span class="sourceLineNo">484</span>    // Copy the results into the fields.<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    State state = new State();<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    state.level0Files = ImmutableList.copyOf(level0Files);<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    state.stripeFiles = new ArrayList&lt;&gt;(candidateStripes.size());<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    state.stripeEndRows = new byte[Math.max(0, candidateStripes.size() - 1)][];<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    ArrayList&lt;StoreFile&gt; newAllFiles = new ArrayList&lt;&gt;(level0Files);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    int i = candidateStripes.size() - 1;<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    for (Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; entry : candidateStripes.entrySet()) {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>      state.stripeFiles.add(ImmutableList.copyOf(entry.getValue()));<a name="line.492"></a>
+<span class="sourceLineNo">493</span>      newAllFiles.addAll(entry.getValue());<a name="line.493"></a>
+<span class="sourceLineNo">494</span>      if (i &gt; 0) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>        state.stripeEndRows[state.stripeFiles.size() - 1] = entry.getKey();<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      }<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      --i;<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    }<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    state.allFilesCached = ImmutableList.copyOf(newAllFiles);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    this.state = state;<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    debugDumpState("Files loaded");<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>  private void ensureEdgeStripeMetadata(ArrayList&lt;StoreFile&gt; stripe, boolean isFirst) {<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    HashMap&lt;StoreFile, byte[]&gt; targetMap = isFirst ? fileStarts : fileEnds;<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    for (StoreFile sf : stripe) {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>      targetMap.put(sf, OPEN_KEY);<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    }<a name="line.508"></a>
 <span class="sourceLineNo">509</span>  }<a name="line.509"></a>
 <span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>  private void debugDumpState(String string) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    if (!LOG.isDebugEnabled()) return;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    StringBuilder sb = new StringBuilder();<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    sb.append("\n" + string + "; current stripe state is as such:");<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    sb.append("\n level 0 with ")<a name="line.515"></a>
-<span class="sourceLineNo">516</span>        .append(state.level0Files.size())<a name="line.516"></a>
-<span class="sourceLineNo">517</span>        .append(<a name="line.517"></a>
-<span class="sourceLineNo">518</span>          " files: "<a name="line.518"></a>
-<span class="sourceLineNo">519</span>              + TraditionalBinaryPrefix.long2String(<a name="line.519"></a>
-<span class="sourceLineNo">520</span>                StripeCompactionPolicy.getTotalFileSize(state.level0Files), "", 1) + ";");<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    for (int i = 0; i &lt; state.stripeFiles.size(); ++i) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      String endRow = (i == state.stripeEndRows.length)<a name="line.522"></a>
-<span class="sourceLineNo">523</span>          ? "(end)" : "[" + Bytes.toString(state.stripeEndRows[i]) + "]";<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      sb.append("\n stripe ending in ")<a name="line.524"></a>
-<span class="sourceLineNo">525</span>          .append(endRow)<a name="line.525"></a>
-<span class="sourceLineNo">526</span>          .append(" with ")<a name="line.526"></a>
-<span class="sourceLineNo">527</span>          .append(state.stripeFiles.get(i).size())<a name="line.527"></a>
-<span class="sourceLineNo">528</span>          .append(<a name="line.528"></a>
-<span class="sourceLineNo">529</span>            " files: "<a name="line.529"></a>
-<span class="sourceLineNo">530</span>                + TraditionalBinaryPrefix.long2String(<a name="line.530"></a>
-<span class="sourceLineNo">531</span>                  StripeCompactionPolicy.getTotalFileSize(state.stripeFiles.get(i)), "", 1) + ";");<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    }<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    sb.append("\n").append(state.stripeFiles.size()).append(" stripes total.");<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    sb.append("\n").append(getStorefileCount()).append(" files total.");<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    LOG.debug(sb.toString());<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>  /**<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * Checks whether the key indicates an open interval boundary (i.e. infinity).<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  private static final boolean isOpen(byte[] key) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    return key != null &amp;&amp; key.length == 0;<a name="line.542"></a>
-<span class="sourceLineNo">543</span>  }<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>  private static final boolean isOpen(Cell key) {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    return key != null &amp;&amp; key.getRowLength() == 0;<a name="line.546"></a>
-<span class="sourceLineNo">547</span>  }<a name="line.547"></a>
-<span class="sourceLineNo">548</span><a name="line.548"></a>
-<span class="sourceLineNo">549</span>  /**<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * Checks whether the key is invalid (e.g. from an L0 file, or non-stripe-compacted files).<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   */<a name="line.551"></a>
-<span class="sourceLineNo">552</span>  private static final boolean isInvalid(byte[] key) {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    // No need to use Arrays.equals because INVALID_KEY is null<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    return key == INVALID_KEY;<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>  /**<a name="line.557"></a>
-<span class="sourceLineNo">558</span>   * Compare two keys for equality.<a name="line.558"></a>
-<span class="sourceLineNo">559</span>   */<a name="line.559"></a>
-<span class="sourceLineNo">560</span>  private final boolean rowEquals(byte[] k1, byte[] k2) {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    return Bytes.equals(k1, 0, k1.length, k2, 0, k2.length);<a name="line.561"></a>
-<span class="sourceLineNo">562</span>  }<a name="line.562"></a>
-<span class="sourceLineNo">563</span><a name="line.563"></a>
-<span class="sourceLineNo">564</span>  /**<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * Compare two keys. Keys must not be open (isOpen(row) == false).<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   */<a name="line.566"></a>
-<span class="sourceLineNo">567</span>  private final int nonOpenRowCompare(byte[] k1, byte[] k2) {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    assert !isOpen(k1) &amp;&amp; !isOpen(k2);<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    return Bytes.compareTo(k1, k2);<a name="line.569"></a>
-<span class="sourceLineNo">570</span>  }<a name="line.570"></a>
-<span class="sourceLineNo">571</span><a name="line.571"></a>
-<span class="sourceLineNo">572</span>  private final int nonOpenRowCompare(Cell k1, byte[] k2) {<a name="line.572"></a>
+<span class="sourceLineNo">511</span>  private void ensureLevel0Metadata(StoreFile sf) {<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    if (!isInvalid(startOf(sf))) this.fileStarts.put(sf, INVALID_KEY_IN_MAP);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    if (!isInvalid(endOf(sf))) this.fileEnds.put(sf, INVALID_KEY_IN_MAP);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>  }<a name="line.514"></a>
+<span class="sourceLineNo">515</span><a name="line.515"></a>
+<span class="sourceLineNo">516</span>  private void debugDumpState(String string) {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    if (!LOG.isDebugEnabled()) return;<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    StringBuilder sb = new StringBuilder();<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    sb.append("\n" + string + "; current stripe state is as such:");<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    sb.append("\n level 0 with ")<a name="line.520"></a>
+<span class="sourceLineNo">521</span>        .append(state.level0Files.size())<a name="line.521"></a>
+<span class="sourceLineNo">522</span>        .append(<a name="line.522"></a>
+<span class="sourceLineNo">523</span>          " files: "<a name="line.523"></a>
+<span class="sourceLineNo">524</span>              + TraditionalBinaryPrefix.long2String(<a name="line.524"></a>
+<span class="sourceLineNo">525</span>                StripeCompactionPolicy.getTotalFileSize(state.level0Files), "", 1) + ";");<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    for (int i = 0; i &lt; state.stripeFiles.size(); ++i) {<a name="line.526"></a>
+<span class="sourceLineNo">527</span>      String endRow = (i == state.stripeEndRows.length)<a name="line.527"></a>
+<span class="sourceLineNo">528</span>          ? "(end)" : "[" + Bytes.toString(state.stripeEndRows[i]) + "]";<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      sb.append("\n stripe ending in ")<a name="line.529"></a>
+<span class="sourceLineNo">530</span>          .append(endRow)<a name="line.530"></a>
+<span class="sourceLineNo">531</span>          .append(" with ")<a name="line.531"></a>
+<span class="sourceLineNo">532</span>          .append(state.stripeFiles.get(i).size())<a name="line.532"></a>
+<span class="sourceLineNo">533</span>          .append(<a name="line.533"></a>
+<span class="sourceLineNo">534</span>            " files: "<a name="line.534"></a>
+<span class="sourceLineNo">535</span>                + TraditionalBinaryPrefix.long2String(<a name="line.535"></a>
+<span class="sourceLineNo">536</span>                  StripeCompactionPolicy.getTotalFileSize(state.stripeFiles.get(i)), "", 1) + ";");<a name="line.536"></a>
+<span class="sourceLineNo">537</span>    }<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    sb.append("\n").append(state.stripeFiles.size()).append(" stripes total.");<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    sb.append("\n").append(getStorefileCount()).append(" files total.");<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    LOG.debug(sb.toString());<a name="line.540"></a>
+<span class="sourceLineNo">541</span>  }<a name="line.541"></a>
+<span class="sourceLineNo">542</span><a name="line.542"></a>
+<span class="sourceLineNo">543</span>  /**<a name="line.543"></a>
+<span class="sourceLineNo">544</span>   * Checks whether the key indicates an open interval boundary (i.e. infinity).<a name="line.544"></a>
+<span class="sourceLineNo">545</span>   */<a name="line.545"></a>
+<span class="sourceLineNo">546</span>  private static final boolean isOpen(byte[] key) {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>    return key != null &amp;&amp; key.length == 0;<a name="line.547"></a>
+<span class="sourceLineNo">548</span>  }<a name="line.548"></a>
+<span class="sourceLineNo">549</span><a name="line.549"></a>
+<span class="sourceLineNo">550</span>  private static final boolean isOpen(Cell key) {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    return key != null &amp;&amp; key.getRowLength() == 0;<a name="line.551"></a>
+<span class="sourceLineNo">552</span>  }<a name="line.552"></a>
+<span class="sourceLineNo">553</span><a name="line.553"></a>
+<span class="sourceLineNo">554</span>  /**<a name="line.554"></a>
+<span class="sourceLineNo">555</span>   * Checks whether the key is invalid (e.g. from an L0 file, or non-stripe-compacted files).<a name="line.555"></a>
+<span class="sourceLineNo">556</span>   */<a name="line.556"></a>
+<span class="sourceLineNo">557</span>  private static final boolean isInvalid(byte[] key) {<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    // No need to use Arrays.equals because INVALID_KEY is null<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    return key == INVALID_KEY;<a name="line.559"></a>
+<span class="sourceLineNo">560</span>  }<a name="line.560"></a>
+<span class="sourceLineNo">561</span><a name="line.561"></a>
+<span class="sourceLineNo">562</span>  /**<a name="line.562"></a>
+<span class="sourceLineNo">563</span>   * Compare two keys for equality.<a name="line.563"></a>
+<span class="sourceLineNo">564</span>   */<a name="line.564"></a>
+<span class="sourceLineNo">565</span>  private final boolean rowEquals(byte[] k1, byte[] k2) {<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    return Bytes.equals(k1, 0, k1.length, k2, 0, k2.length);<a name="line.566"></a>
+<span class="sourceLineNo">567</span>  }<a name="line.567"></a>
+<span class="sourceLineNo">568</span><a name="line.568"></a>
+<span class="sourceLineNo">569</span>  /**<a name="line.569"></a>
+<span class="sourceLineNo">570</span>   * Compare two keys. Keys must not be open (isOpen(row) == false).<a name="line.570"></a>
+<span class="sourceLineNo">571</span>   */<a name="line.571"></a>
+<span class="sourceLineNo">572</span>  private final int nonOpenRowCompare(byte[] k1, byte[] k2) {<a name="line.572"></a>
 <span class="sourceLineNo">573</span>    assert !isOpen(k1) &amp;&amp; !isOpen(k2);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    return cellComparator.compareRows(k1, k2, 0, k2.length);<a name="line.574"></a>
+<span class="sourceLineNo">574</span>    return Bytes.compareTo(k1, k2);<a name="line.574"></a>
 <span cl

<TRUNCATED>

[33/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileManager.html b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileManager.html
index e05e936..f3ad5ac 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileManager.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileManager.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6};
+var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -165,10 +165,16 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 </td>
 </tr>
 <tr id="i5" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getCompactedFilesCount--">getCompactedFilesCount</a></span>()</code>
+<div class="block">Returns the number of compacted files.</div>
+</td>
+</tr>
+<tr id="i6" class="altColor">
 <td class="colFirst"><code>double</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getCompactionPressure--">getCompactionPressure</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getFilesForScan-byte:A-boolean-byte:A-boolean-">getFilesForScan</a></span>(byte[]&nbsp;startRow,
                boolean&nbsp;includeStartRow,
@@ -177,56 +183,56 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <div class="block">Gets the store files to scan for a Scan or Get request.</div>
 </td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getSplitPoint--">getSplitPoint</a></span>()</code>
 <div class="block">Gets the split point for the split of this set of store files (approx.</div>
 </td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getStoreCompactionPriority--">getStoreCompactionPriority</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getStoreFileComparator--">getStoreFileComparator</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getStorefileCount--">getStorefileCount</a></span>()</code>
 <div class="block">Returns the number of files currently in use.</div>
 </td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getStorefiles--">getStorefiles</a></span>()</code>
 <div class="block">Gets the snapshot of the store files currently in use.</div>
 </td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getUnneededFiles-long-java.util.List-">getUnneededFiles</a></span>(long&nbsp;maxTs,
                 <a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;filesCompacting)</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#insertNewFiles-java.util.Collection-">insertNewFiles</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;sfs)</code>
 <div class="block">Adds new files, either for from MemStore flush or bulk insert, into the structure.</div>
 </td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#loadFiles-java.util.List-">loadFiles</a></span>(<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;storeFiles)</code>
 <div class="block">Loads the initial store files into empty StoreFileManager.</div>
 </td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#removeCompactedFiles-java.util.Collection-">removeCompactedFiles</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;compactedFiles)</code>
 <div class="block">Remove the compacted files</div>
 </td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#updateCandidateFilesForRowKeyBefore-java.util.Iterator-org.apache.hadoop.hbase.KeyValue-org.apache.hadoop.hbase.Cell-">updateCandidateFilesForRowKeyBefore</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidateFiles,
                                    <a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;targetKey,
@@ -391,13 +397,27 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 </dl>
 </li>
 </ul>
+<a name="getCompactedFilesCount--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getCompactedFilesCount</h4>
+<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileManager.html#line.110">getCompactedFilesCount</a>()</pre>
+<div class="block">Returns the number of compacted files.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The number of files.</dd>
+</dl>
+</li>
+</ul>
 <a name="getFilesForScan-byte:A-boolean-byte:A-boolean-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getFilesForScan</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileManager.html#line.112">getFilesForScan</a>(byte[]&nbsp;startRow,
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileManager.html#line.118">getFilesForScan</a>(byte[]&nbsp;startRow,
                                       boolean&nbsp;includeStartRow,
                                       byte[]&nbsp;stopRow,
                                       boolean&nbsp;includeStopRow)</pre>
@@ -417,7 +437,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getCandidateFilesForRowKeyBefore</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileManager.html#line.121">getCandidateFilesForRowKeyBefore</a>(<a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;targetKey)</pre>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileManager.html#line.127">getCandidateFilesForRowKeyBefore</a>(<a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;targetKey)</pre>
 <div class="block">Gets initial, full list of candidate store files to check for row-key-before.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -434,7 +454,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockList">
 <li class="blockList">
 <h4>updateCandidateFilesForRowKeyBefore</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileManager.html#line.136">updateCandidateFilesForRowKeyBefore</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidateFiles,
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileManager.html#line.142">updateCandidateFilesForRowKeyBefore</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidateFiles,
                                                         <a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;targetKey,
                                                         <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;candidate)</pre>
 <div class="block">Updates the candidate list for finding row key before. Based on the list of candidates
@@ -458,7 +478,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getSplitPoint</h4>
-<pre>byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileManager.html#line.146">getSplitPoint</a>()
+<pre>byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileManager.html#line.152">getSplitPoint</a>()
               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Gets the split point for the split of this set of store files (approx. middle).</div>
 <dl>
@@ -475,7 +495,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreCompactionPriority</h4>
-<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileManager.html#line.151">getStoreCompactionPriority</a>()</pre>
+<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileManager.html#line.157">getStoreCompactionPriority</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The store compaction priority.</dd>
@@ -488,7 +508,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getUnneededFiles</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileManager.html#line.158">getUnneededFiles</a>(long&nbsp;maxTs,
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileManager.html#line.164">getUnneededFiles</a>(long&nbsp;maxTs,
                                        <a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;filesCompacting)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -505,7 +525,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactionPressure</h4>
-<pre>double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileManager.html#line.164">getCompactionPressure</a>()</pre>
+<pre>double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileManager.html#line.170">getCompactionPressure</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the compaction pressure used for compaction throughput tuning.</dd>
@@ -520,7 +540,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getStoreFileComparator</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileManager.html#line.170">getStoreFileComparator</a>()</pre>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileManager.html#line.176">getStoreFileComparator</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the comparator used to sort storefiles. Usually, the

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/regionserver/StoreScanner.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreScanner.html b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreScanner.html
index 2f27639..53d8460 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreScanner.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreScanner.html
@@ -646,7 +646,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 </td>
 </tr>
 <tr id="i33" class="rowColor">
-<td class="colFirst"><code>private void</code></td>
+<td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#trySwitchToStreamRead--">trySwitchToStreamRead</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i34" class="altColor">
@@ -1762,7 +1762,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>trySwitchToStreamRead</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.969">trySwitchToStreamRead</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.970">trySwitchToStreamRead</a>()</pre>
 </li>
 </ul>
 <a name="checkFlushed--">
@@ -1771,7 +1771,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>checkFlushed</h4>
-<pre>protected final&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1027">checkFlushed</a>()</pre>
+<pre>protected final&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1021">checkFlushed</a>()</pre>
 </li>
 </ul>
 <a name="getScannerOrder--">
@@ -1780,7 +1780,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>getScannerOrder</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1050">getScannerOrder</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1044">getScannerOrder</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html#getScannerOrder--">KeyValueScanner</a></code></span></div>
 <div class="block">Get the order of this KeyValueScanner. This is only relevant for StoreFileScanners and
  MemStoreScanners (other scanners simply return 0). This is required for comparing multiple
@@ -1801,7 +1801,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>parallelSeek</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1060">parallelSeek</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1054">parallelSeek</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
                           <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)
                    throws <a href="http://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">Seek storefiles in parallel to optimize IO latency as much as possible</div>
@@ -1820,7 +1820,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllScannersForTesting</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1096">getAllScannersForTesting</a>()</pre>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1090">getAllScannersForTesting</a>()</pre>
 <div class="block">Used in testing.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1834,7 +1834,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>enableLazySeekGlobally</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1106">enableLazySeekGlobally</a>(boolean&nbsp;enable)</pre>
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1100">enableLazySeekGlobally</a>(boolean&nbsp;enable)</pre>
 </li>
 </ul>
 <a name="getEstimatedNumberOfKvsScanned--">
@@ -1843,7 +1843,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>getEstimatedNumberOfKvsScanned</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1113">getEstimatedNumberOfKvsScanned</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1107">getEstimatedNumberOfKvsScanned</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The estimated number of KVs seen by this scanner (includes some skipped KVs).</dd>
@@ -1856,7 +1856,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>getNextIndexedKey</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1118">getNextIndexedKey</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1112">getNextIndexedKey</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html#getNextIndexedKey--">getNextIndexedKey</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a></code></dd>
@@ -1875,7 +1875,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockListLast">
 <li class="blockList">
 <h4>shipped</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1123">shipped</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1117">shipped</a>()
              throws <a href="http://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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html b/devapidocs/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html
index dadc992..a4dc823 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.708">StripeStoreFileManager.CompactionOrFlushMergeCopy</a>
+<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.713">StripeStoreFileManager.CompactionOrFlushMergeCopy</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Non-static helper class for merging compaction or flush results.
  Since we want to merge them atomically (more or less), it operates on lazy copies,
@@ -269,7 +269,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>stripeFiles</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.709">stripeFiles</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.714">stripeFiles</a></pre>
 </li>
 </ul>
 <a name="level0Files">
@@ -278,7 +278,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>level0Files</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.710">level0Files</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.715">level0Files</a></pre>
 </li>
 </ul>
 <a name="stripeEndRows">
@@ -287,7 +287,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>stripeEndRows</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;byte[]&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.711">stripeEndRows</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;byte[]&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.716">stripeEndRows</a></pre>
 </li>
 </ul>
 <a name="compactedFiles">
@@ -296,7 +296,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>compactedFiles</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.713">compactedFiles</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.718">compactedFiles</a></pre>
 </li>
 </ul>
 <a name="results">
@@ -305,7 +305,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>results</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.714">results</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.719">results</a></pre>
 </li>
 </ul>
 <a name="l0Results">
@@ -314,7 +314,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>l0Results</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.716">l0Results</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.721">l0Results</a></pre>
 </li>
 </ul>
 <a name="isFlush">
@@ -323,7 +323,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isFlush</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.717">isFlush</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.722">isFlush</a></pre>
 </li>
 </ul>
 </li>
@@ -340,7 +340,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CompactionOrFlushMergeCopy</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.719">CompactionOrFlushMergeCopy</a>(boolean&nbsp;isFlush)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.724">CompactionOrFlushMergeCopy</a>(boolean&nbsp;isFlush)</pre>
 </li>
 </ul>
 </li>
@@ -357,7 +357,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>mergeResults</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.725">mergeResults</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;compactedFiles,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.730">mergeResults</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;compactedFiles,
                           <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;results)
                    throws <a href="http://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>
@@ -372,7 +372,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteResults</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.742">deleteResults</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;compactedFiles)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.747">deleteResults</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;compactedFiles)
                     throws <a href="http://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>
@@ -386,7 +386,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createNewState</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.State.html" title="class in org.apache.hadoop.hbase.regionserver">StripeStoreFileManager.State</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.750">createNewState</a>(boolean&nbsp;delCompactedFiles)</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.State.html" title="class in org.apache.hadoop.hbase.regionserver">StripeStoreFileManager.State</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.755">createNewState</a>(boolean&nbsp;delCompactedFiles)</pre>
 </li>
 </ul>
 <a name="updateMetadataMaps--">
@@ -395,7 +395,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>updateMetadataMaps</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.783">updateMetadataMaps</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.788">updateMetadataMaps</a>()</pre>
 </li>
 </ul>
 <a name="getStripeCopy-int-">
@@ -404,7 +404,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getStripeCopy</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.802">getStripeCopy</a>(int&nbsp;index)</pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.807">getStripeCopy</a>(int&nbsp;index)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>index</code> - Index of the stripe we need.</dd>
@@ -419,7 +419,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getLevel0Copy</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.817">getLevel0Copy</a>()</pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.822">getLevel0Copy</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>A lazy L0 copy from current state.</dd>
@@ -432,7 +432,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>processResults</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html?is-external=true" title="class or interface in java.util">TreeMap</a>&lt;byte[],<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.829">processResults</a>()
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html?is-external=true" title="class or interface in java.util">TreeMap</a>&lt;byte[],<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.834">processResults</a>()
                                           throws <a href="http://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">Process new files, and add them either to the structure of existing stripes,
  or to the list of new candidate stripes.</div>
@@ -450,7 +450,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>removeCompactedFiles</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.867">removeCompactedFiles</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.872">removeCompactedFiles</a>()
                            throws <a href="http://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">Remove compacted files.</div>
 <dl>
@@ -467,7 +467,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>processNewCandidateStripes</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.892">processNewCandidateStripes</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html?is-external=true" title="class or interface in java.util">TreeMap</a>&lt;byte[],<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;newStripes)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.CompactionOrFlushMergeCopy.html#line.897">processNewCandidateStripes</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html?is-external=true" title="class or interface in java.util">TreeMap</a>&lt;byte[],<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;newStripes)
                                  throws <a href="http://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">See <a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#addCompactionResults-java.util.Collection-java.util.Collection-"><code>StripeStoreFileManager.addCompactionResults(Collection, Collection)</code></a> - updates the stripe list with
  new candidate stripes/removes old stripes; produces new set of stripe end rows.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.Iterator.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.Iterator.html b/devapidocs/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.Iterator.html
index ab0b040..5928b65 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.Iterator.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.Iterator.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.html#line.668">StripeStoreFileManager.KeyBeforeConcatenatedLists.Iterator</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.html#line.673">StripeStoreFileManager.KeyBeforeConcatenatedLists.Iterator</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/util/ConcatenatedLists.Iterator.html" title="class in org.apache.hadoop.hbase.util">ConcatenatedLists.Iterator</a></pre>
 </li>
 </ul>
@@ -228,7 +228,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/ConcatenatedLists.I
 <ul class="blockListLast">
 <li class="blockList">
 <h4>Iterator</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.Iterator.html#line.668">Iterator</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.Iterator.html#line.673">Iterator</a>()</pre>
 </li>
 </ul>
 </li>
@@ -245,7 +245,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/ConcatenatedLists.I
 <ul class="blockList">
 <li class="blockList">
 <h4>getComponents</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.Iterator.html#line.669">getComponents</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.Iterator.html#line.674">getComponents</a>()</pre>
 </li>
 </ul>
 <a name="removeComponents-int-">
@@ -254,7 +254,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/ConcatenatedLists.I
 <ul class="blockList">
 <li class="blockList">
 <h4>removeComponents</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.Iterator.html#line.673">removeComponents</a>(int&nbsp;startIndex)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.Iterator.html#line.678">removeComponents</a>(int&nbsp;startIndex)</pre>
 </li>
 </ul>
 <a name="remove--">
@@ -263,7 +263,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/ConcatenatedLists.I
 <ul class="blockListLast">
 <li class="blockList">
 <h4>remove</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.Iterator.html#line.683">remove</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.Iterator.html#line.688">remove</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true#remove--" title="class or interface in java.util">remove</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.html b/devapidocs/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.html
index f040590..1778380 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.662">StripeStoreFileManager.KeyBeforeConcatenatedLists</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.667">StripeStoreFileManager.KeyBeforeConcatenatedLists</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/util/ConcatenatedLists.html" title="class in org.apache.hadoop.hbase.util">ConcatenatedLists</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</pre>
 <div class="block">An extension of ConcatenatedLists that has several peculiar properties.
  First, one can cut the tail of the logical list by removing last several sub-lists.
@@ -255,7 +255,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/ConcatenatedLists.h
 <ul class="blockListLast">
 <li class="blockList">
 <h4>KeyBeforeConcatenatedLists</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.html#line.662">KeyBeforeConcatenatedLists</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.html#line.667">KeyBeforeConcatenatedLists</a>()</pre>
 </li>
 </ul>
 </li>
@@ -272,7 +272,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/ConcatenatedLists.h
 <ul class="blockListLast">
 <li class="blockList">
 <h4>iterator</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.html#line.664">iterator</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.html#line.669">iterator</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#iterator--" title="class or interface in java.lang">iterator</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></dd>


[12/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestStore.MyThread.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestStore.MyThread.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestStore.MyThread.html
new file mode 100644
index 0000000..91a99c2
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestStore.MyThread.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.TestStore.MyThread (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.regionserver.TestStore.MyThread (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyThread.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/TestStore.MyThread.html" target="_top">Frames</a></li>
+<li><a href="TestStore.MyThread.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.TestStore.MyThread" class="title">Uses of Class<br>org.apache.hadoop.hbase.regionserver.TestStore.MyThread</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.regionserver.TestStore.MyThread</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/TestStore.MyThread.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/TestStore.MyThread.html" target="_top">Frames</a></li>
+<li><a href="TestStore.MyThread.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;2017 <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/e9db7c5d/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
index fd52776..98e4404 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
@@ -222,7 +222,7 @@
 <li><a href="TestStore.MyCompactingMemStoreWithCustomCompactor.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestStore.MyCompactingMemStoreWithCustomCompactor</a></li>
 <li><a href="TestStore.MyList.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestStore.MyList</a></li>
 <li><a href="TestStore.MyMemStoreCompactor.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestStore.MyMemStoreCompactor</a></li>
-<li><a href="TestStore.MyStore.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestStore.MyStore</a></li>
+<li><a href="TestStore.MyThread.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestStore.MyThread</a></li>
 <li><a href="TestStoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestStoreFileInfo</a></li>
 <li><a href="TestStoreFileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestStoreFileRefresherChore</a></li>
 <li><a href="TestStoreFileRefresherChore.FailingHRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestStoreFileRefresherChore.FailingHRegionFileSystem</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
index 0104d88..e20606d 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
@@ -1151,110 +1151,110 @@
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyMemStoreCompactor.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.MyMemStoreCompactor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
-<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.MyStore</a></td>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.MyThread</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileInfo</a></td>
 <td class="colLast">
 <div class="block">Test HStoreFile</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileRefresherChore</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.FailingHRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileRefresherChore.FailingHRegionFileSystem</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.StaleStorefileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileRefresherChore.StaleStorefileRefresherChore</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileScannerWithTagCompression.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileScannerWithTagCompression</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScanner.CellGridStoreScanner</a></td>
 <td class="colLast">
 <div class="block">A StoreScanner for our CELL_GRID above.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScanner.CellWithVersionsStoreScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.KeyValueHeapWithCount.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScanner.KeyValueHeapWithCount</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">TestStripeStoreEngine</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreEngine.TestStoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">TestStripeStoreEngine.TestStoreEngine</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreFileManager.html" title="class in org.apache.hadoop.hbase.regionserver">TestStripeStoreFileManager</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.html" title="class in org.apache.hadoop.hbase.regionserver">TestSwitchToStreamRead</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTags.html" title="class in org.apache.hadoop.hbase.regionserver">TestTags</a></td>
 <td class="colLast">
 <div class="block">Class that test tags</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTags.TestCoprocessorForTags.html" title="class in org.apache.hadoop.hbase.regionserver">TestTags.TestCoprocessorForTags</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TestTimeRangeTracker</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTimestampFilterSeekHint.html" title="class in org.apache.hadoop.hbase.regionserver">TestTimestampFilterSeekHint</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWalAndCompactingMemStoreFlush.html" title="class in org.apache.hadoop.hbase.regionserver">TestWalAndCompactingMemStoreFlush</a></td>
 <td class="colLast">
 <div class="block">This test verifies the correctness of the Per Column Family flushing strategy
  when part of the memstores are compacted memstores</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALLockup.html" title="class in org.apache.hadoop.hbase.regionserver">TestWALLockup</a></td>
 <td class="colLast">
 <div class="block">Testing for lock up of WAL subsystem.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALLockup.DummyServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestWALLockup.DummyServer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALLockup.DummyWALActionsListener.html" title="class in org.apache.hadoop.hbase.regionserver">TestWALLockup.DummyWALActionsListener</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALMonotonicallyIncreasingSeqId.html" title="class in org.apache.hadoop.hbase.regionserver">TestWALMonotonicallyIncreasingSeqId</a></td>
 <td class="colLast">
 <div class="block">Test for HBASE-17471
@@ -1262,7 +1262,7 @@
  path.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWideScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestWideScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/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 9169580..726e5de 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -590,6 +590,7 @@
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestParallelPut.Putter.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestParallelPut.Putter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionIncrement.CrossRowCellIncrementer</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionIncrement.SingleCellIncrementer</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestStore.MyThread</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALMonotonicallyIncreasingSeqId.IncThread.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestWALMonotonicallyIncreasingSeqId.IncThread</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALMonotonicallyIncreasingSeqId.PutThread.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestWALMonotonicallyIncreasingSeqId.PutThread</span></a></li>
 </ul>
@@ -622,10 +623,10 @@
 <ul>
 <li type="circle">java.lang.<a href="http://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="http://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="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DataBlockEncodingTool.Manipulation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCacheOnWriteInSchema.CacheOnWriteType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestAtomicOperation.TestStep</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCacheOnWriteInSchema.CacheOnWriteType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.Metric.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionServerReadRequestMetrics.Metric</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DataBlockEncodingTool.Manipulation</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/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 15c305e..744f683 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
@@ -248,9 +248,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://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="http://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="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Generator.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Generator.Counts</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/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/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/e9db7c5d/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 8e1c1ad..a8434ed 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -141,8 +141,8 @@
 <li type="circle">java.lang.<a href="http://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="http://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="http://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/TestWALSplit.Corruptions.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALSplit.Corruptions</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/IOTestProvider.AllowedOperations.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">IOTestProvider.AllowedOperations</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/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/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/e9db7c5d/testdevapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/overview-tree.html b/testdevapidocs/overview-tree.html
index 67191b3..6dd322c 100644
--- a/testdevapidocs/overview-tree.html
+++ b/testdevapidocs/overview-tree.html
@@ -3508,6 +3508,7 @@
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestServerBusyException.TestGetThread.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestServerBusyException.TestGetThread</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestServerBusyException.TestPutThread.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestServerBusyException.TestPutThread</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestStealJobQueue.TestTask.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">TestStealJobQueue.TestTask</span></a> (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;)</li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestStore.MyThread</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestWALMonotonicallyIncreasingSeqId.IncThread.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestWALMonotonicallyIncreasingSeqId.IncThread</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestWALMonotonicallyIncreasingSeqId.PutThread.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestWALMonotonicallyIncreasingSeqId.PutThread</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/TestWALSplit.ZombieLastLogWriterRegionServer.html" title="class in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALSplit.ZombieLastLogWriterRegionServer</span></a></li>


[27/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Store.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Store.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Store.html
index a56c63f..17e34cd 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Store.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Store.html
@@ -69,495 +69,523 @@
 <span class="sourceLineNo">061</span><a name="line.61"></a>
 <span class="sourceLineNo">062</span>  Collection&lt;StoreFile&gt; getStorefiles();<a name="line.62"></a>
 <span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>  /**<a name="line.64"></a>
-<span class="sourceLineNo">065</span>   * Close all the readers We don't need to worry about subsequent requests because the Region<a name="line.65"></a>
-<span class="sourceLineNo">066</span>   * holds a write lock that will prevent any more reads or writes.<a name="line.66"></a>
-<span class="sourceLineNo">067</span>   * @return the {@link StoreFile StoreFiles} that were previously being used.<a name="line.67"></a>
-<span class="sourceLineNo">068</span>   * @throws IOException on failure<a name="line.68"></a>
-<span class="sourceLineNo">069</span>   */<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  Collection&lt;StoreFile&gt; close() throws IOException;<a name="line.70"></a>
-<span class="sourceLineNo">071</span><a name="line.71"></a>
-<span class="sourceLineNo">072</span>  /**<a name="line.72"></a>
-<span class="sourceLineNo">073</span>   * Return a scanner for both the memstore and the HStore files. Assumes we are not in a<a name="line.73"></a>
-<span class="sourceLineNo">074</span>   * compaction.<a name="line.74"></a>
-<span class="sourceLineNo">075</span>   * @param scan Scan to apply when scanning the stores<a name="line.75"></a>
-<span class="sourceLineNo">076</span>   * @param targetCols columns to scan<a name="line.76"></a>
-<span class="sourceLineNo">077</span>   * @return a scanner over the current key values<a name="line.77"></a>
-<span class="sourceLineNo">078</span>   * @throws IOException on failure<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   */<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  KeyValueScanner getScanner(Scan scan, final NavigableSet&lt;byte[]&gt; targetCols, long readPt)<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      throws IOException;<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>   * Get all scanners with no filtering based on TTL (that happens further down the line).<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   * @param cacheBlocks cache the blocks or not<a name="line.85"></a>
-<span class="sourceLineNo">086</span>   * @param usePread true to use pread, false if not<a name="line.86"></a>
-<span class="sourceLineNo">087</span>   * @param isCompaction true if the scanner is created for compaction<a name="line.87"></a>
-<span class="sourceLineNo">088</span>   * @param matcher the scan query matcher<a name="line.88"></a>
-<span class="sourceLineNo">089</span>   * @param startRow the start row<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   * @param stopRow the stop row<a name="line.90"></a>
-<span class="sourceLineNo">091</span>   * @param readPt the read point of the current scan<a name="line.91"></a>
-<span class="sourceLineNo">092</span>   * @return all scanners for this store<a name="line.92"></a>
-<span class="sourceLineNo">093</span>   */<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  default List&lt;KeyValueScanner&gt; getScanners(boolean cacheBlocks, boolean isGet, boolean usePread,<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      boolean isCompaction, ScanQueryMatcher matcher, byte[] startRow, byte[] stopRow, long readPt)<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      throws IOException {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    return getScanners(cacheBlocks, usePread, isCompaction, matcher, startRow, true, stopRow, false,<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      readPt);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  }<a name="line.99"></a>
-<span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>  /**<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * Get all scanners with no filtering based on TTL (that happens further down the line).<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * @param cacheBlocks cache the blocks or not<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @param usePread true to use pread, false if not<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   * @param isCompaction true if the scanner is created for compaction<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   * @param matcher the scan query matcher<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   * @param startRow the start row<a name="line.107"></a>
-<span class="sourceLineNo">108</span>   * @param includeStartRow true to include start row, false if not<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * @param stopRow the stop row<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   * @param includeStopRow true to include stop row, false if not<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * @param readPt the read point of the current scan<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   * @return all scanners for this store<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   */<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  List&lt;KeyValueScanner&gt; getScanners(boolean cacheBlocks, boolean usePread, boolean isCompaction,<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      ScanQueryMatcher matcher, byte[] startRow, boolean includeStartRow, byte[] stopRow,<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      boolean includeStopRow, long readPt) throws IOException;<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>   * Create scanners on the given files and if needed on the memstore with no filtering based on TTL<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * (that happens further down the line).<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   * @param files the list of files on which the scanners has to be created<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   * @param cacheBlocks cache the blocks or not<a name="line.122"></a>
-<span class="sourceLineNo">123</span>   * @param usePread true to use pread, false if not<a name="line.123"></a>
-<span class="sourceLineNo">124</span>   * @param isCompaction true if the scanner is created for compaction<a name="line.124"></a>
-<span class="sourceLineNo">125</span>   * @param matcher the scan query matcher<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * @param startRow the start row<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * @param stopRow the stop row<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   * @param readPt the read point of the current scan<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   * @param includeMemstoreScanner true if memstore has to be included<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   * @return scanners on the given files and on the memstore if specified<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  default List&lt;KeyValueScanner&gt; getScanners(List&lt;StoreFile&gt; files, boolean cacheBlocks,<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      boolean isGet, boolean usePread, boolean isCompaction, ScanQueryMatcher matcher,<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      byte[] startRow, byte[] stopRow, long readPt, boolean includeMemstoreScanner)<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      throws IOException {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    return getScanners(files, cacheBlocks, usePread, isCompaction, matcher, startRow, true, stopRow,<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      false, readPt, includeMemstoreScanner);<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span>  /**<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * Create scanners on the given files and if needed on the memstore with no filtering based on TTL<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   * (that happens further down the line).<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * @param files the list of files on which the scanners has to be created<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * @param cacheBlocks ache the blocks or not<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   * @param usePread true to use pread, false if not<a name="line.145"></a>
-<span class="sourceLineNo">146</span>   * @param isCompaction true if the scanner is created for compaction<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   * @param matcher the scan query matcher<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   * @param startRow the start row<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * @param includeStartRow true to include start row, false if not<a name="line.149"></a>
+<span class="sourceLineNo">064</span>  Collection&lt;StoreFile&gt; getCompactedFiles();<a name="line.64"></a>
+<span class="sourceLineNo">065</span><a name="line.65"></a>
+<span class="sourceLineNo">066</span>  /**<a name="line.66"></a>
+<span class="sourceLineNo">067</span>   * Close all the readers We don't need to worry about subsequent requests because the Region<a name="line.67"></a>
+<span class="sourceLineNo">068</span>   * holds a write lock that will prevent any more reads or writes.<a name="line.68"></a>
+<span class="sourceLineNo">069</span>   * @return the {@link StoreFile StoreFiles} that were previously being used.<a name="line.69"></a>
+<span class="sourceLineNo">070</span>   * @throws IOException on failure<a name="line.70"></a>
+<span class="sourceLineNo">071</span>   */<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  Collection&lt;StoreFile&gt; close() throws IOException;<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>  /**<a name="line.74"></a>
+<span class="sourceLineNo">075</span>   * Return a scanner for both the memstore and the HStore files. Assumes we are not in a<a name="line.75"></a>
+<span class="sourceLineNo">076</span>   * compaction.<a name="line.76"></a>
+<span class="sourceLineNo">077</span>   * @param scan Scan to apply when scanning the stores<a name="line.77"></a>
+<span class="sourceLineNo">078</span>   * @param targetCols columns to scan<a name="line.78"></a>
+<span class="sourceLineNo">079</span>   * @return a scanner over the current key values<a name="line.79"></a>
+<span class="sourceLineNo">080</span>   * @throws IOException on failure<a name="line.80"></a>
+<span class="sourceLineNo">081</span>   */<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  KeyValueScanner getScanner(Scan scan, final NavigableSet&lt;byte[]&gt; targetCols, long readPt)<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      throws IOException;<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  /**<a name="line.85"></a>
+<span class="sourceLineNo">086</span>   * Get all scanners with no filtering based on TTL (that happens further down the line).<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   * @param cacheBlocks cache the blocks or not<a name="line.87"></a>
+<span class="sourceLineNo">088</span>   * @param usePread true to use pread, false if not<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   * @param isCompaction true if the scanner is created for compaction<a name="line.89"></a>
+<span class="sourceLineNo">090</span>   * @param matcher the scan query matcher<a name="line.90"></a>
+<span class="sourceLineNo">091</span>   * @param startRow the start row<a name="line.91"></a>
+<span class="sourceLineNo">092</span>   * @param stopRow the stop row<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   * @param readPt the read point of the current scan<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   * @return all scanners for this store<a name="line.94"></a>
+<span class="sourceLineNo">095</span>   */<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  default List&lt;KeyValueScanner&gt; getScanners(boolean cacheBlocks, boolean isGet, boolean usePread,<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      boolean isCompaction, ScanQueryMatcher matcher, byte[] startRow, byte[] stopRow, long readPt)<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      throws IOException {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    return getScanners(cacheBlocks, usePread, isCompaction, matcher, startRow, true, stopRow, false,<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      readPt);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  }<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>  /**<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   * Get all scanners with no filtering based on TTL (that happens further down the line).<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   * @param cacheBlocks cache the blocks or not<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   * @param usePread true to use pread, false if not<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * @param isCompaction true if the scanner is created for compaction<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * @param matcher the scan query matcher<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   * @param startRow the start row<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   * @param includeStartRow true to include start row, false if not<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   * @param stopRow the stop row<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   * @param includeStopRow true to include stop row, false if not<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   * @param readPt the read point of the current scan<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * @return all scanners for this store<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  List&lt;KeyValueScanner&gt; getScanners(boolean cacheBlocks, boolean usePread, boolean isCompaction,<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      ScanQueryMatcher matcher, byte[] startRow, boolean includeStartRow, byte[] stopRow,<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      boolean includeStopRow, long readPt) throws IOException;<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  /**<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   * Recreates the scanners on the current list of active store file scanners<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   * @param currentFileScanners the current set of active store file scanners<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   * @param cacheBlocks cache the blocks or not<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   * @param usePread use pread or not<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   * @param isCompaction is the scanner for compaction<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   * @param matcher the scan query matcher<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   * @param startRow the scan's start row<a name="line.127"></a>
+<span class="sourceLineNo">128</span>   * @param includeStartRow should the scan include the start row<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   * @param stopRow the scan's stop row<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * @param includeStopRow should the scan include the stop row<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   * @param readPt the read point of the current scane<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   * @param includeMemstoreScanner whether the current scanner should include memstorescanner<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   * @return list of scanners recreated on the current Scanners<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   * @throws IOException<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   */<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  List&lt;KeyValueScanner&gt; recreateScanners(List&lt;KeyValueScanner&gt; currentFileScanners,<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      boolean cacheBlocks, boolean usePread, boolean isCompaction, ScanQueryMatcher matcher,<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      byte[] startRow, boolean includeStartRow, byte[] stopRow, boolean includeStopRow, long readPt,<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      boolean includeMemstoreScanner) throws IOException;<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>  /**<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   * Create scanners on the given files and if needed on the memstore with no filtering based on TTL<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   * (that happens further down the line).<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * @param files the list of files on which the scanners has to be created<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * @param cacheBlocks cache the blocks or not<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   * @param usePread true to use pread, false if not<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   * @param isCompaction true if the scanner is created for compaction<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * @param matcher the scan query matcher<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * @param startRow the start row<a name="line.149"></a>
 <span class="sourceLineNo">150</span>   * @param stopRow the stop row<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * @param includeStopRow true to include stop row, false if not<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   * @param readPt the read point of the current scan<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   * @param includeMemstoreScanner true if memstore has to be included<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * @return scanners on the given files and on the memstore if specified<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   */<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  List&lt;KeyValueScanner&gt; getScanners(List&lt;StoreFile&gt; files, boolean cacheBlocks, boolean usePread,<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      boolean isCompaction, ScanQueryMatcher matcher, byte[] startRow, boolean includeStartRow,<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      byte[] stopRow, boolean includeStopRow, long readPt, boolean includeMemstoreScanner)<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      throws IOException;<a name="line.159"></a>
-<span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  ScanInfo getScanInfo();<a name="line.161"></a>
+<span class="sourceLineNo">151</span>   * @param readPt the read point of the current scan<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   * @param includeMemstoreScanner true if memstore has to be included<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * @return scanners on the given files and on the memstore if specified<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   */<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  default List&lt;KeyValueScanner&gt; getScanners(List&lt;StoreFile&gt; files, boolean cacheBlocks,<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      boolean isGet, boolean usePread, boolean isCompaction, ScanQueryMatcher matcher,<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      byte[] startRow, byte[] stopRow, long readPt, boolean includeMemstoreScanner)<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      throws IOException {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    return getScanners(files, cacheBlocks, usePread, isCompaction, matcher, startRow, true, stopRow,<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      false, readPt, includeMemstoreScanner);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  }<a name="line.161"></a>
 <span class="sourceLineNo">162</span><a name="line.162"></a>
 <span class="sourceLineNo">163</span>  /**<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * When was the last edit done in the memstore<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   */<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  long timeOfOldestEdit();<a name="line.166"></a>
-<span class="sourceLineNo">167</span><a name="line.167"></a>
-<span class="sourceLineNo">168</span>  FileSystem getFileSystem();<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>  /**<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * @param maxKeyCount<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * @param compression Compression algorithm to use<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * @param isCompaction whether we are creating a new file in a compaction<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * @param includeMVCCReadpoint whether we should out the MVCC readpoint<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   * @return Writer for a new StoreFile in the tmp dir.<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  StoreFileWriter createWriterInTmp(<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      long maxKeyCount,<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      Compression.Algorithm compression,<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      boolean isCompaction,<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      boolean includeMVCCReadpoint,<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      boolean includesTags<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  ) throws IOException;<a name="line.184"></a>
+<span class="sourceLineNo">164</span>   * Create scanners on the given files and if needed on the memstore with no filtering based on TTL<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * (that happens further down the line).<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * @param files the list of files on which the scanners has to be created<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * @param cacheBlocks ache the blocks or not<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * @param usePread true to use pread, false if not<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * @param isCompaction true if the scanner is created for compaction<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * @param matcher the scan query matcher<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * @param startRow the start row<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   * @param includeStartRow true to include start row, false if not<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * @param stopRow the stop row<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   * @param includeStopRow true to include stop row, false if not<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   * @param readPt the read point of the current scan<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   * @param includeMemstoreScanner true if memstore has to be included<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   * @return scanners on the given files and on the memstore if specified<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   */<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  List&lt;KeyValueScanner&gt; getScanners(List&lt;StoreFile&gt; files, boolean cacheBlocks, boolean usePread,<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      boolean isCompaction, ScanQueryMatcher matcher, byte[] startRow, boolean includeStartRow,<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      byte[] stopRow, boolean includeStopRow, long readPt, boolean includeMemstoreScanner)<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      throws IOException;<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>  ScanInfo getScanInfo();<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>   * @param maxKeyCount<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * @param compression Compression algorithm to use<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   * @param isCompaction whether we are creating a new file in a compaction<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * @param includeMVCCReadpoint whether we should out the MVCC readpoint<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param shouldDropBehind should the writer drop caches behind writes<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * @return Writer for a new StoreFile in the tmp dir.<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   */<a name="line.193"></a>
-<span class="sourceLineNo">194</span>  StoreFileWriter createWriterInTmp(<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    long maxKeyCount,<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    Compression.Algorithm compression,<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    boolean isCompaction,<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    boolean includeMVCCReadpoint,<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    boolean includesTags,<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    boolean shouldDropBehind<a name="line.200"></a>
-<span class="sourceLineNo">201</span>  ) throws IOException;<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>   * @param maxKeyCount<a name="line.204"></a>
-<span class="sourceLineNo">205</span>   * @param compression Compression algorithm to use<a name="line.205"></a>
-<span class="sourceLineNo">206</span>   * @param isCompaction whether we are creating a new file in a compaction<a name="line.206"></a>
-<span class="sourceLineNo">207</span>   * @param includeMVCCReadpoint whether we should out the MVCC readpoint<a name="line.207"></a>
-<span class="sourceLineNo">208</span>   * @param shouldDropBehind should the writer drop caches behind writes<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   * @param trt Ready-made timetracker to use.<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   * @return Writer for a new StoreFile in the tmp dir.<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   */<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  StoreFileWriter createWriterInTmp(<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    long maxKeyCount,<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    Compression.Algorithm compression,<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    boolean isCompaction,<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    boolean includeMVCCReadpoint,<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    boolean includesTags,<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    boolean shouldDropBehind,<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    final TimeRangeTracker trt<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  ) throws IOException;<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>  // Compaction oriented methods<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  boolean throttleCompaction(long compactionSize);<a name="line.224"></a>
+<span class="sourceLineNo">187</span>   * When was the last edit done in the memstore<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   */<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  long timeOfOldestEdit();<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  FileSystem getFileSystem();<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span><a name="line.193"></a>
+<span class="sourceLineNo">194</span>  /**<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * @param maxKeyCount<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * @param compression Compression algorithm to use<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * @param isCompaction whether we are creating a new file in a compaction<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * @param includeMVCCReadpoint whether we should out the MVCC readpoint<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * @return Writer for a new StoreFile in the tmp dir.<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   */<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  StoreFileWriter createWriterInTmp(<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      long maxKeyCount,<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      Compression.Algorithm compression,<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      boolean isCompaction,<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      boolean includeMVCCReadpoint,<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      boolean includesTags<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  ) throws IOException;<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>   * @param maxKeyCount<a name="line.210"></a>
+<span class="sourceLineNo">211</span>   * @param compression Compression algorithm to use<a name="line.211"></a>
+<span class="sourceLineNo">212</span>   * @param isCompaction whether we are creating a new file in a compaction<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   * @param includeMVCCReadpoint whether we should out the MVCC readpoint<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   * @param shouldDropBehind should the writer drop caches behind writes<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   * @return Writer for a new StoreFile in the tmp dir.<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   */<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  StoreFileWriter createWriterInTmp(<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    long maxKeyCount,<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    Compression.Algorithm compression,<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    boolean isCompaction,<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    boolean includeMVCCReadpoint,<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    boolean includesTags,<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    boolean shouldDropBehind<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  ) throws IOException;<a name="line.224"></a>
 <span class="sourceLineNo">225</span><a name="line.225"></a>
 <span class="sourceLineNo">226</span>  /**<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * getter for CompactionProgress object<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * @return CompactionProgress object; can be null<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   */<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  CompactionProgress getCompactionProgress();<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>  CompactionContext requestCompaction() throws IOException;<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>  /**<a name="line.234"></a>
-<span class="sourceLineNo">235</span>   * @deprecated see requestCompaction(int, CompactionRequest, User)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  @Deprecated<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  CompactionContext requestCompaction(int priority, CompactionRequest baseRequest)<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      throws IOException;<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span>  CompactionContext requestCompaction(int priority, CompactionRequest baseRequest, User user)<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      throws IOException;<a name="line.242"></a>
-<span class="sourceLineNo">243</span><a name="line.243"></a>
-<span class="sourceLineNo">244</span>  void cancelRequestedCompaction(CompactionContext compaction);<a name="line.244"></a>
-<span class="sourceLineNo">245</span><a name="line.245"></a>
-<span class="sourceLineNo">246</span>  /**<a name="line.246"></a>
-<span class="sourceLineNo">247</span>   * @deprecated see compact(CompactionContext, ThroughputController, User)<a name="line.247"></a>
-<span class="sourceLineNo">248</span>   */<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  @Deprecated<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  List&lt;StoreFile&gt; compact(CompactionContext compaction,<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      ThroughputController throughputController) throws IOException;<a name="line.251"></a>
-<span class="sourceLineNo">252</span><a name="line.252"></a>
-<span class="sourceLineNo">253</span>  List&lt;StoreFile&gt; compact(CompactionContext compaction,<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    ThroughputController throughputController, User user) throws IOException;<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>  /**<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * @return true if we should run a major compaction.<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  boolean isMajorCompaction() throws IOException;<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>  void triggerMajorCompaction();<a name="line.261"></a>
-<span class="sourceLineNo">262</span><a name="line.262"></a>
-<span class="sourceLineNo">263</span>  /**<a name="line.263"></a>
-<span class="sourceLineNo">264</span>   * See if there's too much store files in this store<a name="line.264"></a>
-<span class="sourceLineNo">265</span>   * @return true if number of store files is greater than the number defined in minFilesToCompact<a name="line.265"></a>
-<span class="sourceLineNo">266</span>   */<a name="line.266"></a>
-<span class="sourceLineNo">267</span>  boolean needsCompaction();<a name="line.267"></a>
+<span class="sourceLineNo">227</span>   * @param maxKeyCount<a name="line.227"></a>
+<span class="sourceLineNo">228</span>   * @param compression Compression algorithm to use<a name="line.228"></a>
+<span class="sourceLineNo">229</span>   * @param isCompaction whether we are creating a new file in a compaction<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * @param includeMVCCReadpoint whether we should out the MVCC readpoint<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * @param shouldDropBehind should the writer drop caches behind writes<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   * @param trt Ready-made timetracker to use.<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   * @return Writer for a new StoreFile in the tmp dir.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   */<a name="line.234"></a>
+<span class="sourceLineNo">235</span>  StoreFileWriter createWriterInTmp(<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    long maxKeyCount,<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    Compression.Algorithm compression,<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    boolean isCompaction,<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    boolean includeMVCCReadpoint,<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    boolean includesTags,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    boolean shouldDropBehind,<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    final TimeRangeTracker trt<a name="line.242"></a>
+<span class="sourceLineNo">243</span>  ) throws IOException;<a name="line.243"></a>
+<span class="sourceLineNo">244</span><a name="line.244"></a>
+<span class="sourceLineNo">245</span>  // Compaction oriented methods<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>  boolean throttleCompaction(long compactionSize);<a name="line.247"></a>
+<span class="sourceLineNo">248</span><a name="line.248"></a>
+<span class="sourceLineNo">249</span>  /**<a name="line.249"></a>
+<span class="sourceLineNo">250</span>   * getter for CompactionProgress object<a name="line.250"></a>
+<span class="sourceLineNo">251</span>   * @return CompactionProgress object; can be null<a name="line.251"></a>
+<span class="sourceLineNo">252</span>   */<a name="line.252"></a>
+<span class="sourceLineNo">253</span>  CompactionProgress getCompactionProgress();<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>  CompactionContext requestCompaction() throws IOException;<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>  /**<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   * @deprecated see requestCompaction(int, CompactionRequest, User)<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   */<a name="line.259"></a>
+<span class="sourceLineNo">260</span>  @Deprecated<a name="line.260"></a>
+<span class="sourceLineNo">261</span>  CompactionContext requestCompaction(int priority, CompactionRequest baseRequest)<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      throws IOException;<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>  CompactionContext requestCompaction(int priority, CompactionRequest baseRequest, User user)<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      throws IOException;<a name="line.265"></a>
+<span class="sourceLineNo">266</span><a name="line.266"></a>
+<span class="sourceLineNo">267</span>  void cancelRequestedCompaction(CompactionContext compaction);<a name="line.267"></a>
 <span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>  int getCompactPriority();<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>  StoreFlushContext createFlushContext(long cacheFlushId);<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>  // Split oriented methods<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>  boolean canSplit();<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>  /**<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   * Determines if Store should be split<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   * @return byte[] if store should be split, null otherwise.<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   */<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  byte[] getSplitPoint();<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  // General accessors into the state of the store<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  // TODO abstract some of this out into a metrics class<a name="line.284"></a>
+<span class="sourceLineNo">269</span>  /**<a name="line.269"></a>
+<span class="sourceLineNo">270</span>   * @deprecated see compact(CompactionContext, ThroughputController, User)<a name="line.270"></a>
+<span class="sourceLineNo">271</span>   */<a name="line.271"></a>
+<span class="sourceLineNo">272</span>  @Deprecated<a name="line.272"></a>
+<span class="sourceLineNo">273</span>  List&lt;StoreFile&gt; compact(CompactionContext compaction,<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      ThroughputController throughputController) throws IOException;<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>  List&lt;StoreFile&gt; compact(CompactionContext compaction,<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    ThroughputController throughputController, User user) throws IOException;<a name="line.277"></a>
+<span class="sourceLineNo">278</span><a name="line.278"></a>
+<span class="sourceLineNo">279</span>  /**<a name="line.279"></a>
+<span class="sourceLineNo">280</span>   * @return true if we should run a major compaction.<a name="line.280"></a>
+<span class="sourceLineNo">281</span>   */<a name="line.281"></a>
+<span class="sourceLineNo">282</span>  boolean isMajorCompaction() throws IOException;<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  void triggerMajorCompaction();<a name="line.284"></a>
 <span class="sourceLineNo">285</span><a name="line.285"></a>
 <span class="sourceLineNo">286</span>  /**<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * @return &lt;tt&gt;true&lt;/tt&gt; if the store has any underlying reference files to older HFiles<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   */<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  boolean hasReferences();<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span>  /**<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   * @return The size of this store's memstore, in bytes<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   * @deprecated Since 2.0 and will be removed in 3.0. Use {@link #getSizeOfMemStore()} instead.<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   * &lt;p&gt;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * Note: When using off heap MSLAB feature, this will not account the cell data bytes size which<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   * is in off heap MSLAB area.<a name="line.296"></a>
-<span class="sourceLineNo">297</span>   */<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  @Deprecated<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  long getMemStoreSize();<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>  /**<a name="line.301"></a>
-<span class="sourceLineNo">302</span>   * @return The size of this store's memstore.<a name="line.302"></a>
+<span class="sourceLineNo">287</span>   * See if there's too much store files in this store<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * @return true if number of store files is greater than the number defined in minFilesToCompact<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   */<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  boolean needsCompaction();<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>  int getCompactPriority();<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>  StoreFlushContext createFlushContext(long cacheFlushId);<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  // Split oriented methods<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>  boolean canSplit();<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>  /**<a name="line.300"></a>
+<span class="sourceLineNo">301</span>   * Determines if Store should be split<a name="line.301"></a>
+<span class="sourceLineNo">302</span>   * @return byte[] if store should be split, null otherwise.<a name="line.302"></a>
 <span class="sourceLineNo">303</span>   */<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  MemstoreSize getSizeOfMemStore();<a name="line.304"></a>
+<span class="sourceLineNo">304</span>  byte[] getSplitPoint();<a name="line.304"></a>
 <span class="sourceLineNo">305</span><a name="line.305"></a>
-<span class="sourceLineNo">306</span>  /**<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   * @return The amount of memory we could flush from this memstore; usually this is equal to<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * {@link #getMemStoreSize()} unless we are carrying snapshots and then it will be the size of<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * outstanding snapshots.<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * @deprecated Since 2.0 and will be removed in 3.0. Use {@link #getSizeToFlush()} instead.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   * &lt;p&gt;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * Note: When using off heap MSLAB feature, this will not account the cell data bytes size which<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * is in off heap MSLAB area.<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  @Deprecated<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  long getFlushableSize();<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>  /**<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * @return The amount of memory we could flush from this memstore; usually this is equal to<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   * {@link #getSizeOfMemStore()} unless we are carrying snapshots and then it will be the size of<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * outstanding snapshots.<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   */<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  MemstoreSize getSizeToFlush();<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  /**<a name="line.325"></a>
-<span class="sourceLineNo">326</span>   * Returns the memstore snapshot size<a name="line.326"></a>
-<span class="sourceLineNo">327</span>   * @return size of the memstore snapshot<a name="line.327"></a>
-<span class="sourceLineNo">328</span>   * @deprecated Since 2.0 and will be removed in 3.0. Use {@link #getSizeOfSnapshot()} instead.<a name="line.328"></a>
-<span class="sourceLineNo">329</span>   * &lt;p&gt;<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * Note: When using off heap MSLAB feature, this will not account the cell data bytes size which<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * is in off heap MSLAB area.<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   */<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  @Deprecated<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  long getSnapshotSize();<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>  /**<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * @return size of the memstore snapshot<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   */<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  MemstoreSize getSizeOfSnapshot();<a name="line.339"></a>
+<span class="sourceLineNo">306</span>  // General accessors into the state of the store<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  // TODO abstract some of this out into a metrics class<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>  /**<a name="line.309"></a>
+<span class="sourceLineNo">310</span>   * @return &lt;tt&gt;true&lt;/tt&gt; if the store has any underlying reference files to older HFiles<a name="line.310"></a>
+<span class="sourceLineNo">311</span>   */<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  boolean hasReferences();<a name="line.312"></a>
+<span class="sourceLineNo">313</span><a name="line.313"></a>
+<span class="sourceLineNo">314</span>  /**<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   * @return The size of this store's memstore, in bytes<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   * @deprecated Since 2.0 and will be removed in 3.0. Use {@link #getSizeOfMemStore()} instead.<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * &lt;p&gt;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * Note: When using off heap MSLAB feature, this will not account the cell data bytes size which<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * is in off heap MSLAB area.<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  @Deprecated<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  long getMemStoreSize();<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>  /**<a name="line.324"></a>
+<span class="sourceLineNo">325</span>   * @return The size of this store's memstore.<a name="line.325"></a>
+<span class="sourceLineNo">326</span>   */<a name="line.326"></a>
+<span class="sourceLineNo">327</span>  MemstoreSize getSizeOfMemStore();<a name="line.327"></a>
+<span class="sourceLineNo">328</span><a name="line.328"></a>
+<span class="sourceLineNo">329</span>  /**<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   * @return The amount of memory we could flush from this memstore; usually this is equal to<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   * {@link #getMemStoreSize()} unless we are carrying snapshots and then it will be the size of<a name="line.331"></a>
+<span class="sourceLineNo">332</span>   * outstanding snapshots.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>   * @deprecated Since 2.0 and will be removed in 3.0. Use {@link #getSizeToFlush()} instead.<a name="line.333"></a>
+<span class="sourceLineNo">334</span>   * &lt;p&gt;<a name="line.334"></a>
+<span class="sourceLineNo">335</span>   * Note: When using off heap MSLAB feature, this will not account the cell data bytes size which<a name="line.335"></a>
+<span class="sourceLineNo">336</span>   * is in off heap MSLAB area.<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   */<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  @Deprecated<a name="line.338"></a>
+<span class="sourceLineNo">339</span>  long getFlushableSize();<a name="line.339"></a>
 <span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  HColumnDescriptor getFamily();<a name="line.341"></a>
-<span class="sourceLineNo">342</span><a name="line.342"></a>
-<span class="sourceLineNo">343</span>  /**<a name="line.343"></a>
-<span class="sourceLineNo">344</span>   * @return The maximum sequence id in all store files.<a name="line.344"></a>
+<span class="sourceLineNo">341</span>  /**<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   * @return The amount of memory we could flush from this memstore; usually this is equal to<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   * {@link #getSizeOfMemStore()} unless we are carrying snapshots and then it will be the size of<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   * outstanding snapshots.<a name="line.344"></a>
 <span class="sourceLineNo">345</span>   */<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  long getMaxSequenceId();<a name="line.346"></a>
+<span class="sourceLineNo">346</span>  MemstoreSize getSizeToFlush();<a name="line.346"></a>
 <span class="sourceLineNo">347</span><a name="line.347"></a>
 <span class="sourceLineNo">348</span>  /**<a name="line.348"></a>
-<span class="sourceLineNo">349</span>   * @return The maximum memstoreTS in all store files.<a name="line.349"></a>
-<span class="sourceLineNo">350</span>   */<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  long getMaxMemstoreTS();<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /**<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * @return the data block encoder<a name="line.354"></a>
+<span class="sourceLineNo">349</span>   * Returns the memstore snapshot size<a name="line.349"></a>
+<span class="sourceLineNo">350</span>   * @return size of the memstore snapshot<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   * @deprecated Since 2.0 and will be removed in 3.0. Use {@link #getSizeOfSnapshot()} instead.<a name="line.351"></a>
+<span class="sourceLineNo">352</span>   * &lt;p&gt;<a name="line.352"></a>
+<span class="sourceLineNo">353</span>   * Note: When using off heap MSLAB feature, this will not account the cell data bytes size which<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   * is in off heap MSLAB area.<a name="line.354"></a>
 <span class="sourceLineNo">355</span>   */<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  HFileDataBlockEncoder getDataBlockEncoder();<a name="line.356"></a>
-<span class="sourceLineNo">357</span><a name="line.357"></a>
-<span class="sourceLineNo">358</span>  /** @return aggregate size of all HStores used in the last compaction */<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  long getLastCompactSize();<a name="line.359"></a>
-<span class="sourceLineNo">360</span><a name="line.360"></a>
-<span class="sourceLineNo">361</span>  /** @return aggregate size of HStore */<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  long getSize();<a name="line.362"></a>
+<span class="sourceLineNo">356</span>  @Deprecated<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  long getSnapshotSize();<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>  /**<a name="line.359"></a>
+<span class="sourceLineNo">360</span>   * @return size of the memstore snapshot<a name="line.360"></a>
+<span class="sourceLineNo">361</span>   */<a name="line.361"></a>
+<span class="sourceLineNo">362</span>  MemstoreSize getSizeOfSnapshot();<a name="line.362"></a>
 <span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>  /**<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * @return Count of store files<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   */<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  int getStorefilesCount();<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  /**<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * @return Max age of store files in this store<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   */<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  long getMaxStoreFileAge();<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  /**<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   * @return Min age of store files in this store<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   */<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  long getMinStoreFileAge();<a name="line.377"></a>
-<span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>  /**<a name="line.379"></a>
-<span class="sourceLineNo">380</span>   *  @return Average age of store files in this store, 0 if no store files<a name="line.380"></a>
-<span class="sourceLineNo">381</span>   */<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  long getAvgStoreFileAge();<a name="line.382"></a>
+<span class="sourceLineNo">364</span>  HColumnDescriptor getFamily();<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>  /**<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   * @return The maximum sequence id in all store files.<a name="line.367"></a>
+<span class="sourceLineNo">368</span>   */<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  long getMaxSequenceId();<a name="line.369"></a>
+<span class="sourceLineNo">370</span><a name="line.370"></a>
+<span class="sourceLineNo">371</span>  /**<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * @return The maximum memstoreTS in all store files.<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   */<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  long getMaxMemstoreTS();<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>  /**<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * @return the data block encoder<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   */<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  HFileDataBlockEncoder getDataBlockEncoder();<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>  /** @return aggregate size of all HStores used in the last compaction */<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  long getLastCompactSize();<a name="line.382"></a>
 <span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  /**<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   *  @return Number of reference files in this store<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   */<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  long getNumReferenceFiles();<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span>  /**<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   *  @return Number of HFiles in this store<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   */<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  long getNumHFiles();<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>   * @return The size of the store files, in bytes, uncompressed.<a name="line.395"></a>
-<span class="sourceLineNo">396</span>   */<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  long getStoreSizeUncompressed();<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  /**<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @return The size of the store files, in bytes.<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   */<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  long getStorefilesSize();<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>  /**<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   * @return The size of only the store files which are HFiles, in bytes.<a name="line.405"></a>
-<span class="sourceLineNo">406</span>   */<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  long getHFilesSize();<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  /**<a name="line.409"></a>
-<span class="sourceLineNo">410</span>   * @return The size of the store file indexes, in bytes.<a name="line.410"></a>
-<span class="sourceLineNo">411</span>   */<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  long getStorefilesIndexSize();<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  /**<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * Returns the total size of all index blocks in the data block indexes, including the root level,<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * intermediate levels, and the leaf level for multi-level indexes, or just the root level for<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * single-level indexes.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @return the total size of block indexes in the store<a name="line.418"></a>
+<span class="sourceLineNo">384</span>  /** @return aggregate size of HStore */<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  long getSize();<a name="line.385"></a>
+<span class="sourceLineNo">386</span><a name="line.386"></a>
+<span class="sourceLineNo">387</span>  /**<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * @return Count of store files<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   */<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  int getStorefilesCount();<a name="line.390"></a>
+<span class="sourceLineNo">391</span><a name="line.391"></a>
+<span class="sourceLineNo">392</span>  /**<a name="line.392"></a>
+<span class="sourceLineNo">393</span>   * @return Count of compacted store files<a name="line.393"></a>
+<span class="sourceLineNo">394</span>   */<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  int getCompactedFilesCount();<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  /**<a name="line.397"></a>
+<span class="sourceLineNo">398</span>   * @return Max age of store files in this store<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   */<a name="line.399"></a>
+<span class="sourceLineNo">400</span>  long getMaxStoreFileAge();<a name="line.400"></a>
+<span class="sourceLineNo">401</span><a name="line.401"></a>
+<span class="sourceLineNo">402</span>  /**<a name="line.402"></a>
+<span class="sourceLineNo">403</span>   * @return Min age of store files in this store<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   */<a name="line.404"></a>
+<span class="sourceLineNo">405</span>  long getMinStoreFileAge();<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>  /**<a name="line.407"></a>
+<span class="sourceLineNo">408</span>   *  @return Average age of store files in this store, 0 if no store files<a name="line.408"></a>
+<span class="sourceLineNo">409</span>   */<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  long getAvgStoreFileAge();<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>   *  @return Number of reference files in this store<a name="line.413"></a>
+<span class="sourceLineNo">414</span>   */<a name="line.414"></a>
+<span class="sourceLineNo">415</span>  long getNumReferenceFiles();<a name="line.415"></a>
+<span class="sourceLineNo">416</span><a name="line.416"></a>
+<span class="sourceLineNo">417</span>  /**<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   *  @return Number of HFiles in this store<a name="line.418"></a>
 <span class="sourceLineNo">419</span>   */<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  long getTotalStaticIndexSize();<a name="line.420"></a>
+<span class="sourceLineNo">420</span>  long getNumHFiles();<a name="line.420"></a>
 <span class="sourceLineNo">421</span><a name="line.421"></a>
 <span class="sourceLineNo">422</span>  /**<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * Returns the total byte size of all Bloom filter bit arrays. For compound Bloom filters even the<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * Bloom blocks currently not loaded into the block cache are counted.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * @return the total size of all Bloom filters in the store<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   */<a name="line.426"></a>
-<span class="sourceLineNo">427</span>  long getTotalStaticBloomSize();<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>  // Test-helper methods<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>   * Used for tests.<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * @return cache configuration for this Store.<a name="line.433"></a>
+<span class="sourceLineNo">423</span>   * @return The size of the store files, in bytes, uncompressed.<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   */<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  long getStoreSizeUncompressed();<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * @return The size of the store files, in bytes.<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   */<a name="line.429"></a>
+<span class="sourceLineNo">430</span>  long getStorefilesSize();<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>  /**<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * @return The size of only the store files which are HFiles, in bytes.<a name="line.433"></a>
 <span class="sourceLineNo">434</span>   */<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  CacheConfig getCacheConfig();<a name="line.435"></a>
+<span class="sourceLineNo">435</span>  long getHFilesSize();<a name="line.435"></a>
 <span class="sourceLineNo">436</span><a name="line.436"></a>
 <span class="sourceLineNo">437</span>  /**<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   * @return the parent region info hosting this store<a name="line.438"></a>
+<span class="sourceLineNo">438</span>   * @return The size of the store file indexes, in bytes.<a name="line.438"></a>
 <span class="sourceLineNo">439</span>   */<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  HRegionInfo getRegionInfo();<a name="line.440"></a>
+<span class="sourceLineNo">440</span>  long getStorefilesIndexSize();<a name="line.440"></a>
 <span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>  RegionCoprocessorHost getCoprocessorHost();<a name="line.442"></a>
-<span class="sourceLineNo">443</span><a name="line.443"></a>
-<span class="sourceLineNo">444</span>  boolean areWritesEnabled();<a name="line.444"></a>
-<span class="sourceLineNo">445</span><a name="line.445"></a>
-<span class="sourceLineNo">446</span>  /**<a name="line.446"></a>
-<span class="sourceLineNo">447</span>   * @return The smallest mvcc readPoint across all the scanners in this<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * region. Writes older than this readPoint, are included  in every<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   * read operation.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   */<a name="line.450"></a>
-<span class="sourceLineNo">451</span>  long getSmallestReadPoint();<a name="line.451"></a>
-<span class="sourceLineNo">452</span><a name="line.452"></a>
-<span class="sourceLineNo">453</span>  String getColumnFamilyName();<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>  TableName getTableName();<a name="line.455"></a>
+<span class="sourceLineNo">442</span>  /**<a name="line.442"></a>
+<span class="sourceLineNo">443</span>   * Returns the total size of all index blocks in the data block indexes, including the root level,<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * intermediate levels, and the leaf level for multi-level indexes, or just the root level for<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   * single-level indexes.<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * @return the total size of block indexes in the store<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   */<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  long getTotalStaticIndexSize();<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>   * Returns the total byte size of all Bloom filter bit arrays. For compound Bloom filters even the<a name="line.451"></a>
+<span class="sourceLineNo">452</span>   * Bloom blocks currently not loaded into the block cache are counted.<a name="line.452"></a>
+<span class="sourceLineNo">453</span>   * @return the total size of all Bloom filters in the store<a name="line.453"></a>
+<span class="sourceLineNo">454</span>   */<a name="line.454"></a>
+<span class="sourceLineNo">455</span>  long getTotalStaticBloomSize();<a name="line.455"></a>
 <span class="sourceLineNo">456</span><a name="line.456"></a>
-<span class="sourceLineNo">457</span>  /**<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   * @return The number of cells flushed to disk<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   */<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  long getFlushedCellsCount();<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>  /**<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * @return The total size of data flushed to disk, in bytes<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   */<a name="line.464"></a>
-<span class="sourceLineNo">465</span>  long getFlushedCellsSize();<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>  /**<a name="line.467"></a>
-<span class="sourceLineNo">468</span>   * @return The total size of out output files on disk, in bytes<a name="line.468"></a>
-<span class="sourceLineNo">469</span>   */<a name="line.469"></a>
-<span class="sourceLineNo">470</span>  long getFlushedOutputFileSize();<a name="line.470"></a>
+<span class="sourceLineNo">457</span>  // Test-helper methods<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>   * Used for tests.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>   * @return cache configuration for this Store.<a name="line.461"></a>
+<span class="sourceLineNo">462</span>   */<a name="line.462"></a>
+<span class="sourceLineNo">463</span>  CacheConfig getCacheConfig();<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>  /**<a name="line.465"></a>
+<span class="sourceLineNo">466</span>   * @return the parent region info hosting this store<a name="line.466"></a>
+<span class="sourceLineNo">467</span>   */<a name="line.467"></a>
+<span class="sourceLineNo">468</span>  HRegionInfo getRegionInfo();<a name="line.468"></a>
+<span class="sourceLineNo">469</span><a name="line.469"></a>
+<span class="sourceLineNo">470</span>  RegionCoprocessorHost getCoprocessorHost();<a name="line.470"></a>
 <span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>  /**<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   * @return The number of cells processed during minor compactions<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   */<a name="line.474"></a>
-<span class="sourceLineNo">475</span>  long getCompactedCellsCount();<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>   * @return The total amount of data processed during minor compactions, in bytes<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   */<a name="line.479"></a>
-<span class="sourceLineNo">480</span>  long getCompactedCellsSize();<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>  /**<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * @return The number of cells processed during major compactions<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   */<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  long getMajorCompactedCellsCount();<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>  /**<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * @return The total amount of data processed during major compactions, in bytes<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   */<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  long getMajorCompactedCellsSize();<a name="line.490"></a>
-<span class="sourceLineNo">491</span><a name="line.491"></a>
-<span class="sourceLineNo">492</span>  /*<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * @param o Observer who wants to know about changes in set of Readers<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   */<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  void addChangedReaderObserver(ChangedReadersObserver o);<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>  /*<a name="line.497"></a>
-<span class="sourceLineNo">498</span>   * @param o Observer no longer interested in changes in set of Readers.<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   */<a name="line.499"></a>
-<span class="sourceLineNo">500</span>  void deleteChangedReaderObserver(ChangedReadersObserver o);<a name="line.500"></a>
-<span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourceLineNo">502</span>  /**<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * @return Whether this store has too many store files.<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   */<a name="line.504"></a>
-<span class="sourceLineNo">505</span>  boolean hasTooManyStoreFiles();<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span>  /**<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   * Checks the underlying store files, and opens the files that  have not<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   * been opened, and removes the store file readers for store files no longer<a name="line.509"></a>
-<span class="sourceLineNo">510</span>   * available. Mainly used by secondary region replicas to keep up to date with<a name="line.510"></a>
-<span class="sourceLineNo">511</span>   * the primary region files.<a name="line.511"></a>
-<span class="sourceLineNo">512</span>   * @throws IOException<a name="line.512"></a>
-<span class="sourceLineNo">513</span>   */<a name="line.513"></a>
-<span class="sourceLineNo">514</span>  void refreshStoreFiles() throws IOException;<a name="line.514"></a>
-<span class="sourceLineNo">515</span><a name="line.515"></a>
-<span class="sourceLineNo">516</span>  /**<a name="line.516"></a>
-<span class="sourceLineNo">517</span>   * This value can represent the degree of emergency of compaction for this store. It should be<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * greater than or equal to 0.0, any value greater than 1.0 means we have too many store files.<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * &lt;ul&gt;<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   * &lt;li&gt;if getStorefilesCount &amp;lt;= getMinFilesToCompact, return 0.0&lt;/li&gt;<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * &lt;li&gt;return (getStorefilesCount - getMinFilesToCompact) / (blockingFileCount -<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * getMinFilesToCompact)&lt;/li&gt;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * &lt;/ul&gt;<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   * &lt;p&gt;<a name="line.524"></a>
-<span class="sourceLineNo">525</span>   * And for striped stores, we should calculate this value by the files in each stripe separately<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * and return the maximum value.<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * &lt;p&gt;<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   * It is similar to {@link #getCompactPriority()} except that it is more suitable to use in a<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * linear formula.<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   */<a name="line.530"></a>
-<span class="sourceLineNo">531</span>  double getCompactionPressure();<a name="line.531"></a>
-<span class="sourceLineNo">532</span><a name="line.532"></a>
-<span class="sourceLineNo">533</span>   /**<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    * Replaces the store files that the store has with the given files. Mainly used by<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    * secondary region replicas to keep up to date with<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    * the primary region files.<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    * @throws IOException<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    */<a name="line.538"></a>
-<span class="sourceLineNo">539</span>  void refreshStoreFiles(Collection&lt;String&gt; newFiles) throws IOException;<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>  boolean isPrimaryReplicaStore();<a name="line.541"></a>
-<span class="sourceLineNo">542</span><a name="line.542"></a>
-<span class="sourceLineNo">543</span>  /**<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   * Closes and archives the compacted files under this store<a name="line.544"></a>
-<span class="sourceLineNo">545</span>   */<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  void closeAndArchiveCompactedFiles() throws IOException;<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span class="sourceLineNo">548</span>  /**<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * @return true if the memstore may need some extra memory space<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   */<a name="line.550"></a>
-<span class="sourceLineNo">551</span>  boolean isSloppyMemstore();<a name="line.551"></a>
-<span class="sourceLineNo">552</span>}<a name="line.552"></a>
+<span class="sourceLineNo">472</span>  boolean areWritesEnabled();<a name="line.472"></a>
+<span class="sourceLineNo">473</span><a name="line.473"></a>
+<span class="sourceLineNo">474</span>  /**<a name="line.474"></a>
+<span class="sourceLineNo">475</span>   * @return The smallest mvcc readPoint across all the scanners in this<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   * region. Writes older than this readPoint, are included  in every<a name="line.476"></a>
+<span class="sourceLineNo">477</span>   * read operation.<a name="line.477"></a>
+<span class="sourceLineNo">478</span>   */<a name="line.478"></a>
+<span class="sourceLineNo">479</span>  long getSmallestReadPoint();<a name="line.479"></a>
+<span class="sourceLineNo">480</span><a name="line.480"></a>
+<span class="sourceLineNo">481</span>  String getColumnFamilyName();<a name="line.481"></a>
+<span class="sourceLineNo">482</span><a name="line.482"></a>
+<span class="sourceLineNo">483</span>  TableName getTableName();<a name="line.483"></a>
+<span class="sourceLineNo">484</span><a name="line.484"></a>
+<span class="sourceLineNo">485</span>  /**<a name="line.485"></a>
+<span class="sourceLineNo">486</span>   * @return The number of cells flushed to disk<a name="line.486"></a>
+<span class="sourceLineNo">487</span>   */<a name="line.487"></a>
+<span class="sourceLineNo">488</span>  long getFlushedCellsCount();<a name="line.488"></a>
+<span class="sourceLineNo">489</span><a name="line.489"></a>
+<span class="sourceLineNo">490</span>  /**<a name="line.490"></a>
+<span class="sourceLineNo">491</span>   * @return The total size of data flushed to disk, in bytes<a name="line.491"></a>
+<span class="sourceLineNo">492</span>   */<a name="line.492"></a>
+<span class="sourceLineNo">493</span>  long getFlushedCellsSize();<a name="line.493"></a>
+<span class="sourceLineNo">494</span><a name="line.494"></a>
+<span class="sourceLineNo">495</span>  /**<a name="line.495"></a>
+<span class="sourceLineNo">496</span>   * @return The total size of out output files on disk, in bytes<a name="line.496"></a>
+<span class="sourceLineNo">497</span>   */<a name="line.497"></a>
+<span class="sourceLineNo">498</span>  long getFlushedOutputFileSize();<a name="line.498"></a>
+<span class="sourceLineNo">499</span><a name="line.499"></a>
+<span class="sourceLineNo">500</span>  /**<a name="line.500"></a>
+<span class="sourceLineNo">501</span>   * @return The number of cells processed during minor compactions<a name="line.501"></a>
+<span class="sourceLineNo">502</span>   */<a name="line.502"></a>
+<span class="sourceLineNo">503</span>  long getCompactedCellsCount();<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>   * @return The total amount of data processed during minor compactions, in bytes<a name="line.506"></a>
+<span class="sourceLineNo">507</span>   */<a name="line.507"></a>
+<span class="sourceLineNo">508</span>  long getCompactedCellsSize();<a name="line.508"></a>
+<span class="sourceLineNo">509</span><a name="line.509"></a>
+<span class="sourceLineNo">510</span>  /**<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   * @return The number of cells processed during major compactions<a name="line.511"></a>
+<span class="sourceLineNo">512</span>   */<a name="line.512"></a>
+<span class="sourceLineNo">513</span>  long getMajorCompactedCellsCount();<a name="line.513"></a>
+<span class="sourceLineNo">514</span><a name="line.514"></a>
+<span class="sourceLineNo">515</span>  /**<a name="line.515"></a>
+<span class="sourceLineNo">516</span>   * @return The total amount of data processed during major compactions, in bytes<a name="line.516"></a>
+<span class="sourceLineNo">517</span>   */<a name="line.517"></a>
+<span class="sourceLineNo">518</span>  long getMajorCompactedCellsSize();<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>   * @param o Observer who wants to know about changes in set of Readers<a name="line.521"></a>
+<span class="sourceLineNo">522</span>   */<a name="line.522"></a>
+<span class="sourceLineNo">523</span>  void addChangedReaderObserver(ChangedReadersObserver o);<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>   * @param o Observer no longer interested in changes in set of Readers.<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   */<a name="line.527"></a>
+<span class="sourceLineNo">528</span>  void deleteChangedReaderObserver(ChangedReadersObserver o);<a name="line.528"></a>
+<span class="sourceLineNo">529</span><a name="line.529"></a>
+<span class="sourceLineNo">530</span>  /**<a name="line.530"></a>
+<span class="sourceLineNo">531</span>   * @return Whether this store has too many store files.<a name="line.531"></a>
+<span class="sourceLineNo">532</span>   */<a name="line.532"></a>
+<span class="sourceLineNo">533</span>  boolean hasTooManyStoreFiles();<a name="line.533"></a>
+<span class="sourceLineNo">534</span><a name="line.534"></a>
+<span class="sourceLineNo">535</span>  /**<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   * Checks the underlying store files, and opens the files that  have not<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   * been opened, and removes the store file readers for store files no longer<a name="line.537"></a>
+<span class="sourceLineNo">538</span>   * available. Mainly used by secondary region replicas to keep up to date with<a name="line.538"></a>
+<span class="sourceLineNo">539</span>   * the primary 

<TRUNCATED>

[38/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index c0128b3..d806cd3 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -26,7 +26,7 @@ under the License.
     <copyright>&#169;2007 - 2017 The Apache Software Foundation</copyright>
     <item>
       <title>File: 2235,
-             Errors: 14598,
+             Errors: 14601,
              Warnings: 0,
              Infos: 0
       </title>
@@ -17499,7 +17499,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  26
+                  28
                 </td>
               </tr>
                           <tr>
@@ -29343,7 +29343,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  15
+                  16
                 </td>
               </tr>
                           <tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index 1b5d18e..3ea53c6 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -380,7 +380,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: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/cygwin.html
----------------------------------------------------------------------
diff --git a/cygwin.html b/cygwin.html
index 6583055..487ea77 100644
--- a/cygwin.html
+++ b/cygwin.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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Installing Apache HBase (TM) on Windows using Cygwin</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -679,7 +679,7 @@ Now your <b>HBase </b>server is running, <b>start coding</b> and build that next
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index a2ac23d..e53324c 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -524,7 +524,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 254f493..0bc80f8 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -1841,7 +1841,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index 3aa87ec..94c5718 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -318,7 +318,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index cd03bf9..5acea2c 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -894,7 +894,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 52892a8..6b0d51d 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3815,21 +3815,21 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://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 Jun 22 14:39:49 UTC 2017"</code></td>
+<td class="colLast"><code>"Fri Jun 23 14:39:20 UTC 2017"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#revision">revision</a></code></td>
-<td class="colLast"><code>"7cc458e129cf7c55910c9985d0824a72189a1a73"</code></td>
+<td class="colLast"><code>"d092008766c460de329d14d40e9cfd2377dcaf01"</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.srcChecksum">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://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>"83cc237c7604a7786af1a1aab7f0020f"</code></td>
+<td class="colLast"><code>"32fc2f233b8d7f509c35718e88129025"</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/e9db7c5d/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index 7742123..103efbd 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -34388,6 +34388,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#getCompactedfiles--">getCompactedfiles()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html" title="class in org.apache.hadoop.hbase.regionserver">DefaultStoreFileManager</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HStore.html#getCompactedFiles--">getCompactedFiles()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/Store.html#getCompactedFiles--">getCompactedFiles()</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getCompactedfiles--">getCompactedfiles()</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileManager.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileManager</a></dt>
 <dd>
 <div class="block">List of compacted files inside this store that needs to be excluded in reads
@@ -34395,6 +34399,18 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#getCompactedfiles--">getCompactedfiles()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html" title="class in org.apache.hadoop.hbase.regionserver">StripeStoreFileManager</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#getCompactedFilesCount--">getCompactedFilesCount()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html" title="class in org.apache.hadoop.hbase.regionserver">DefaultStoreFileManager</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HStore.html#getCompactedFilesCount--">getCompactedFilesCount()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/Store.html#getCompactedFilesCount--">getCompactedFilesCount()</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getCompactedFilesCount--">getCompactedFilesCount()</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileManager.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileManager</a></dt>
+<dd>
+<div class="block">Returns the number of compacted files.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#getCompactedFilesCount--">getCompactedFilesCount()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html" title="class in org.apache.hadoop.hbase.regionserver">StripeStoreFileManager</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/WALEdit.html#getCompaction-org.apache.hadoop.hbase.Cell-">getCompaction(Cell)</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALEdit</a></dt>
 <dd>
 <div class="block">Deserialized and returns a CompactionDescriptor is the KeyValue contains one.</div>
@@ -84919,6 +84935,12 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html#recreateRegionInfo-java.util.List-">recreateRegionInfo(List&lt;HRegionInfo&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TruncateTableProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HStore.html#recreateScanners-java.util.List-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-boolean-">recreateScanners(List&lt;KeyValueScanner&gt;, boolean, boolean, boolean, ScanQueryMatcher, byte[], boolean, byte[], boolean, long, boolean)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/Store.html#recreateScanners-java.util.List-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-boolean-">recreateScanners(List&lt;KeyValueScanner&gt;, boolean, boolean, boolean, ScanQueryMatcher, byte[], boolean, byte[], boolean, long, boolean)</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></dt>
+<dd>
+<div class="block">Recreates the scanners on the current list of active store file scanners</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#recycleChunks--">recycleChunks()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreLABImpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#RedirectServlet-org.apache.hadoop.hbase.http.InfoServer-java.lang.String-">RedirectServlet(InfoServer, String)</a></span> - Constructor for class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html" title="class in org.apache.hadoop.hbase.master">HMaster.RedirectServlet</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/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 c8025d7..746a472 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -166,9 +166,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://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="http://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="http://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/BackupRestoreConstants.BackupCommand.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupRestoreConstants.BackupCommand</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupState.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupState</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/classification/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/classification/package-tree.html b/devapidocs/org/apache/hadoop/hbase/classification/package-tree.html
index 8b41e15..a597380 100644
--- a/devapidocs/org/apache/hadoop/hbase/classification/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/classification/package-tree.html
@@ -88,12 +88,12 @@
 </ul>
 <h2 title="Annotation Type Hierarchy">Annotation Type Hierarchy</h2>
 <ul>
-<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceStability.Unstable.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="typeNameLink">InterfaceStability.Unstable</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
-<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceStability.Stable.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="typeNameLink">InterfaceStability.Stable</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
-<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceStability.Evolving.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="typeNameLink">InterfaceStability.Evolving</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.LimitedPrivate.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="typeNameLink">InterfaceAudience.LimitedPrivate</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Public.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="typeNameLink">InterfaceAudience.Public</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceStability.Stable.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="typeNameLink">InterfaceStability.Stable</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceStability.Unstable.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="typeNameLink">InterfaceStability.Unstable</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Private.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="typeNameLink">InterfaceAudience.Private</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
-<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.LimitedPrivate.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="typeNameLink">InterfaceAudience.LimitedPrivate</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceStability.Evolving.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="typeNameLink">InterfaceStability.Evolving</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
 </ul>
 </div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/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 efd6725..3aafaf4 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -528,25 +528,25 @@
 <ul>
 <li type="circle">java.lang.<a href="http://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="http://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="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MasterSwitchType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/HBaseAdmin.ReplicationState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">HBaseAdmin.ReplicationState</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/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/AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">IsolationLevel</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcessTask.SubmittedRows.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncProcessTask.SubmittedRows</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/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/CompactionState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactionState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/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/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/HBaseAdmin.ReplicationState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">HBaseAdmin.ReplicationState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MobCompactPartitionPolicy.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MobCompactPartitionPolicy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncRequestFutureImpl.Retry.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncRequestFutureImpl.Retry</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/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/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/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/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/RegionLocateType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RegionLocateType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/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 b9da223..fe98004 100644
--- a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
@@ -175,14 +175,14 @@
 <ul>
 <li type="circle">java.lang.<a href="http://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="http://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="http://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.SatisfiesCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.SatisfiesCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/CompareFilter.CompareOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">CompareFilter.CompareOp</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.Order.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.Order</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterList.Operator.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterList.Operator</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">Filter.ReturnCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/RegexStringComparator.EngineType.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">RegexStringComparator.EngineType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/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/FilterWrapper.FilterRowRetCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterWrapper.FilterRowRetCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/BitComparator.BitwiseOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">BitComparator.BitwiseOp</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.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/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">Filter.ReturnCode</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/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 4af70b4..c3b37af 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -275,8 +275,8 @@
 <ul>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.ExternalBlockCaches.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">CacheConfig.ExternalBlockCaches</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.State.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">HFileBlock.Writer.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/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/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/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">Cacheable.MemoryType</span></a></li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/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 6db317d..d7e2457 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
@@ -341,9 +341,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://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="http://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="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceFactoryImpl.SourceStorage.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">MetricsHBaseServerSourceFactoryImpl.SourceStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/CallEvent.Type.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">CallEvent.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.BufferCallAction.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">BufferCallBeforeInitHandler.BufferCallAction</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceFactoryImpl.SourceStorage.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">MetricsHBaseServerSourceFactoryImpl.SourceStorage</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/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 81d74a5..0a6de36 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -287,10 +287,10 @@
 <ul>
 <li type="circle">java.lang.<a href="http://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="http://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="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/CellCounter.CellCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">CellCounter.CellCounterMapper.Counters</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSplit.Version.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TableSplit.Version</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">SyncTable.SyncMapper.Counter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/RowCounter.RowCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">RowCounter.RowCounterMapper.Counters</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/CellCounter.CellCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">CellCounter.CellCounterMapper.Counters</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">SyncTable.SyncMapper.Counter</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/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 c73f25f..e458be7 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
@@ -197,8 +197,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://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="http://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="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.LocalityType.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.LocalityType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.Action.Type.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.Action.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.LocalityType.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.LocalityType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/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 f3d0af6..3ca242b 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -313,10 +313,10 @@
 <li type="circle">java.lang.<a href="http://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="http://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="http://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/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/SplitLogManager.TerminationStatus.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.TerminationStatus</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.ResubmitDirective</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/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/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">RegionState.State</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/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 d5cdbd8..e0915a7 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
@@ -211,8 +211,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://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="http://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="http://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/DisableTableProcedure.MarkRegionOfflineOpResult.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">DisableTableProcedure.MarkRegionOfflineOpResult</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TableProcedureInterface.TableOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.ServerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">ServerProcedureInterface.ServerOperationType</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/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 f9035ce..907bfae 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -422,16 +422,16 @@
 <ul>
 <li type="circle">java.lang.<a href="http://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="http://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="http://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/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MemoryCompactionPolicy</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MetaTableAccessor.QueryType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/HConstants.Modify.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HConstants.Modify</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/ProcedureState.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ProcedureState</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/ProcedureState.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ProcedureState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HConstants.Modify.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HConstants.Modify</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MemoryCompactionPolicy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MetaTableAccessor.QueryType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/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/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/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeyValue.Type</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/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 95c80fb..5a40389 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -199,11 +199,11 @@
 <ul>
 <li type="circle">java.lang.<a href="http://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="http://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="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">StateMachineProcedure.Flow</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/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/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/LockInfo.LockType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockInfo.LockType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockInfo.ResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockInfo.ResourceType</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/LockInfo.LockType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockInfo.LockType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/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 83c439d..21caf73 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
@@ -201,12 +201,12 @@
 <ul>
 <li type="circle">java.lang.<a href="http://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="http://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="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaScope</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">OperationQuota.OperationType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottlingException.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceViolationPolicy.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">SpaceViolationPolicy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/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/ThrottleType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottleType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottlingException.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaScope</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/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/QuotaSnapshotStore.ViolationState.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaSnapshotStore.ViolationState</span></a></li>
 </ul>
 </li>


[21/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html
index b09e20b..3c088c8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html
@@ -155,937 +155,942 @@
 <span class="sourceLineNo">147</span>  }<a name="line.147"></a>
 <span class="sourceLineNo">148</span><a name="line.148"></a>
 <span class="sourceLineNo">149</span>  @Override<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  public void insertNewFiles(Collection&lt;StoreFile&gt; sfs) throws IOException {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(true);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    // Passing null does not cause NPE??<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    cmc.mergeResults(null, sfs);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    debugDumpState("Added new files");<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  }<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  @Override<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  public ImmutableCollection&lt;StoreFile&gt; clearFiles() {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    ImmutableCollection&lt;StoreFile&gt; result = state.allFilesCached;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    this.state = new State();<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    this.fileStarts.clear();<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    this.fileEnds.clear();<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    return result;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  }<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  @Override<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  public ImmutableCollection&lt;StoreFile&gt; clearCompactedFiles() {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    ImmutableCollection&lt;StoreFile&gt; result = state.allCompactedFilesCached;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    this.state = new State();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    return result;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  @Override<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public int getStorefileCount() {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    return state.allFilesCached.size();<a name="line.175"></a>
+<span class="sourceLineNo">150</span>  public int getCompactedFilesCount() {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    return state.allCompactedFilesCached.size();<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
+<span class="sourceLineNo">153</span><a name="line.153"></a>
+<span class="sourceLineNo">154</span>  @Override<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  public void insertNewFiles(Collection&lt;StoreFile&gt; sfs) throws IOException {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(true);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    // Passing null does not cause NPE??<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    cmc.mergeResults(null, sfs);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    debugDumpState("Added new files");<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 ImmutableCollection&lt;StoreFile&gt; clearFiles() {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    ImmutableCollection&lt;StoreFile&gt; result = state.allFilesCached;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    this.state = new State();<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    this.fileStarts.clear();<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    this.fileEnds.clear();<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    return result;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>  }<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>  @Override<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public ImmutableCollection&lt;StoreFile&gt; clearCompactedFiles() {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    ImmutableCollection&lt;StoreFile&gt; result = state.allCompactedFilesCached;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    this.state = new State();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    return result;<a name="line.175"></a>
 <span class="sourceLineNo">176</span>  }<a name="line.176"></a>
 <span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  /** See {@link StoreFileManager#getCandidateFilesForRowKeyBefore(KeyValue)}<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   * for details on this methods. */<a name="line.179"></a>
-<span class="sourceLineNo">180</span>  @Override<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  public Iterator&lt;StoreFile&gt; getCandidateFilesForRowKeyBefore(final KeyValue targetKey) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    KeyBeforeConcatenatedLists result = new KeyBeforeConcatenatedLists();<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    // Order matters for this call.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    result.addSublist(state.level0Files);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    if (!state.stripeFiles.isEmpty()) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      int lastStripeIndex = findStripeForRow(CellUtil.cloneRow(targetKey), false);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      for (int stripeIndex = lastStripeIndex; stripeIndex &gt;= 0; --stripeIndex) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>        result.addSublist(state.stripeFiles.get(stripeIndex));<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    return result.iterator();<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  /** See {@link StoreFileManager#getCandidateFilesForRowKeyBefore(KeyValue)} and<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * {@link StoreFileManager#updateCandidateFilesForRowKeyBefore(Iterator, KeyValue, Cell)}<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   * for details on this methods. */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  @Override<a name="line.197"></a>
-<span class="sourceLineNo">198</span>  public Iterator&lt;StoreFile&gt; updateCandidateFilesForRowKeyBefore(<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      Iterator&lt;StoreFile&gt; candidateFiles, final KeyValue targetKey, final Cell candidate) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    KeyBeforeConcatenatedLists.Iterator original =<a name="line.200"></a>
-<span class="sourceLineNo">201</span>        (KeyBeforeConcatenatedLists.Iterator)candidateFiles;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    assert original != null;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    ArrayList&lt;List&lt;StoreFile&gt;&gt; components = original.getComponents();<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    for (int firstIrrelevant = 0; firstIrrelevant &lt; components.size(); ++firstIrrelevant) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      StoreFile sf = components.get(firstIrrelevant).get(0);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      byte[] endKey = endOf(sf);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      // Entries are ordered as such: L0, then stripes in reverse order. We never remove<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      // level 0; we remove the stripe, and all subsequent ones, as soon as we find the<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      // first one that cannot possibly have better candidates.<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      if (!isInvalid(endKey) &amp;&amp; !isOpen(endKey)<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          &amp;&amp; (nonOpenRowCompare(targetKey, endKey) &gt;= 0)) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        original.removeComponents(firstIrrelevant);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>        break;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    return original;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  }<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>  private byte[] getSplitPoint(Collection&lt;StoreFile&gt; sfs) throws IOException {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    Optional&lt;StoreFile&gt; largestFile = StoreUtils.getLargestFile(sfs);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    return largestFile.isPresent()<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        ? StoreUtils.getFileSplitPoint(largestFile.get(), cellComparator).orElse(null) : null;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>  /**<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * Override of getSplitPoint that determines the split point as the boundary between two<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * stripes, unless it causes significant imbalance between split sides' sizes. In that<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * case, the split boundary will be chosen from the middle of one of the stripes to<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * minimize imbalance.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   * @return The split point, or null if no split is possible.<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   */<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  @Override<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  public byte[] getSplitPoint() throws IOException {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    if (this.getStorefileCount() == 0) return null;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    if (state.stripeFiles.size() &lt;= 1) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      return getSplitPointFromAllFiles();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    int leftIndex = -1, rightIndex = state.stripeFiles.size();<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    long leftSize = 0, rightSize = 0;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    long lastLeftSize = 0, lastRightSize = 0;<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    while (rightIndex - 1 != leftIndex) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      if (leftSize &gt;= rightSize) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        --rightIndex;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        lastRightSize = getStripeFilesSize(rightIndex);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        rightSize += lastRightSize;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      } else {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        ++leftIndex;<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        lastLeftSize = getStripeFilesSize(leftIndex);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        leftSize += lastLeftSize;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      }<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    if (leftSize == 0 || rightSize == 0) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      String errMsg = String.format("Cannot split on a boundary - left index %d size %d, "<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          + "right index %d size %d", leftIndex, leftSize, rightIndex, rightSize);<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      debugDumpState(errMsg);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      LOG.warn(errMsg);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      return getSplitPointFromAllFiles();<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    }<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    double ratio = (double)rightSize / leftSize;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    if (ratio &lt; 1) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      ratio = 1 / ratio;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    if (config.getMaxSplitImbalance() &gt; ratio) return state.stripeEndRows[leftIndex];<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>    // If the difference between the sides is too large, we could get the proportional key on<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    // the a stripe to equalize the difference, but there's no proportional key method at the<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    // moment, and it's not extremely important.<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    // See if we can achieve better ratio if we split the bigger side in half.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    boolean isRightLarger = rightSize &gt;= leftSize;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    double newRatio = isRightLarger<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        ? getMidStripeSplitRatio(leftSize, rightSize, lastRightSize)<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        : getMidStripeSplitRatio(rightSize, leftSize, lastLeftSize);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    if (newRatio &lt; 1) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      newRatio = 1 / newRatio;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    if (newRatio &gt;= ratio)  return state.stripeEndRows[leftIndex];<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    LOG.debug("Splitting the stripe - ratio w/o split " + ratio + ", ratio with split "<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        + newRatio + " configured ratio " + config.getMaxSplitImbalance());<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // Ok, we may get better ratio, get it.<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    return getSplitPoint(state.stripeFiles.get(isRightLarger ? rightIndex : leftIndex));<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  private byte[] getSplitPointFromAllFiles() throws IOException {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    ConcatenatedLists&lt;StoreFile&gt; sfs = new ConcatenatedLists&lt;&gt;();<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    sfs.addSublist(state.level0Files);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    sfs.addAllSublists(state.stripeFiles);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    return getSplitPoint(sfs);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>  private double getMidStripeSplitRatio(long smallerSize, long largerSize, long lastLargerSize) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    return (double)(largerSize - lastLargerSize / 2f) / (smallerSize + lastLargerSize / 2f);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>  @Override<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public Collection&lt;StoreFile&gt; getFilesForScan(byte[] startRow, boolean includeStartRow,<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      byte[] stopRow, boolean includeStopRow) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    if (state.stripeFiles.isEmpty()) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      return state.level0Files; // There's just L0.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    }<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>    int firstStripe = findStripeForRow(startRow, true);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    int lastStripe = findStripeForRow(stopRow, false);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    assert firstStripe &lt;= lastStripe;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    if (firstStripe == lastStripe &amp;&amp; state.level0Files.isEmpty()) {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      return state.stripeFiles.get(firstStripe); // There's just one stripe we need.<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    if (firstStripe == 0 &amp;&amp; lastStripe == (state.stripeFiles.size() - 1)) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      return state.allFilesCached; // We need to read all files.<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    }<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>    ConcatenatedLists&lt;StoreFile&gt; result = new ConcatenatedLists&lt;&gt;();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    result.addAllSublists(state.stripeFiles.subList(firstStripe, lastStripe + 1));<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    result.addSublist(state.level0Files);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    return result;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  }<a name="line.315"></a>
-<span class="sourceLineNo">316</span><a name="line.316"></a>
-<span class="sourceLineNo">317</span>  @Override<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public void addCompactionResults(<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    Collection&lt;StoreFile&gt; compactedFiles, Collection&lt;StoreFile&gt; results) throws IOException {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    // See class comment for the assumptions we make here.<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    LOG.debug("Attempting to merge compaction results: " + compactedFiles.size()<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        + " files replaced by " + results.size());<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    // In order to be able to fail in the middle of the operation, we'll operate on lazy<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    // copies and apply the result at the end.<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(false);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    cmc.mergeResults(compactedFiles, results);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    markCompactedAway(compactedFiles);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    debugDumpState("Merged compaction results");<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  }<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  // Mark the files as compactedAway once the storefiles and compactedfiles list is finalised<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  // Let a background thread close the actual reader on these compacted files and also<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  // ensure to evict the blocks from block cache so that they are no longer in<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  // cache<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  private void markCompactedAway(Collection&lt;StoreFile&gt; compactedFiles) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    for (StoreFile file : compactedFiles) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      file.markCompactedAway();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  }<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  @Override<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public void removeCompactedFiles(Collection&lt;StoreFile&gt; compactedFiles) throws IOException {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    // See class comment for the assumptions we make here.<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    LOG.debug("Attempting to delete compaction results: " + compactedFiles.size());<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    // In order to be able to fail in the middle of the operation, we'll operate on lazy<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    // copies and apply the result at the end.<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(false);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    cmc.deleteResults(compactedFiles);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    debugDumpState("Deleted compaction results");<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  }<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  @Override<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  public int getStoreCompactionPriority() {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    // If there's only L0, do what the default store does.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    // If we are in critical priority, do the same - we don't want to trump all stores all<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    // the time due to how many files we have.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    int fc = getStorefileCount();<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    if (state.stripeFiles.isEmpty() || (this.blockingFileCount &lt;= fc)) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      return this.blockingFileCount - fc;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    // If we are in good shape, we don't want to be trumped by all other stores due to how<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    // many files we have, so do an approximate mapping to normal priority range; L0 counts<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    // for all stripes.<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    int l0 = state.level0Files.size(), sc = state.stripeFiles.size();<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    int priority = (int)Math.ceil(((double)(this.blockingFileCount - fc + l0) / sc) - l0);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    return (priority &lt;= HStore.PRIORITY_USER) ? (HStore.PRIORITY_USER + 1) : priority;<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  /**<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * Gets the total size of all files in the stripe.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * @param stripeIndex Stripe index.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * @return Size.<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   */<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  private long getStripeFilesSize(int stripeIndex) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    long result = 0;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    for (StoreFile sf : state.stripeFiles.get(stripeIndex)) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      result += sf.getReader().length();<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    return result;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  }<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>  /**<a name="line.382"></a>
-<span class="sourceLineNo">383</span>   * Loads initial store files that were picked up from some physical location pertaining to<a name="line.383"></a>
-<span class="sourceLineNo">384</span>   * this store (presumably). Unlike adding files after compaction, assumes empty initial<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * sets, and is forgiving with regard to stripe constraints - at worst, many/all files will<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   * go to level 0.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * @param storeFiles Store files to add.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private void loadUnclassifiedStoreFiles(List&lt;StoreFile&gt; storeFiles) {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    LOG.debug("Attempting to load " + storeFiles.size() + " store files.");<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    TreeMap&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; candidateStripes = new TreeMap&lt;&gt;(MAP_COMPARATOR);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    ArrayList&lt;StoreFile&gt; level0Files = new ArrayList&lt;&gt;();<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    // Separate the files into tentative stripes; then validate. Currently, we rely on metadata.<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    // If needed, we could dynamically determine the stripes in future.<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    for (StoreFile sf : storeFiles) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      byte[] startRow = startOf(sf), endRow = endOf(sf);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      // Validate the range and put the files into place.<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      if (isInvalid(startRow) || isInvalid(endRow)) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        insertFileIntoStripe(level0Files, sf); // No metadata - goes to L0.<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        ensureLevel0Metadata(sf);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      } else if (!isOpen(startRow) &amp;&amp; !isOpen(endRow) &amp;&amp;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>          nonOpenRowCompare(startRow, endRow) &gt;= 0) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        LOG.error("Unexpected metadata - start row [" + Bytes.toString(startRow) + "], end row ["<a name="line.403"></a>
-<span class="sourceLineNo">404</span>          + Bytes.toString(endRow) + "] in file [" + sf.getPath() + "], pushing to L0");<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        insertFileIntoStripe(level0Files, sf); // Bad metadata - goes to L0 also.<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        ensureLevel0Metadata(sf);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      } else {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        ArrayList&lt;StoreFile&gt; stripe = candidateStripes.get(endRow);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        if (stripe == null) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>          stripe = new ArrayList&lt;&gt;();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>          candidateStripes.put(endRow, stripe);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        }<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        insertFileIntoStripe(stripe, sf);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      }<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    }<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    // Possible improvement - for variable-count stripes, if all the files are in L0, we can<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    // instead create single, open-ended stripe with all files.<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>    boolean hasOverlaps = false;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    byte[] expectedStartRow = null; // first stripe can start wherever<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    Iterator&lt;Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt;&gt; entryIter =<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        candidateStripes.entrySet().iterator();<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    while (entryIter.hasNext()) {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; entry = entryIter.next();<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      ArrayList&lt;StoreFile&gt; files = entry.getValue();<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      // Validate the file start rows, and remove the bad ones to level 0.<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      for (int i = 0; i &lt; files.size(); ++i) {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        StoreFile sf = files.get(i);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        byte[] startRow = startOf(sf);<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        if (expectedStartRow == null) {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>          expectedStartRow = startRow; // ensure that first stripe is still consistent<a name="line.431"></a>
-<span class="sourceLineNo">432</span>        } else if (!rowEquals(expectedStartRow, startRow)) {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          hasOverlaps = true;<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          LOG.warn("Store file doesn't fit into the tentative stripes - expected to start at ["<a name="line.434"></a>
-<span class="sourceLineNo">435</span>              + Bytes.toString(expectedStartRow) + "], but starts at [" + Bytes.toString(startRow)<a name="line.435"></a>
-<span class="sourceLineNo">436</span>              + "], to L0 it goes");<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          StoreFile badSf = files.remove(i);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>          insertFileIntoStripe(level0Files, badSf);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>          ensureLevel0Metadata(badSf);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>          --i;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      }<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      // Check if any files from the candidate stripe are valid. If so, add a stripe.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      byte[] endRow = entry.getKey();<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      if (!files.isEmpty()) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>        expectedStartRow = endRow; // Next stripe must start exactly at that key.<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      } else {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>        entryIter.remove();<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>    // In the end, there must be open ends on two sides. If not, and there were no errors i.e.<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    // files are consistent, they might be coming from a split. We will treat the boundaries<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // as open keys anyway, and log the message.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    // If there were errors, we'll play it safe and dump everything into L0.<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    if (!candidateStripes.isEmpty()) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      StoreFile firstFile = candidateStripes.firstEntry().getValue().get(0);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      boolean isOpen = isOpen(startOf(firstFile)) &amp;&amp; isOpen(candidateStripes.lastKey());<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      if (!isOpen) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        LOG.warn("The range of the loaded files does not cover full key space: from ["<a name="line.460"></a>
-<span class="sourceLineNo">461</span>            + Bytes.toString(startOf(firstFile)) + "], to ["<a name="line.461"></a>
-<span class="sourceLineNo">462</span>            + Bytes.toString(candidateStripes.lastKey()) + "]");<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        if (!hasOverlaps) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>          ensureEdgeStripeMetadata(candidateStripes.firstEntry().getValue(), true);<a name="line.464"></a>
-<span class="sourceLineNo">465</span>          ensureEdgeStripeMetadata(candidateStripes.lastEntry().getValue(), false);<a name="line.465"></a>
-<span class="sourceLineNo">466</span>        } else {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>          LOG.warn("Inconsistent files, everything goes to L0.");<a name="line.467"></a>
-<span class="sourceLineNo">468</span>          for (ArrayList&lt;StoreFile&gt; files : candidateStripes.values()) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>            for (StoreFile sf : files) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>              insertFileIntoStripe(level0Files, sf);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>              ensureLevel0Metadata(sf);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>            }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>          }<a name="line.473"></a>
-<span class="sourceLineNo">474</span>          candidateStripes.clear();<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        }<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      }<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>    // Copy the results into the fields.<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    State state = new State();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    state.level0Files = ImmutableList.copyOf(level0Files);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    state.stripeFiles = new ArrayList&lt;&gt;(candidateStripes.size());<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    state.stripeEndRows = new byte[Math.max(0, candidateStripes.size() - 1)][];<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    ArrayList&lt;StoreFile&gt; newAllFiles = new ArrayList&lt;&gt;(level0Files);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    int i = candidateStripes.size() - 1;<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    for (Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; entry : candidateStripes.entrySet()) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      state.stripeFiles.add(ImmutableList.copyOf(entry.getValue()));<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      newAllFiles.addAll(entry.getValue());<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      if (i &gt; 0) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        state.stripeEndRows[state.stripeFiles.size() - 1] = entry.getKey();<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      }<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      --i;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    }<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    state.allFilesCached = ImmutableList.copyOf(newAllFiles);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    this.state = state;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    debugDumpState("Files loaded");<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  }<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>  private void ensureEdgeStripeMetadata(ArrayList&lt;StoreFile&gt; stripe, boolean isFirst) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    HashMap&lt;StoreFile, byte[]&gt; targetMap = isFirst ? fileStarts : fileEnds;<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    for (StoreFile sf : stripe) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      targetMap.put(sf, OPEN_KEY);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    }<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  }<a name="line.504"></a>
-<span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>  private void ensureLevel0Metadata(StoreFile sf) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    if (!isInvalid(startOf(sf))) this.fileStarts.put(sf, INVALID_KEY_IN_MAP);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    if (!isInvalid(endOf(sf))) this.fileEnds.put(sf, INVALID_KEY_IN_MAP);<a name="line.508"></a>
+<span class="sourceLineNo">178</span>  @Override<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  public int getStorefileCount() {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    return state.allFilesCached.size();<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  }<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>  /** See {@link StoreFileManager#getCandidateFilesForRowKeyBefore(KeyValue)}<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * for details on this methods. */<a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @Override<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public Iterator&lt;StoreFile&gt; getCandidateFilesForRowKeyBefore(final KeyValue targetKey) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    KeyBeforeConcatenatedLists result = new KeyBeforeConcatenatedLists();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    // Order matters for this call.<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    result.addSublist(state.level0Files);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    if (!state.stripeFiles.isEmpty()) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      int lastStripeIndex = findStripeForRow(CellUtil.cloneRow(targetKey), false);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      for (int stripeIndex = lastStripeIndex; stripeIndex &gt;= 0; --stripeIndex) {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        result.addSublist(state.stripeFiles.get(stripeIndex));<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      }<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    return result.iterator();<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  }<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span>  /** See {@link StoreFileManager#getCandidateFilesForRowKeyBefore(KeyValue)} and<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * {@link StoreFileManager#updateCandidateFilesForRowKeyBefore(Iterator, KeyValue, Cell)}<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   * for details on this methods. */<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  @Override<a name="line.202"></a>
+<span class="sourceLineNo">203</span>  public Iterator&lt;StoreFile&gt; updateCandidateFilesForRowKeyBefore(<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      Iterator&lt;StoreFile&gt; candidateFiles, final KeyValue targetKey, final Cell candidate) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    KeyBeforeConcatenatedLists.Iterator original =<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        (KeyBeforeConcatenatedLists.Iterator)candidateFiles;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    assert original != null;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    ArrayList&lt;List&lt;StoreFile&gt;&gt; components = original.getComponents();<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    for (int firstIrrelevant = 0; firstIrrelevant &lt; components.size(); ++firstIrrelevant) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      StoreFile sf = components.get(firstIrrelevant).get(0);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      byte[] endKey = endOf(sf);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      // Entries are ordered as such: L0, then stripes in reverse order. We never remove<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      // level 0; we remove the stripe, and all subsequent ones, as soon as we find the<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      // first one that cannot possibly have better candidates.<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      if (!isInvalid(endKey) &amp;&amp; !isOpen(endKey)<a name="line.215"></a>
+<span class="sourceLineNo">216</span>          &amp;&amp; (nonOpenRowCompare(targetKey, endKey) &gt;= 0)) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        original.removeComponents(firstIrrelevant);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        break;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    return original;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>  private byte[] getSplitPoint(Collection&lt;StoreFile&gt; sfs) throws IOException {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    Optional&lt;StoreFile&gt; largestFile = StoreUtils.getLargestFile(sfs);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    return largestFile.isPresent()<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        ? StoreUtils.getFileSplitPoint(largestFile.get(), cellComparator).orElse(null) : null;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  }<a name="line.228"></a>
+<span class="sourceLineNo">229</span><a name="line.229"></a>
+<span class="sourceLineNo">230</span>  /**<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * Override of getSplitPoint that determines the split point as the boundary between two<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   * stripes, unless it causes significant imbalance between split sides' sizes. In that<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   * case, the split boundary will be chosen from the middle of one of the stripes to<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * minimize imbalance.<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * @return The split point, or null if no split is possible.<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  @Override<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  public byte[] getSplitPoint() throws IOException {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    if (this.getStorefileCount() == 0) return null;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    if (state.stripeFiles.size() &lt;= 1) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      return getSplitPointFromAllFiles();<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    int leftIndex = -1, rightIndex = state.stripeFiles.size();<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    long leftSize = 0, rightSize = 0;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    long lastLeftSize = 0, lastRightSize = 0;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    while (rightIndex - 1 != leftIndex) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      if (leftSize &gt;= rightSize) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        --rightIndex;<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        lastRightSize = getStripeFilesSize(rightIndex);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        rightSize += lastRightSize;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      } else {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        ++leftIndex;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        lastLeftSize = getStripeFilesSize(leftIndex);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        leftSize += lastLeftSize;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    }<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    if (leftSize == 0 || rightSize == 0) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      String errMsg = String.format("Cannot split on a boundary - left index %d size %d, "<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          + "right index %d size %d", leftIndex, leftSize, rightIndex, rightSize);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      debugDumpState(errMsg);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      LOG.warn(errMsg);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      return getSplitPointFromAllFiles();<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    double ratio = (double)rightSize / leftSize;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    if (ratio &lt; 1) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      ratio = 1 / ratio;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    if (config.getMaxSplitImbalance() &gt; ratio) return state.stripeEndRows[leftIndex];<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span>    // If the difference between the sides is too large, we could get the proportional key on<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    // the a stripe to equalize the difference, but there's no proportional key method at the<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    // moment, and it's not extremely important.<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // See if we can achieve better ratio if we split the bigger side in half.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    boolean isRightLarger = rightSize &gt;= leftSize;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    double newRatio = isRightLarger<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        ? getMidStripeSplitRatio(leftSize, rightSize, lastRightSize)<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        : getMidStripeSplitRatio(rightSize, leftSize, lastLeftSize);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    if (newRatio &lt; 1) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      newRatio = 1 / newRatio;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    if (newRatio &gt;= ratio)  return state.stripeEndRows[leftIndex];<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    LOG.debug("Splitting the stripe - ratio w/o split " + ratio + ", ratio with split "<a name="line.282"></a>
+<span class="sourceLineNo">283</span>        + newRatio + " configured ratio " + config.getMaxSplitImbalance());<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // Ok, we may get better ratio, get it.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    return getSplitPoint(state.stripeFiles.get(isRightLarger ? rightIndex : leftIndex));<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  }<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>  private byte[] getSplitPointFromAllFiles() throws IOException {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    ConcatenatedLists&lt;StoreFile&gt; sfs = new ConcatenatedLists&lt;&gt;();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    sfs.addSublist(state.level0Files);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    sfs.addAllSublists(state.stripeFiles);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    return getSplitPoint(sfs);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>  private double getMidStripeSplitRatio(long smallerSize, long largerSize, long lastLargerSize) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    return (double)(largerSize - lastLargerSize / 2f) / (smallerSize + lastLargerSize / 2f);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  }<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span>  @Override<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  public Collection&lt;StoreFile&gt; getFilesForScan(byte[] startRow, boolean includeStartRow,<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      byte[] stopRow, boolean includeStopRow) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    if (state.stripeFiles.isEmpty()) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      return state.level0Files; // There's just L0.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>    int firstStripe = findStripeForRow(startRow, true);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    int lastStripe = findStripeForRow(stopRow, false);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    assert firstStripe &lt;= lastStripe;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    if (firstStripe == lastStripe &amp;&amp; state.level0Files.isEmpty()) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      return state.stripeFiles.get(firstStripe); // There's just one stripe we need.<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    if (firstStripe == 0 &amp;&amp; lastStripe == (state.stripeFiles.size() - 1)) {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      return state.allFilesCached; // We need to read all files.<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    }<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>    ConcatenatedLists&lt;StoreFile&gt; result = new ConcatenatedLists&lt;&gt;();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    result.addAllSublists(state.stripeFiles.subList(firstStripe, lastStripe + 1));<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    result.addSublist(state.level0Files);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    return result;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  @Override<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public void addCompactionResults(<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    Collection&lt;StoreFile&gt; compactedFiles, Collection&lt;StoreFile&gt; results) throws IOException {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // See class comment for the assumptions we make here.<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    LOG.debug("Attempting to merge compaction results: " + compactedFiles.size()<a name="line.326"></a>
+<span class="sourceLineNo">327</span>        + " files replaced by " + results.size());<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    // In order to be able to fail in the middle of the operation, we'll operate on lazy<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    // copies and apply the result at the end.<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(false);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    cmc.mergeResults(compactedFiles, results);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    markCompactedAway(compactedFiles);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    debugDumpState("Merged compaction results");<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  // Mark the files as compactedAway once the storefiles and compactedfiles list is finalised<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  // Let a background thread close the actual reader on these compacted files and also<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  // ensure to evict the blocks from block cache so that they are no longer in<a name="line.338"></a>
+<span class="sourceLineNo">339</span>  // cache<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  private void markCompactedAway(Collection&lt;StoreFile&gt; compactedFiles) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    for (StoreFile file : compactedFiles) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      file.markCompactedAway();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>  @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  public void removeCompactedFiles(Collection&lt;StoreFile&gt; compactedFiles) throws IOException {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    // See class comment for the assumptions we make here.<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    LOG.debug("Attempting to delete compaction results: " + compactedFiles.size());<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // In order to be able to fail in the middle of the operation, we'll operate on lazy<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    // copies and apply the result at the end.<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(false);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    cmc.deleteResults(compactedFiles);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    debugDumpState("Deleted compaction results");<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>  @Override<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  public int getStoreCompactionPriority() {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    // If there's only L0, do what the default store does.<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    // If we are in critical priority, do the same - we don't want to trump all stores all<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    // the time due to how many files we have.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    int fc = getStorefileCount();<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    if (state.stripeFiles.isEmpty() || (this.blockingFileCount &lt;= fc)) {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      return this.blockingFileCount - fc;<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    }<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    // If we are in good shape, we don't want to be trumped by all other stores due to how<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    // many files we have, so do an approximate mapping to normal priority range; L0 counts<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    // for all stripes.<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    int l0 = state.level0Files.size(), sc = state.stripeFiles.size();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    int priority = (int)Math.ceil(((double)(this.blockingFileCount - fc + l0) / sc) - l0);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    return (priority &lt;= HStore.PRIORITY_USER) ? (HStore.PRIORITY_USER + 1) : priority;<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  /**<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * Gets the total size of all files in the stripe.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @param stripeIndex Stripe index.<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * @return Size.<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   */<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  private long getStripeFilesSize(int stripeIndex) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    long result = 0;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    for (StoreFile sf : state.stripeFiles.get(stripeIndex)) {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      result += sf.getReader().length();<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    }<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    return result;<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
+<span class="sourceLineNo">386</span><a name="line.386"></a>
+<span class="sourceLineNo">387</span>  /**<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * Loads initial store files that were picked up from some physical location pertaining to<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * this store (presumably). Unlike adding files after compaction, assumes empty initial<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * sets, and is forgiving with regard to stripe constraints - at worst, many/all files will<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * go to level 0.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   * @param storeFiles Store files to add.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>   */<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  private void loadUnclassifiedStoreFiles(List&lt;StoreFile&gt; storeFiles) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    LOG.debug("Attempting to load " + storeFiles.size() + " store files.");<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    TreeMap&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; candidateStripes = new TreeMap&lt;&gt;(MAP_COMPARATOR);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    ArrayList&lt;StoreFile&gt; level0Files = new ArrayList&lt;&gt;();<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Separate the files into tentative stripes; then validate. Currently, we rely on metadata.<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    // If needed, we could dynamically determine the stripes in future.<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    for (StoreFile sf : storeFiles) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      byte[] startRow = startOf(sf), endRow = endOf(sf);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      // Validate the range and put the files into place.<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      if (isInvalid(startRow) || isInvalid(endRow)) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>        insertFileIntoStripe(level0Files, sf); // No metadata - goes to L0.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        ensureLevel0Metadata(sf);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      } else if (!isOpen(startRow) &amp;&amp; !isOpen(endRow) &amp;&amp;<a name="line.406"></a>
+<span class="sourceLineNo">407</span>          nonOpenRowCompare(startRow, endRow) &gt;= 0) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        LOG.error("Unexpected metadata - start row [" + Bytes.toString(startRow) + "], end row ["<a name="line.408"></a>
+<span class="sourceLineNo">409</span>          + Bytes.toString(endRow) + "] in file [" + sf.getPath() + "], pushing to L0");<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        insertFileIntoStripe(level0Files, sf); // Bad metadata - goes to L0 also.<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        ensureLevel0Metadata(sf);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      } else {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        ArrayList&lt;StoreFile&gt; stripe = candidateStripes.get(endRow);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        if (stripe == null) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>          stripe = new ArrayList&lt;&gt;();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>          candidateStripes.put(endRow, stripe);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        insertFileIntoStripe(stripe, sf);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      }<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    // Possible improvement - for variable-count stripes, if all the files are in L0, we can<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    // instead create single, open-ended stripe with all files.<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    boolean hasOverlaps = false;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    byte[] expectedStartRow = null; // first stripe can start wherever<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    Iterator&lt;Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt;&gt; entryIter =<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        candidateStripes.entrySet().iterator();<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    while (entryIter.hasNext()) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; entry = entryIter.next();<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      ArrayList&lt;StoreFile&gt; files = entry.getValue();<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      // Validate the file start rows, and remove the bad ones to level 0.<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      for (int i = 0; i &lt; files.size(); ++i) {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>        StoreFile sf = files.get(i);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        byte[] startRow = startOf(sf);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>        if (expectedStartRow == null) {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>          expectedStartRow = startRow; // ensure that first stripe is still consistent<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        } else if (!rowEquals(expectedStartRow, startRow)) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          hasOverlaps = true;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          LOG.warn("Store file doesn't fit into the tentative stripes - expected to start at ["<a name="line.439"></a>
+<span class="sourceLineNo">440</span>              + Bytes.toString(expectedStartRow) + "], but starts at [" + Bytes.toString(startRow)<a name="line.440"></a>
+<span class="sourceLineNo">441</span>              + "], to L0 it goes");<a name="line.441"></a>
+<span class="sourceLineNo">442</span>          StoreFile badSf = files.remove(i);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>          insertFileIntoStripe(level0Files, badSf);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>          ensureLevel0Metadata(badSf);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>          --i;<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>      // Check if any files from the candidate stripe are valid. If so, add a stripe.<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      byte[] endRow = entry.getKey();<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      if (!files.isEmpty()) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>        expectedStartRow = endRow; // Next stripe must start exactly at that key.<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      } else {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        entryIter.remove();<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>    // In the end, there must be open ends on two sides. If not, and there were no errors i.e.<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    // files are consistent, they might be coming from a split. We will treat the boundaries<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    // as open keys anyway, and log the message.<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    // If there were errors, we'll play it safe and dump everything into L0.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    if (!candidateStripes.isEmpty()) {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      StoreFile firstFile = candidateStripes.firstEntry().getValue().get(0);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      boolean isOpen = isOpen(startOf(firstFile)) &amp;&amp; isOpen(candidateStripes.lastKey());<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      if (!isOpen) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>        LOG.warn("The range of the loaded files does not cover full key space: from ["<a name="line.465"></a>
+<span class="sourceLineNo">466</span>            + Bytes.toString(startOf(firstFile)) + "], to ["<a name="line.466"></a>
+<span class="sourceLineNo">467</span>            + Bytes.toString(candidateStripes.lastKey()) + "]");<a name="line.467"></a>
+<span class="sourceLineNo">468</span>        if (!hasOverlaps) {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>          ensureEdgeStripeMetadata(candidateStripes.firstEntry().getValue(), true);<a name="line.469"></a>
+<span class="sourceLineNo">470</span>          ensureEdgeStripeMetadata(candidateStripes.lastEntry().getValue(), false);<a name="line.470"></a>
+<span class="sourceLineNo">471</span>        } else {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>          LOG.warn("Inconsistent files, everything goes to L0.");<a name="line.472"></a>
+<span class="sourceLineNo">473</span>          for (ArrayList&lt;StoreFile&gt; files : candidateStripes.values()) {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>            for (StoreFile sf : files) {<a name="line.474"></a>
+<span class="sourceLineNo">475</span>              insertFileIntoStripe(level0Files, sf);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>              ensureLevel0Metadata(sf);<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>          candidateStripes.clear();<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><a name="line.483"></a>
+<span class="sourceLineNo">484</span>    // Copy the results into the fields.<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    State state = new State();<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    state.level0Files = ImmutableList.copyOf(level0Files);<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    state.stripeFiles = new ArrayList&lt;&gt;(candidateStripes.size());<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    state.stripeEndRows = new byte[Math.max(0, candidateStripes.size() - 1)][];<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    ArrayList&lt;StoreFile&gt; newAllFiles = new ArrayList&lt;&gt;(level0Files);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    int i = candidateStripes.size() - 1;<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    for (Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; entry : candidateStripes.entrySet()) {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>      state.stripeFiles.add(ImmutableList.copyOf(entry.getValue()));<a name="line.492"></a>
+<span class="sourceLineNo">493</span>      newAllFiles.addAll(entry.getValue());<a name="line.493"></a>
+<span class="sourceLineNo">494</span>      if (i &gt; 0) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>        state.stripeEndRows[state.stripeFiles.size() - 1] = entry.getKey();<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      }<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      --i;<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    }<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    state.allFilesCached = ImmutableList.copyOf(newAllFiles);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    this.state = state;<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    debugDumpState("Files loaded");<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>  private void ensureEdgeStripeMetadata(ArrayList&lt;StoreFile&gt; stripe, boolean isFirst) {<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    HashMap&lt;StoreFile, byte[]&gt; targetMap = isFirst ? fileStarts : fileEnds;<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    for (StoreFile sf : stripe) {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>      targetMap.put(sf, OPEN_KEY);<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    }<a name="line.508"></a>
 <span class="sourceLineNo">509</span>  }<a name="line.509"></a>
 <span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>  private void debugDumpState(String string) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    if (!LOG.isDebugEnabled()) return;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    StringBuilder sb = new StringBuilder();<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    sb.append("\n" + string + "; current stripe state is as such:");<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    sb.append("\n level 0 with ")<a name="line.515"></a>
-<span class="sourceLineNo">516</span>        .append(state.level0Files.size())<a name="line.516"></a>
-<span class="sourceLineNo">517</span>        .append(<a name="line.517"></a>
-<span class="sourceLineNo">518</span>          " files: "<a name="line.518"></a>
-<span class="sourceLineNo">519</span>              + TraditionalBinaryPrefix.long2String(<a name="line.519"></a>
-<span class="sourceLineNo">520</span>                StripeCompactionPolicy.getTotalFileSize(state.level0Files), "", 1) + ";");<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    for (int i = 0; i &lt; state.stripeFiles.size(); ++i) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      String endRow = (i == state.stripeEndRows.length)<a name="line.522"></a>
-<span class="sourceLineNo">523</span>          ? "(end)" : "[" + Bytes.toString(state.stripeEndRows[i]) + "]";<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      sb.append("\n stripe ending in ")<a name="line.524"></a>
-<span class="sourceLineNo">525</span>          .append(endRow)<a name="line.525"></a>
-<span class="sourceLineNo">526</span>          .append(" with ")<a name="line.526"></a>
-<span class="sourceLineNo">527</span>          .append(state.stripeFiles.get(i).size())<a name="line.527"></a>
-<span class="sourceLineNo">528</span>          .append(<a name="line.528"></a>
-<span class="sourceLineNo">529</span>            " files: "<a name="line.529"></a>
-<span class="sourceLineNo">530</span>                + TraditionalBinaryPrefix.long2String(<a name="line.530"></a>
-<span class="sourceLineNo">531</span>                  StripeCompactionPolicy.getTotalFileSize(state.stripeFiles.get(i)), "", 1) + ";");<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    }<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    sb.append("\n").append(state.stripeFiles.size()).append(" stripes total.");<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    sb.append("\n").append(getStorefileCount()).append(" files total.");<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    LOG.debug(sb.toString());<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>  /**<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * Checks whether the key indicates an open interval boundary (i.e. infinity).<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  private static final boolean isOpen(byte[] key) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    return key != null &amp;&amp; key.length == 0;<a name="line.542"></a>
-<span class="sourceLineNo">543</span>  }<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>  private static final boolean isOpen(Cell key) {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    return key != null &amp;&amp; key.getRowLength() == 0;<a name="line.546"></a>
-<span class="sourceLineNo">547</span>  }<a name="line.547"></a>
-<span class="sourceLineNo">548</span><a name="line.548"></a>
-<span class="sourceLineNo">549</span>  /**<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * Checks whether the key is invalid (e.g. from an L0 file, or non-stripe-compacted files).<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   */<a name="line.551"></a>
-<span class="sourceLineNo">552</span>  private static final boolean isInvalid(byte[] key) {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    // No need to use Arrays.equals because INVALID_KEY is null<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    return key == INVALID_KEY;<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>  /**<a name="line.557"></a>
-<span class="sourceLineNo">558</span>   * Compare two keys for equality.<a name="line.558"></a>
-<span class="sourceLineNo">559</span>   */<a name="line.559"></a>
-<span class="sourceLineNo">560</span>  private final boolean rowEquals(byte[] k1, byte[] k2) {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    return Bytes.equals(k1, 0, k1.length, k2, 0, k2.length);<a name="line.561"></a>
-<span class="sourceLineNo">562</span>  }<a name="line.562"></a>
-<span class="sourceLineNo">563</span><a name="line.563"></a>
-<span class="sourceLineNo">564</span>  /**<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * Compare two keys. Keys must not be open (isOpen(row) == false).<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   */<a name="line.566"></a>
-<span class="sourceLineNo">567</span>  private final int nonOpenRowCompare(byte[] k1, byte[] k2) {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    assert !isOpen(k1) &amp;&amp; !isOpen(k2);<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    return Bytes.compareTo(k1, k2);<a name="line.569"></a>
-<span class="sourceLineNo">570</span>  }<a name="line.570"></a>
-<span class="sourceLineNo">571</span><a name="line.571"></a>
-<span class="sourceLineNo">572</span>  private final int nonOpenRowCompare(Cell k1, byte[] k2) {<a name="line.572"></a>
+<span class="sourceLineNo">511</span>  private void ensureLevel0Metadata(StoreFile sf) {<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    if (!isInvalid(startOf(sf))) this.fileStarts.put(sf, INVALID_KEY_IN_MAP);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    if (!isInvalid(endOf(sf))) this.fileEnds.put(sf, INVALID_KEY_IN_MAP);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>  }<a name="line.514"></a>
+<span class="sourceLineNo">515</span><a name="line.515"></a>
+<span class="sourceLineNo">516</span>  private void debugDumpState(String string) {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    if (!LOG.isDebugEnabled()) return;<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    StringBuilder sb = new StringBuilder();<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    sb.append("\n" + string + "; current stripe state is as such:");<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    sb.append("\n level 0 with ")<a name="line.520"></a>
+<span class="sourceLineNo">521</span>        .append(state.level0Files.size())<a name="line.521"></a>
+<span class="sourceLineNo">522</span>        .append(<a name="line.522"></a>
+<span class="sourceLineNo">523</span>          " files: "<a name="line.523"></a>
+<span class="sourceLineNo">524</span>              + TraditionalBinaryPrefix.long2String(<a name="line.524"></a>
+<span class="sourceLineNo">525</span>                StripeCompactionPolicy.getTotalFileSize(state.level0Files), "", 1) + ";");<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    for (int i = 0; i &lt; state.stripeFiles.size(); ++i) {<a name="line.526"></a>
+<span class="sourceLineNo">527</span>      String endRow = (i == state.stripeEndRows.length)<a name="line.527"></a>
+<span class="sourceLineNo">528</span>          ? "(end)" : "[" + Bytes.toString(state.stripeEndRows[i]) + "]";<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      sb.append("\n stripe ending in ")<a name="line.529"></a>
+<span class="sourceLineNo">530</span>          .append(endRow)<a name="line.530"></a>
+<span class="sourceLineNo">531</span>          .append(" with ")<a name="line.531"></a>
+<span class="sourceLineNo">532</span>          .append(state.stripeFiles.get(i).size())<a name="line.532"></a>
+<span class="sourceLineNo">533</span>          .append(<a name="line.533"></a>
+<span class="sourceLineNo">534</span>            " files: "<a name="line.534"></a>
+<span class="sourceLineNo">535</span>                + TraditionalBinaryPrefix.long2String(<a name="line.535"></a>
+<span class="sourceLineNo">536</span>                  StripeCompactionPolicy.getTotalFileSize(state.stripeFiles.get(i)), "", 1) + ";");<a name="line.536"></a>
+<span class="sourceLineNo">537</span>    }<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    sb.append("\n").append(state.stripeFiles.size()).append(" stripes total.");<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    sb.append("\n").append(getStorefileCount()).append(" files total.");<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    LOG.debug(sb.toString());<a name="line.540"></a>
+<span class="sourceLineNo">541</span>  }<a name="line.541"></a>
+<span class="sourceLineNo">542</span><a name="line.542"></a>
+<span class="sourceLineNo">543</span>  /**<a name="line.543"></a>
+<span class="sourceLineNo">544</span>   * Checks whether the key indicates an open interval boundary (i.e. infinity).<a name="line.544"></a>
+<span class="sourceLineNo">545</span>   */<a name="line.545"></a>
+<span class="sourceLineNo">546</span>  private static final boolean isOpen(byte[] key) {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>    return key != null &amp;&amp; key.length == 0;<a name="line.547"></a>
+<span class="sourceLineNo">548</span>  }<a name="line.548"></a>
+<span class="sourceLineNo">549</span><a name="line.549"></a>
+<span class="sourceLineNo">550</span>  private static final boolean isOpen(Cell key) {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    return key != null &amp;&amp; key.getRowLength() == 0;<a name="line.551"></a>
+<span class="sourceLineNo">552</span>  }<a name="line.552"></a>
+<span class="sourceLineNo">553</span><a name="line.553"></a>
+<span class="sourceLineNo">554</span>  /**<a name="line.554"></a>
+<span class="sourceLineNo">555</span>   * Checks whether the key is invalid (e.g. from an L0 file, or non-stripe-compacted files).<a name="line.555"></a>
+<span class="sourceLineNo">556</span>   */<a name="line.556"></a>
+<span class="sourceLineNo">557</span>  private static final boolean isInvalid(byte[] key) {<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    // No need to use Arrays.equals because INVALID_KEY is null<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    return key == INVALID_KEY;<a name="line.559"></a>
+<span class="sourceLineNo">560</span>  }<a name="line.560"></a>
+<span class="sourceLineNo">561</span><a name="line.561"></a>
+<span class="sourceLineNo">562</span>  /**<a name="line.562"></a>
+<span class="sourceLineNo">563</span>   * Compare two keys for equality.<a name="line.563"></a>
+<span class="sourceLineNo">564</span>   */<a name="line.564"></a>
+<span class="sourceLineNo">565</span>  private final boolean rowEquals(byte[] k1, byte[] k2) {<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    return Bytes.equals(k1, 0, k1.length, k2, 0, k2.length);<a name="line.566"></a>
+<span class="sourceLineNo">567</span>  }<a name="line.567"></a>
+<span class="sourceLineNo">568</span><a name="line.568"></a>
+<span class="sourceLineNo">569</span>  /**<a name="line.569"></a>
+<span class="sourceLineNo">570</span>   * Compare two keys. Keys must not be open (isOpen(row) == false).<a name="line.570"></a>
+<span class="sourceLineNo">571</span>   */<a name="line.571"></a>
+<span class="sourceLineNo">572</span>  private final int nonOpenRowCompare(byte[] k1, byte[] k2) {<a name="line.572"></a>
 <span class="sourceLineNo">573</span>    assert !isOpen(k1) &amp;&amp; !isOpen(k2);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    return cellComparator.compareRows(k1, k2, 0, k2.length);<a name="line.574"></a>
+<span class="sourceLineNo">574</span>    return Bytes.compareTo(k1, k2);<a name="line.574"></a>
 <span class="sourceLineNo">575</span>  }<a name="line.575"></a>
 <span class="sourceLineNo">576</span><a name="line.576"></a>
-<span class="sou

<TRUNCATED>

[35/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/regionserver/MobStoreScanner.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/MobStoreScanner.html b/devapidocs/org/apache/hadoop/hbase/regionserver/MobStoreScanner.html
index fb16c01..c1b75fa 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/MobStoreScanner.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/MobStoreScanner.html
@@ -245,7 +245,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanne
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreScanner</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#checkFlushed--">checkFlushed</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#checkScanOrder-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.CellComparator-">checkScanOrder</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#close--">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#enableLazySeekGlobally-boolean-">enableLazySeekGlobally</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getAllScannersForTesting--">getAllScannersForTesting</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getEstimatedNumberOfKvsScanned--">getEstimatedNumberOfKvsScanned</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getNextIndexedKey--">getNextIndexedKey</a>, <a href="../../..
 /../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getReadPoint--">getReadPoint</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getScannerOrder--">getScannerOrder</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#isScanUsePread--">isScanUsePread</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#next--">next</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#next-java.util.List-">next</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#peek--">peek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#reopenAfterFlush--">reopenAfterFlush</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#reseek-org.apache.hadoop.hbase.Cell-">reseek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#resetKVHeap-java.util.List-org.
 apache.hadoop.hbase.CellComparator-">resetKVHeap</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#seek-org.apache.hadoop.hbase.Cell-">seek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#seekAsDirection-org.apache.hadoop.hbase.Cell-">seekAsDirection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#seekScanners-java.util.List-org.apache.hadoop.hbase.Cell-boolean-boolean-">seekScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#seekToNextRow-org.apache.hadoop.hbase.Cell-">seekToNextRow</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#selectScannersFrom-java.util.List-">selectScannersFrom</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#shipped--">shipped</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#trySkipToNextColumn-org.apache.hado
 op.hbase.Cell-">trySkipToNextColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#trySkipToNextRow-org.apache.hadoop.hbase.Cell-">trySkipToNextRow</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#updateReaders-java.util.List-java.util.List-">updateReaders</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#checkFlushed--">checkFlushed</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#checkScanOrder-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.CellComparator-">checkScanOrder</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#close--">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#enableLazySeekGlobally-boolean-">enableLazySeekGlobally</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getAllScannersForTesting--">getAllScannersForTesting</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getEstimatedNumberOfKvsScanned--">getEstimatedNumberOfKvsScanned</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getNextIndexedKey--">getNextIndexedKey</a>, <a href="../../..
 /../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getReadPoint--">getReadPoint</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getScannerOrder--">getScannerOrder</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#isScanUsePread--">isScanUsePread</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#next--">next</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#next-java.util.List-">next</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#peek--">peek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#reopenAfterFlush--">reopenAfterFlush</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#reseek-org.apache.hadoop.hbase.Cell-">reseek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#resetKVHeap-java.util.List-org.
 apache.hadoop.hbase.CellComparator-">resetKVHeap</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#seek-org.apache.hadoop.hbase.Cell-">seek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#seekAsDirection-org.apache.hadoop.hbase.Cell-">seekAsDirection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#seekScanners-java.util.List-org.apache.hadoop.hbase.Cell-boolean-boolean-">seekScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#seekToNextRow-org.apache.hadoop.hbase.Cell-">seekToNextRow</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#selectScannersFrom-java.util.List-">selectScannersFrom</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#shipped--">shipped</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#trySkipToNextColumn-org.apache.hado
 op.hbase.Cell-">trySkipToNextColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#trySkipToNextRow-org.apache.hadoop.hbase.Cell-">trySkipToNextRow</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#trySwitchToStreamRead--">trySwitchToStreamRead</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#updateReaders-java.util.List-java.util.List-">updateReaders</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.NonReversedNonLazyKeyValueScanner">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/regionserver/ReversedMobStoreScanner.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/ReversedMobStoreScanner.html b/devapidocs/org/apache/hadoop/hbase/regionserver/ReversedMobStoreScanner.html
index d6fb11d..1a1d254 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/ReversedMobStoreScanner.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/ReversedMobStoreScanner.html
@@ -257,7 +257,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedSto
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreScanner</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#checkFlushed--">checkFlushed</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#close--">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#enableLazySeekGlobally-boolean-">enableLazySeekGlobally</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getAllScannersForTesting--">getAllScannersForTesting</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getEstimatedNumberOfKvsScanned--">getEstimatedNumberOfKvsScanned</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getNextIndexedKey--">getNextIndexedKey</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getReadPoint--">getReadPoint</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getScannerOrder--">getScannerOrder</a>
 , <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#isScanUsePread--">isScanUsePread</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#next--">next</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#next-java.util.List-">next</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#peek--">peek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#reopenAfterFlush--">reopenAfterFlush</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#selectScannersFrom-java.util.List-">selectScannersFrom</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#shipped--">shipped</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#trySkipToNextColumn-org.apache.hadoop.hbase.Cell-">trySkipToNextColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/regions
 erver/StoreScanner.html#trySkipToNextRow-org.apache.hadoop.hbase.Cell-">trySkipToNextRow</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#updateReaders-java.util.List-java.util.List-">updateReaders</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#checkFlushed--">checkFlushed</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#close--">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#enableLazySeekGlobally-boolean-">enableLazySeekGlobally</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getAllScannersForTesting--">getAllScannersForTesting</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getEstimatedNumberOfKvsScanned--">getEstimatedNumberOfKvsScanned</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getNextIndexedKey--">getNextIndexedKey</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getReadPoint--">getReadPoint</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getScannerOrder--">getScannerOrder</a>
 , <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#isScanUsePread--">isScanUsePread</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#next--">next</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#next-java.util.List-">next</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#peek--">peek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#reopenAfterFlush--">reopenAfterFlush</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#selectScannersFrom-java.util.List-">selectScannersFrom</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#shipped--">shipped</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#trySkipToNextColumn-org.apache.hadoop.hbase.Cell-">trySkipToNextColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/regions
 erver/StoreScanner.html#trySkipToNextRow-org.apache.hadoop.hbase.Cell-">trySkipToNextRow</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#trySwitchToStreamRead--">trySwitchToStreamRead</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#updateReaders-java.util.List-java.util.List-">updateReaders</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.NonReversedNonLazyKeyValueScanner">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html b/devapidocs/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html
index aa72676..3e0b045 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html
@@ -292,7 +292,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreScanner</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#checkFlushed--">checkFlushed</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#close--">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#enableLazySeekGlobally-boolean-">enableLazySeekGlobally</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getAllScannersForTesting--">getAllScannersForTesting</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getEstimatedNumberOfKvsScanned--">getEstimatedNumberOfKvsScanned</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getNextIndexedKey--">getNextIndexedKey</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getReadPoint--">getReadPoint</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getScannerOrder--">getScannerOrder</a>
 , <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#isScanUsePread--">isScanUsePread</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#next--">next</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#next-java.util.List-">next</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#next-java.util.List-org.apache.hadoop.hbase.regionserver.ScannerContext-">next</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#peek--">peek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#reopenAfterFlush--">reopenAfterFlush</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#selectScannersFrom-java.util.List-">selectScannersFrom</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#shipped--">shipped</a>, <a href="../../../../../org/apache/hadoop/hbase
 /regionserver/StoreScanner.html#trySkipToNextColumn-org.apache.hadoop.hbase.Cell-">trySkipToNextColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#trySkipToNextRow-org.apache.hadoop.hbase.Cell-">trySkipToNextRow</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#updateReaders-java.util.List-java.util.List-">updateReaders</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#checkFlushed--">checkFlushed</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#close--">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#enableLazySeekGlobally-boolean-">enableLazySeekGlobally</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getAllScannersForTesting--">getAllScannersForTesting</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getEstimatedNumberOfKvsScanned--">getEstimatedNumberOfKvsScanned</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getNextIndexedKey--">getNextIndexedKey</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getReadPoint--">getReadPoint</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#getScannerOrder--">getScannerOrder</a>
 , <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#isScanUsePread--">isScanUsePread</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#next--">next</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#next-java.util.List-">next</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#next-java.util.List-org.apache.hadoop.hbase.regionserver.ScannerContext-">next</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#peek--">peek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#reopenAfterFlush--">reopenAfterFlush</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#selectScannersFrom-java.util.List-">selectScannersFrom</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#shipped--">shipped</a>, <a href="../../../../../org/apache/hadoop/hbase
 /regionserver/StoreScanner.html#trySkipToNextColumn-org.apache.hadoop.hbase.Cell-">trySkipToNextColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#trySkipToNextRow-org.apache.hadoop.hbase.Cell-">trySkipToNextRow</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#trySwitchToStreamRead--">trySwitchToStreamRead</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#updateReaders-java.util.List-java.util.List-">updateReaders</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.NonReversedNonLazyKeyValueScanner">


[14/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html
new file mode 100644
index 0000000..cbc0fd4
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html
@@ -0,0 +1,382 @@
+<!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>TestStore.MyThread (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="TestStore.MyThread (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+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/TestStore.MyThread.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/TestStore.MyStore.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/TestStoreFileInfo.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/TestStore.MyThread.html" target="_top">Frames</a></li>
+<li><a href="TestStore.MyThread.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.java.lang.Thread">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.regionserver</div>
+<h2 title="Class TestStore.MyThread" class="title">Class TestStore.MyThread</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="http://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="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">java.lang.Thread</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.regionserver.TestStore.MyThread</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore</a></dd>
+</dl>
+<hr>
+<br>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1393">TestStore.MyThread</a>
+extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></pre>
+</li>
+</ul>
+</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.java.lang.Thread">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></h3>
+<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.State.html?is-external=true" title="class or interface in java.lang">Thread.State</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.UncaughtExceptionHandler.html?is-external=true" title="class or interface in java.lang">Thread.UncaughtExceptionHandler</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private org.apache.hadoop.hbase.regionserver.KeyValueHeap</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html#heap">heap</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private org.apache.hadoop.hbase.regionserver.StoreScanner</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html#scanner">scanner</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.java.lang.Thread">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></h3>
+<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#MAX_PRIORITY" title="class or interface in java.lang">MAX_PRIORITY</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#MIN_PRIORITY" title="class or interface in java.lang">MIN_PRIORITY</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#NORM_PRIORITY" title="class or interface in java.lang">NORM_PRIORITY</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html#MyThread-org.apache.hadoop.hbase.regionserver.StoreScanner-">MyThread</a></span>(org.apache.hadoop.hbase.regionserver.StoreScanner&nbsp;scanner)</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>org.apache.hadoop.hbase.regionserver.KeyValueHeap</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html#getHeap--">getHeap</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html#run--">run</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Thread">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></h3>
+<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#activeCount--" title="class or interface in java.lang">activeCount</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#checkAccess--" title="class or interface in java.lang">checkAccess</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#countStackFrames--" title="class or interface in java.lang">countStackFrames</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#currentThread--" title="class or interface in java.lang">currentThread</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#destroy--" title="class or interface in java.lang">destroy</a>, <a href="http://docs.oracle.com
 /javase/8/docs/api/java/lang/Thread.html?is-external=true#dumpStack--" title="class or interface in java.lang">dumpStack</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#enumerate-java.lang.Thread:A-" title="class or interface in java.lang">enumerate</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getAllStackTraces--" title="class or interface in java.lang">getAllStackTraces</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getContextClassLoader--" title="class or interface in java.lang">getContextClassLoader</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getDefaultUncaughtExceptionHandler--" title="class or interface in java.lang">getDefaultUncaughtExceptionHandler</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getId--" title="class or interface in java.lan
 g">getId</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getName--" title="class or interface in java.lang">getName</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getPriority--" title="class or interface in java.lang">getPriority</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getStackTrace--" title="class or interface in java.lang">getStackTrace</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getState--" title="class or interface in java.lang">getState</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getThreadGroup--" title="class or interface in java.lang">getThreadGroup</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getUncaughtExceptionHandler--" title="class or interface in java.lang">getUncaughtExceptionHa
 ndler</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#holdsLock-java.lang.Object-" title="class or interface in java.lang">holdsLock</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#interrupt--" title="class or interface in java.lang">interrupt</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#interrupted--" title="class or interface in java.lang">interrupted</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#isAlive--" title="class or interface in java.lang">isAlive</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#isDaemon--" title="class or interface in java.lang">isDaemon</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#isInterrupted--" title="class or interface in java.lang">isInterrupted</a>, <a href="http://docs.o
 racle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#join--" title="class or interface in java.lang">join</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#join-long-" title="class or interface in java.lang">join</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#join-long-int-" title="class or interface in java.lang">join</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#resume--" title="class or interface in java.lang">resume</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#setContextClassLoader-java.lang.ClassLoader-" title="class or interface in java.lang">setContextClassLoader</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#setDaemon-boolean-" title="class or interface in java.lang">setDaemon</a>, <a href="http://docs.oracle.com/javase/8/docs/api
 /java/lang/Thread.html?is-external=true#setDefaultUncaughtExceptionHandler-java.lang.Thread.UncaughtExceptionHandler-" title="class or interface in java.lang">setDefaultUncaughtExceptionHandler</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#setName-java.lang.String-" title="class or interface in java.lang">setName</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#setPriority-int-" title="class or interface in java.lang">setPriority</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#setUncaughtExceptionHandler-java.lang.Thread.UncaughtExceptionHandler-" title="class or interface in java.lang">setUncaughtExceptionHandler</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#sleep-long-" title="class or interface in java.lang">sleep</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-ext
 ernal=true#sleep-long-int-" title="class or interface in java.lang">sleep</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#start--" title="class or interface in java.lang">start</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#stop--" title="class or interface in java.lang">stop</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#stop-java.lang.Throwable-" title="class or interface in java.lang">stop</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#suspend--" title="class or interface in java.lang">suspend</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#yield--" title="class or interface in java.lang">yield</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="http://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="http://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="http://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="http://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="http://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="http://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="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/j
 ava/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://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="http://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="scanner">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>scanner</h4>
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.StoreScanner <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html#line.1394">scanner</a></pre>
+</li>
+</ul>
+<a name="heap">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>heap</h4>
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.KeyValueHeap <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html#line.1395">heap</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="MyThread-org.apache.hadoop.hbase.regionserver.StoreScanner-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>MyThread</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html#line.1397">MyThread</a>(org.apache.hadoop.hbase.regionserver.StoreScanner&nbsp;scanner)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="getHeap--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getHeap</h4>
+<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.KeyValueHeap&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html#line.1401">getHeap</a>()</pre>
+</li>
+</ul>
+<a name="run--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>run</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html#line.1405">run</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#run--" title="class or interface in java.lang">run</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></code></dd>
+</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/TestStore.MyThread.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/TestStore.MyStore.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/TestStoreFileInfo.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/TestStore.MyThread.html" target="_top">Frames</a></li>
+<li><a href="TestStore.MyThread.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.java.lang.Thread">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;2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>


[05/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyMemStoreCompactor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyMemStoreCompactor.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyMemStoreCompactor.html
index a1d9f98..9ce2441 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyMemStoreCompactor.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyMemStoreCompactor.html
@@ -28,1446 +28,1556 @@
 <span class="sourceLineNo">020</span>package org.apache.hadoop.hbase.regionserver;<a name="line.20"></a>
 <span class="sourceLineNo">021</span><a name="line.21"></a>
 <span class="sourceLineNo">022</span>import static org.junit.Assert.assertEquals;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.junit.Assert.assertNull;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.junit.Assert.assertTrue;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import static org.mockito.Matchers.any;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import static org.mockito.Mockito.spy;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import static org.mockito.Mockito.times;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import static org.mockito.Mockito.verify;<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.io.IOException;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.lang.ref.SoftReference;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.security.PrivilegedExceptionAction;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.ArrayList;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.Arrays;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.Collection;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.Collections;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.Iterator;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.List;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.ListIterator;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import java.util.NavigableSet;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import java.util.TreeSet;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import java.util.concurrent.ConcurrentSkipListSet;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.concurrent.CountDownLatch;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import java.util.concurrent.ExecutorService;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import java.util.concurrent.Executors;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import java.util.concurrent.TimeUnit;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.util.function.Consumer;<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.commons.logging.Log;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.commons.logging.LogFactory;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.fs.FileStatus;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FileSystem;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FilterFileSystem;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.LocalFileSystem;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.Path;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.permission.FsPermission;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.Cell;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HConstants;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.TableName;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Get;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.security.User;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.util.Progressable;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.junit.After;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.junit.Assert;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.junit.Before;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.junit.Rule;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.junit.Test;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.junit.experimental.categories.Category;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.junit.rules.TestName;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.mockito.Mockito;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>import com.google.common.collect.Lists;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>/**<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * Test class for the Store<a name="line.110"></a>
-<span class="sourceLineNo">111</span> */<a name="line.111"></a>
-<span class="sourceLineNo">112</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.112"></a>
-<span class="sourceLineNo">113</span>public class TestStore {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private static final Log LOG = LogFactory.getLog(TestStore.class);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  @Rule public TestName name = new TestName();<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  HStore store;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  byte [] table = Bytes.toBytes("table");<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  byte [] family = Bytes.toBytes("family");<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  byte [] row = Bytes.toBytes("row");<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  byte [] row2 = Bytes.toBytes("row2");<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  byte [] qf1 = Bytes.toBytes("qf1");<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  byte [] qf2 = Bytes.toBytes("qf2");<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  byte [] qf3 = Bytes.toBytes("qf3");<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  byte [] qf4 = Bytes.toBytes("qf4");<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  byte [] qf5 = Bytes.toBytes("qf5");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  byte [] qf6 = Bytes.toBytes("qf6");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  NavigableSet&lt;byte[]&gt; qualifiers = new ConcurrentSkipListSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  List&lt;Cell&gt; expected = new ArrayList&lt;&gt;();<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  List&lt;Cell&gt; result = new ArrayList&lt;&gt;();<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  long id = System.currentTimeMillis();<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  Get get = new Get(row);<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private final String DIR = TEST_UTIL.getDataTestDir("TestStore").toString();<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertFalse;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.junit.Assert.assertNull;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.junit.Assert.assertTrue;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import static org.mockito.Matchers.any;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import static org.mockito.Mockito.spy;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import static org.mockito.Mockito.times;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import static org.mockito.Mockito.verify;<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.io.IOException;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.lang.ref.SoftReference;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.security.PrivilegedExceptionAction;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.ArrayList;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.Arrays;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Collection;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.Collections;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.Iterator;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.List;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import java.util.ListIterator;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import java.util.NavigableSet;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import java.util.TreeSet;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import java.util.concurrent.ConcurrentSkipListSet;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.concurrent.CountDownLatch;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.ExecutorService;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import java.util.concurrent.Executors;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import java.util.concurrent.TimeUnit;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import java.util.function.Consumer;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.commons.logging.Log;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.commons.logging.LogFactory;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.conf.Configuration;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FileStatus;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.FileSystem;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.FilterFileSystem;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.LocalFileSystem;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.Path;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.fs.permission.FsPermission;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.Cell;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HConstants;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.TableName;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Get;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.security.User;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.util.Progressable;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.junit.After;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.junit.Assert;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.junit.Before;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.junit.Rule;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.junit.Test;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.junit.experimental.categories.Category;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.junit.rules.TestName;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.mockito.Mockito;<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>import com.google.common.collect.Lists;<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> * Test class for the Store<a name="line.111"></a>
+<span class="sourceLineNo">112</span> */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.113"></a>
+<span class="sourceLineNo">114</span>public class TestStore {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static final Log LOG = LogFactory.getLog(TestStore.class);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  @Rule public TestName name = new TestName();<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  HStore store;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  byte [] table = Bytes.toBytes("table");<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  byte [] family = Bytes.toBytes("family");<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>  byte [] row = Bytes.toBytes("row");<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  byte [] row2 = Bytes.toBytes("row2");<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  byte [] qf1 = Bytes.toBytes("qf1");<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  byte [] qf2 = Bytes.toBytes("qf2");<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  byte [] qf3 = Bytes.toBytes("qf3");<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  byte [] qf4 = Bytes.toBytes("qf4");<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  byte [] qf5 = Bytes.toBytes("qf5");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  byte [] qf6 = Bytes.toBytes("qf6");<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  NavigableSet&lt;byte[]&gt; qualifiers = new ConcurrentSkipListSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  List&lt;Cell&gt; expected = new ArrayList&lt;&gt;();<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  List&lt;Cell&gt; result = new ArrayList&lt;&gt;();<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  long id = System.currentTimeMillis();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  Get get = new Get(row);<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private final String DIR = TEST_UTIL.getDataTestDir("TestStore").toString();<a name="line.140"></a>
 <span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  /**<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * Setup<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * @throws IOException<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  @Before<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  public void setUp() throws IOException {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    qualifiers.add(qf1);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    qualifiers.add(qf3);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    qualifiers.add(qf5);<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>    Iterator&lt;byte[]&gt; iter = qualifiers.iterator();<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    while(iter.hasNext()){<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      byte [] next = iter.next();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      expected.add(new KeyValue(row, family, next, 1, (byte[])null));<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      get.addColumn(family, next);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>  private void init(String methodName) throws IOException {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    init(methodName, TEST_UTIL.getConfiguration());<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  private void init(String methodName, Configuration conf)<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  throws IOException {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    // some of the tests write 4 versions and then flush<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    // (with HBASE-4241, lower versions are collected on flush)<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    hcd.setMaxVersions(4);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    init(methodName, conf, hcd);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  private void init(String methodName, Configuration conf,<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      HColumnDescriptor hcd) throws IOException {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(table));<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    init(methodName, conf, htd, hcd);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  }<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      HColumnDescriptor hcd) throws IOException {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    return init(methodName, conf, htd, hcd, null);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  @SuppressWarnings("deprecation")<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      HColumnDescriptor hcd, MyScannerHook hook) throws IOException {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    //Setting up a Store<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    Path basedir = new Path(DIR+methodName);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    Path tableDir = FSUtils.getTableDir(basedir, htd.getTableName());<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    final Path logdir = new Path(basedir, AbstractFSWALProvider.getWALDirectoryName(methodName));<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>    FileSystem fs = FileSystem.get(conf);<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>    fs.delete(logdir, true);<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>    if (htd.hasFamily(hcd.getName())) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      htd.modifyFamily(hcd);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    } else {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      htd.addFamily(hcd);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false, MemStoreLABImpl.CHUNK_SIZE_DEFAULT, 1, 0, null);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    final Configuration walConf = new Configuration(conf);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    FSUtils.setRootDir(walConf, basedir);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    final WALFactory wals = new WALFactory(walConf, null, methodName);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    HRegion region = new HRegion(tableDir, wals.getWAL(info.getEncodedNameAsBytes(),<a name="line.206"></a>
-<span class="sourceLineNo">207</span>            info.getTable().getNamespace()), fs, conf, info, htd, null);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    if (hook == null) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      store = new HStore(region, hcd, conf);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    } else {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      store = new MyStore(region, hcd, conf, hook);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    return store;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  }<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  /**<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * Test we do not lose data if we fail a flush and then close.<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * Part of HBase-10466<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * @throws Exception<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   */<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  @Test<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  public void testFlushSizeAccounting() throws Exception {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    LOG.info("Setting up a faulty file system that cannot write in " +<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      this.name.getMethodName());<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    // Only retry once.<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    conf.setInt("hbase.hstore.flush.retries.number", 1);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    User user = User.createUserForTesting(conf, this.name.getMethodName(),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      new String[]{"foo"});<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // Inject our faulty LocalFileSystem<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    conf.setClass("fs.file.impl", FaultyFileSystem.class, FileSystem.class);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    user.runAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      public Object run() throws Exception {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        // Make sure it worked (above is sensitive to caching details in hadoop core)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        FileSystem fs = FileSystem.get(conf);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        Assert.assertEquals(FaultyFileSystem.class, fs.getClass());<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        FaultyFileSystem ffs = (FaultyFileSystem)fs;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>        // Initialize region<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        init(name.getMethodName(), conf);<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span>        MemstoreSize size = store.memstore.getFlushableSize();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        Assert.assertEquals(0, size.getDataSize());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        LOG.info("Adding some data");<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        MemstoreSize kvSize = new MemstoreSize();<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        store.add(new KeyValue(row, family, qf1, 1, (byte[])null), kvSize);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        size = store.memstore.getFlushableSize();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        Assert.assertEquals(kvSize, size);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        // Flush.  Bug #1 from HBASE-10466.  Make sure size calculation on failed flush is right.<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        try {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          LOG.info("Flushing");<a name="line.252"></a>
-<span class="sourceLineNo">253</span>          flushStore(store, id++);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          Assert.fail("Didn't bubble up IOE!");<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        } catch (IOException ioe) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>          Assert.assertTrue(ioe.getMessage().contains("Fault injected"));<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        size = store.memstore.getFlushableSize();<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        Assert.assertEquals(kvSize, size);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        MemstoreSize kvSize2 = new MemstoreSize();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        store.add(new KeyValue(row, family, qf2, 2, (byte[])null), kvSize2);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        // Even though we add a new kv, we expect the flushable size to be 'same' since we have<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        // not yet cleared the snapshot -- the above flush failed.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        Assert.assertEquals(kvSize, size);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        ffs.fault.set(false);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        flushStore(store, id++);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        size = store.memstore.getFlushableSize();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        // Size should be the foreground kv size.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        Assert.assertEquals(kvSize2, size);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        flushStore(store, id++);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        size = store.memstore.getFlushableSize();<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        assertEquals(0, size.getDataSize());<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        assertEquals(0, size.getHeapSize());<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        return null;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    });<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  }<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  /**<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   * Verify that compression and data block encoding are respected by the<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * Store.createWriterInTmp() method, used on store flush.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   */<a name="line.282"></a>
-<span class="sourceLineNo">283</span>  @Test<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  public void testCreateWriter() throws Exception {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    Configuration conf = HBaseConfiguration.create();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    FileSystem fs = FileSystem.get(conf);<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    hcd.setCompressionType(Compression.Algorithm.GZ);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    hcd.setDataBlockEncoding(DataBlockEncoding.DIFF);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    init(name.getMethodName(), conf, hcd);<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>    // Test createWriterInTmp()<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    StoreFileWriter writer = store.createWriterInTmp(4, hcd.getCompressionType(), false, true, false);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    Path path = writer.getPath();<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    writer.append(new KeyValue(row, family, qf1, Bytes.toBytes(1)));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    writer.append(new KeyValue(row, family, qf2, Bytes.toBytes(2)));<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    writer.append(new KeyValue(row2, family, qf1, Bytes.toBytes(3)));<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    writer.append(new KeyValue(row2, family, qf2, Bytes.toBytes(4)));<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    writer.close();<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>    // Verify that compression and encoding settings are respected<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    HFile.Reader reader = HFile.createReader(fs, path, new CacheConfig(conf), true, conf);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    Assert.assertEquals(hcd.getCompressionType(), reader.getCompressionAlgorithm());<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    Assert.assertEquals(hcd.getDataBlockEncoding(), reader.getDataBlockEncoding());<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    reader.close();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  /**<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * Setup<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * @throws IOException<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   */<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  @Before<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  public void setUp() throws IOException {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    qualifiers.add(qf1);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    qualifiers.add(qf3);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    qualifiers.add(qf5);<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    Iterator&lt;byte[]&gt; iter = qualifiers.iterator();<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    while(iter.hasNext()){<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      byte [] next = iter.next();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      expected.add(new KeyValue(row, family, next, 1, (byte[])null));<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      get.addColumn(family, next);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>  private void init(String methodName) throws IOException {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    init(methodName, TEST_UTIL.getConfiguration());<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  private Store init(String methodName, Configuration conf)<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  throws IOException {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    // some of the tests write 4 versions and then flush<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    // (with HBASE-4241, lower versions are collected on flush)<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    hcd.setMaxVersions(4);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    return init(methodName, conf, hcd);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>  private Store init(String methodName, Configuration conf,<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      HColumnDescriptor hcd) throws IOException {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(table));<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    return init(methodName, conf, htd, hcd);<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>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      HColumnDescriptor hcd) throws IOException {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    return init(methodName, conf, htd, hcd, null);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @SuppressWarnings("deprecation")<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      HColumnDescriptor hcd, MyScannerHook hook) throws IOException {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    return init(methodName, conf, htd, hcd, hook, false);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  @SuppressWarnings("deprecation")<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      HColumnDescriptor hcd, MyScannerHook hook, boolean switchToPread) throws IOException {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    //Setting up a Store<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    Path basedir = new Path(DIR+methodName);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    Path tableDir = FSUtils.getTableDir(basedir, htd.getTableName());<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    final Path logdir = new Path(basedir, AbstractFSWALProvider.getWALDirectoryName(methodName));<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>    FileSystem fs = FileSystem.get(conf);<a name="line.198"></a>
+<span class="sourceLineNo">199</span><a name="line.199"></a>
+<span class="sourceLineNo">200</span>    fs.delete(logdir, true);<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    if (htd.hasFamily(hcd.getName())) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      htd.modifyFamily(hcd);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    } else {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      htd.addFamily(hcd);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false,<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      MemStoreLABImpl.CHUNK_SIZE_DEFAULT, 1, 0, null);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    final Configuration walConf = new Configuration(conf);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    FSUtils.setRootDir(walConf, basedir);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    final WALFactory wals = new WALFactory(walConf, null, methodName);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    HRegion region = new HRegion(tableDir, wals.getWAL(info.getEncodedNameAsBytes(),<a name="line.213"></a>
+<span class="sourceLineNo">214</span>            info.getTable().getNamespace()), fs, conf, info, htd, null);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    if (hook == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      store = new HStore(region, hcd, conf);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    } else {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      store = new MyStore(region, hcd, conf, hook, switchToPread);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    return store;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  /**<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * Test we do not lose data if we fail a flush and then close.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * Part of HBase-10466<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   * @throws Exception<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   */<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  @Test<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  public void testFlushSizeAccounting() throws Exception {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    LOG.info("Setting up a faulty file system that cannot write in " +<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      this.name.getMethodName());<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    // Only retry once.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    conf.setInt("hbase.hstore.flush.retries.number", 1);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    User user = User.createUserForTesting(conf, this.name.getMethodName(),<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      new String[]{"foo"});<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    // Inject our faulty LocalFileSystem<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    conf.setClass("fs.file.impl", FaultyFileSystem.class, FileSystem.class);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    user.runAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      @Override<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      public Object run() throws Exception {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        // Make sure it worked (above is sensitive to caching details in hadoop core)<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        FileSystem fs = FileSystem.get(conf);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        Assert.assertEquals(FaultyFileSystem.class, fs.getClass());<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        FaultyFileSystem ffs = (FaultyFileSystem)fs;<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>        // Initialize region<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        init(name.getMethodName(), conf);<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>        MemstoreSize size = store.memstore.getFlushableSize();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        Assert.assertEquals(0, size.getDataSize());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        LOG.info("Adding some data");<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        MemstoreSize kvSize = new MemstoreSize();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        store.add(new KeyValue(row, family, qf1, 1, (byte[])null), kvSize);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        size = store.memstore.getFlushableSize();<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        Assert.assertEquals(kvSize, size);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        // Flush.  Bug #1 from HBASE-10466.  Make sure size calculation on failed flush is right.<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        try {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          LOG.info("Flushing");<a name="line.259"></a>
+<span class="sourceLineNo">260</span>          flushStore(store, id++);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>          Assert.fail("Didn't bubble up IOE!");<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        } catch (IOException ioe) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          Assert.assertTrue(ioe.getMessage().contains("Fault injected"));<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        size = store.memstore.getFlushableSize();<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        Assert.assertEquals(kvSize, size);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        MemstoreSize kvSize2 = new MemstoreSize();<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        store.add(new KeyValue(row, family, qf2, 2, (byte[])null), kvSize2);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        // Even though we add a new kv, we expect the flushable size to be 'same' since we have<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        // not yet cleared the snapshot -- the above flush failed.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        Assert.assertEquals(kvSize, size);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        ffs.fault.set(false);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        flushStore(store, id++);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        size = store.memstore.getFlushableSize();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        // Size should be the foreground kv size.<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        Assert.assertEquals(kvSize2, size);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        flushStore(store, id++);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        size = store.memstore.getFlushableSize();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        assertEquals(0, size.getDataSize());<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        assertEquals(0, size.getHeapSize());<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        return null;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    });<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  }<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>  /**<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * Verify that compression and data block encoding are respected by the<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * Store.createWriterInTmp() method, used on store flush.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   */<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  @Test<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  public void testCreateWriter() throws Exception {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    Configuration conf = HBaseConfiguration.create();<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    FileSystem fs = FileSystem.get(conf);<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    hcd.setCompressionType(Compression.Algorithm.GZ);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    hcd.setDataBlockEncoding(DataBlockEncoding.DIFF);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    init(name.getMethodName(), conf, hcd);<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // Test createWriterInTmp()<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    StoreFileWriter writer = store.createWriterInTmp(4, hcd.getCompressionType(), false, true, false);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    Path path = writer.getPath();<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    writer.append(new KeyValue(row, family, qf1, Bytes.toBytes(1)));<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    writer.append(new KeyValue(row, family, qf2, Bytes.toBytes(2)));<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    writer.append(new KeyValue(row2, family, qf1, Bytes.toBytes(3)));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    writer.append(new KeyValue(row2, family, qf2, Bytes.toBytes(4)));<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    writer.close();<a name="line.307"></a>
 <span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  @Test<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  public void testDeleteExpiredStoreFiles() throws Exception {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    testDeleteExpiredStoreFiles(0);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    testDeleteExpiredStoreFiles(1);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  /*<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * @param minVersions the MIN_VERSIONS for the column family<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   */<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public void testDeleteExpiredStoreFiles(int minVersions) throws Exception {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    int storeFileNum = 4;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    int ttl = 4;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    IncrementingEnvironmentEdge edge = new IncrementingEnvironmentEdge();<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    EnvironmentEdgeManagerTestHelper.injectEdge(edge);<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    Configuration conf = HBaseConfiguration.create();<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    // Enable the expired store file deletion<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    conf.setBoolean("hbase.store.delete.expired.storefile", true);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    // Set the compaction threshold higher to avoid normal compactions.<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY, 5);<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    hcd.setMinVersions(minVersions);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    hcd.setTimeToLive(ttl);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    init(name.getMethodName() + "-" + minVersions, conf, hcd);<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>    long storeTtl = this.store.getScanInfo().getTtl();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    long sleepTime = storeTtl / storeFileNum;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    long timeStamp;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    // There are 4 store files and the max time stamp difference among these<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    // store files will be (this.store.ttl / storeFileNum)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      LOG.info("Adding some data for the store file #" + i);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      timeStamp = EnvironmentEdgeManager.currentTime();<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      this.store.add(new KeyValue(row, family, qf1, timeStamp, (byte[]) null), null);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      this.store.add(new KeyValue(row, family, qf2, timeStamp, (byte[]) null), null);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      this.store.add(new KeyValue(row, family, qf3, timeStamp, (byte[]) null), null);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      flush(i);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      edge.incrementTime(sleepTime);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    }<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>    // Verify the total number of store files<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    Assert.assertEquals(storeFileNum, this.store.getStorefiles().size());<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>     // Each call will find one expired store file and delete it before compaction happens.<a name="line.353"></a>
-<span class="sourceLineNo">354</span>     // There will be no compaction due to threshold above. Last file will not be replaced.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    for (int i = 1; i &lt;= storeFileNum - 1; i++) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      // verify the expired store file.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      assertNull(this.store.requestCompaction());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      // Ensure i files are gone.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      if (minVersions == 0) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        assertEquals(storeFileNum - i, sfs.size());<a name="line.361"></a>
-<span class="sourceLineNo">362</span>        // Ensure only non-expired files remain.<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        for (StoreFile sf : sfs) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>          assertTrue(sf.getReader().getMaxTimestamp() &gt;= (edge.currentTime() - storeTtl));<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      } else {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        assertEquals(storeFileNum, sfs.size());<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      // Let the next store file expired.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      edge.incrementTime(sleepTime);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    }<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    assertNull(this.store.requestCompaction());<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>    Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    // Assert the last expired file is not removed.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    if (minVersions == 0) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      assertEquals(1, sfs.size());<a name="line.377"></a>
+<span class="sourceLineNo">309</span>    // Verify that compression and encoding settings are respected<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    HFile.Reader reader = HFile.createReader(fs, path, new CacheConfig(conf), true, conf);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    Assert.assertEquals(hcd.getCompressionType(), reader.getCompressionAlgorithm());<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    Assert.assertEquals(hcd.getDataBlockEncoding(), reader.getDataBlockEncoding());<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    reader.close();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  @Test<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public void testDeleteExpiredStoreFiles() throws Exception {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    testDeleteExpiredStoreFiles(0);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    testDeleteExpiredStoreFiles(1);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  /*<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   * @param minVersions the MIN_VERSIONS for the column family<a name="line.323"></a>
+<span class="sourceLineNo">324</span>   */<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public void testDeleteExpiredStoreFiles(int minVersions) throws Exception {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    int storeFileNum = 4;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    int ttl = 4;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    IncrementingEnvironmentEdge edge = new IncrementingEnvironmentEdge();<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    EnvironmentEdgeManagerTestHelper.injectEdge(edge);<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>    Configuration conf = HBaseConfiguration.create();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    // Enable the expired store file deletion<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    conf.setBoolean("hbase.store.delete.expired.storefile", true);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    // Set the compaction threshold higher to avoid normal compactions.<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY, 5);<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    hcd.setMinVersions(minVersions);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    hcd.setTimeToLive(ttl);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    init(name.getMethodName() + "-" + minVersions, conf, hcd);<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    long storeTtl = this.store.getScanInfo().getTtl();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    long sleepTime = storeTtl / storeFileNum;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    long timeStamp;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    // There are 4 store files and the max time stamp difference among these<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // store files will be (this.store.ttl / storeFileNum)<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      LOG.info("Adding some data for the store file #" + i);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      timeStamp = EnvironmentEdgeManager.currentTime();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      this.store.add(new KeyValue(row, family, qf1, timeStamp, (byte[]) null), null);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      this.store.add(new KeyValue(row, family, qf2, timeStamp, (byte[]) null), null);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      this.store.add(new KeyValue(row, family, qf3, timeStamp, (byte[]) null), null);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      flush(i);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      edge.incrementTime(sleepTime);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>    // Verify the total number of store files<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    Assert.assertEquals(storeFileNum, this.store.getStorefiles().size());<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>     // Each call will find one expired store file and delete it before compaction happens.<a name="line.360"></a>
+<span class="sourceLineNo">361</span>     // There will be no compaction due to threshold above. Last file will not be replaced.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    for (int i = 1; i &lt;= storeFileNum - 1; i++) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      // verify the expired store file.<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      assertNull(this.store.requestCompaction());<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      // Ensure i files are gone.<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      if (minVersions == 0) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        assertEquals(storeFileNum - i, sfs.size());<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        // Ensure only non-expired files remain.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        for (StoreFile sf : sfs) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>          assertTrue(sf.getReader().getMaxTimestamp() &gt;= (edge.currentTime() - storeTtl));<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        }<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      } else {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        assertEquals(storeFileNum, sfs.size());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      // Let the next store file expired.<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      edge.incrementTime(sleepTime);<a name="line.377"></a>
 <span class="sourceLineNo">378</span>    }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    long ts = sfs.iterator().next().getReader().getMaxTimestamp();<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    assertTrue(ts &lt; (edge.currentTime() - storeTtl));<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    for (StoreFile sf : sfs) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      sf.closeReader(true);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  @Test<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public void testLowestModificationTime() throws Exception {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    Configuration conf = HBaseConfiguration.create();<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    FileSystem fs = FileSystem.get(conf);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    // Initialize region<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    init(name.getMethodName(), conf);<a name="line.392"></a>
+<span class="sourceLineNo">379</span>    assertNull(this.store.requestCompaction());<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>    Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    // Assert the last expired file is not removed.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    if (minVersions == 0) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      assertEquals(1, sfs.size());<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    }<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    long ts = sfs.iterator().next().getReader().getMaxTimestamp();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    assertTrue(ts &lt; (edge.currentTime() - storeTtl));<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>    for (StoreFile sf : sfs) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      sf.closeReader(true);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    }<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  }<a name="line.392"></a>
 <span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    int storeFileNum = 4;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      LOG.info("Adding some data for the store file #"+i);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      this.store.add(new KeyValue(row, family, qf1, i, (byte[])null), null);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      this.store.add(new KeyValue(row, family, qf2, i, (byte[])null), null);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      this.store.add(new KeyValue(row, family, qf3, i, (byte[])null), null);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      flush(i);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    // after flush; check the lowest time stamp<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    long lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    long lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    Assert.assertEquals(lowestTimeStampFromManager,lowestTimeStampFromFS);<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>    // after compact; check the lowest time stamp<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    store.compact(store.requestCompaction(), NoLimitThroughputController.INSTANCE, null);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    Assert.assertEquals(lowestTimeStampFromManager, lowestTimeStampFromFS);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
+<span class="sourceLineNo">394</span>  @Test<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  public void testLowestModificationTime() throws Exception {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    Configuration conf = HBaseConfiguration.create();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    FileSystem fs = FileSystem.get(conf);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Initialize region<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    init(name.getMethodName(), conf);<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    int storeFileNum = 4;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      LOG.info("Adding some data for the store file #"+i);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      this.store.add(new KeyValue(row, family, qf1, i, (byte[])null), null);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      this.store.add(new KeyValue(row, family, qf2, i, (byte[])null), null);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      this.store.add(new KeyValue(row, family, qf3, i, (byte[])null), null);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      flush(i);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    // after flush; check the lowest time stamp<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    long lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    long lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    Assert.assertEquals(lowestTimeStampFromManager,lowestTimeStampFromFS);<a name="line.412"></a>
 <span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  private static long getLowestTimeStampFromFS(FileSystem fs,<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      final Collection&lt;StoreFile&gt; candidates) throws IOException {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    long minTs = Long.MAX_VALUE;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    if (candidates.isEmpty()) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      return minTs;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    }<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    Path[] p = new Path[candidates.size()];<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    int i = 0;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    for (StoreFile sf : candidates) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      p[i] = sf.getPath();<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      ++i;<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    }<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>    FileStatus[] stats = fs.listStatus(p);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    if (stats == null || stats.length == 0) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      return minTs;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    for (FileStatus s : stats) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      minTs = Math.min(minTs, s.getModificationTime());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    return minTs;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  // Get tests<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>  private static final int BLOCKSIZE_SMALL = 8192;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Test for hbase-1686.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @throws IOException<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  @Test<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  public void testEmptyStoreFile() throws IOException {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    init(this.name.getMethodName());<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    // Write a store file.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    flush(1);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    // Now put in place an empty store file.  Its a little tricky.  Have to<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // do manually with hacked in sequence id.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    StoreFile f = this.store.getStorefiles().iterator().next();<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    Path storedir = f.getPath().getParent();<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    long seqid = f.getMaxSequenceId();<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    Configuration c = HBaseConfiguration.create();<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    FileSystem fs = FileSystem.get(c);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    HFileContext meta = new HFileContextBuilder().withBlockSize(BLOCKSIZE_SMALL).build();<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    StoreFileWriter w = new StoreFileWriter.Builder(c, new CacheConfig(c),<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        fs)<a name="line.462"></a>
-<span class="sourceLineNo">463</span>            .withOutputDir(storedir)<a name="line.463"></a>
-<span class="sourceLineNo">464</span>            .withFileContext(meta)<a name="line.464"></a>
-<span class="sourceLineNo">465</span>            .build();<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    w.appendMetadata(seqid + 1, false);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    w.close();<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    this.store.close();<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    // Reopen it... should pick up two files<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    this.store = new HStore(this.store.getHRegion(), this.store.getFamily(), c);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    Assert.assertEquals(2, this.store.getStorefilesCount());<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        get.getRow(),<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        qualifiers);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    Assert.assertEquals(1, result.size());<a name="line.476"></a>
-<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>  /**<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * Getting data from memstore only<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @throws IOException<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   */<a name="line.482"></a>
-<span class="sourceLineNo">483</span>  @Test<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  public void testGet_FromMemStoreOnly() throws IOException {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    init(this.name.getMethodName());<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>    //Put data in memstore<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    this.store.add(new KeyValue(row, family, qf3, 1, (byte[])null), null);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    this.store.add(new KeyValue(row, family, qf4, 1, (byte[])null), null);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    this.store.add(new KeyValue(row, family, qf5, 1, (byte[])null), null);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    this.store.add(new KeyValue(row, family, qf6, 1, (byte[])null), null);<a name="line.493"></a>
-<span class="sourceLineNo">494</span><a name="line.494"></a>
-<span class="sourceLineNo">495</span>    //Get<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        get.getRow(), qualifiers);<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    //Compare<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    assertCheck();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  }<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>   * Getting data from files only<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @throws IOException<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   */<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  @Test<a name="line.507"></a>
-<span class="sourceLineNo">508</span>  public void testGet_FromFilesOnly() throws IOException {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    init(this.name.getMethodName());<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>    //Put data in memstore<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    //flush<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    flush(1);<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>    //Add more data<a name="l

<TRUNCATED>

[23/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.html
index b09e20b..3c088c8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.html
@@ -155,937 +155,942 @@
 <span class="sourceLineNo">147</span>  }<a name="line.147"></a>
 <span class="sourceLineNo">148</span><a name="line.148"></a>
 <span class="sourceLineNo">149</span>  @Override<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  public void insertNewFiles(Collection&lt;StoreFile&gt; sfs) throws IOException {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(true);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    // Passing null does not cause NPE??<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    cmc.mergeResults(null, sfs);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    debugDumpState("Added new files");<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  }<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  @Override<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  public ImmutableCollection&lt;StoreFile&gt; clearFiles() {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    ImmutableCollection&lt;StoreFile&gt; result = state.allFilesCached;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    this.state = new State();<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    this.fileStarts.clear();<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    this.fileEnds.clear();<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    return result;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  }<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  @Override<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  public ImmutableCollection&lt;StoreFile&gt; clearCompactedFiles() {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    ImmutableCollection&lt;StoreFile&gt; result = state.allCompactedFilesCached;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    this.state = new State();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    return result;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  @Override<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public int getStorefileCount() {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    return state.allFilesCached.size();<a name="line.175"></a>
+<span class="sourceLineNo">150</span>  public int getCompactedFilesCount() {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    return state.allCompactedFilesCached.size();<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
+<span class="sourceLineNo">153</span><a name="line.153"></a>
+<span class="sourceLineNo">154</span>  @Override<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  public void insertNewFiles(Collection&lt;StoreFile&gt; sfs) throws IOException {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(true);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    // Passing null does not cause NPE??<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    cmc.mergeResults(null, sfs);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    debugDumpState("Added new files");<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 ImmutableCollection&lt;StoreFile&gt; clearFiles() {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    ImmutableCollection&lt;StoreFile&gt; result = state.allFilesCached;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    this.state = new State();<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    this.fileStarts.clear();<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    this.fileEnds.clear();<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    return result;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>  }<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>  @Override<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public ImmutableCollection&lt;StoreFile&gt; clearCompactedFiles() {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    ImmutableCollection&lt;StoreFile&gt; result = state.allCompactedFilesCached;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    this.state = new State();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    return result;<a name="line.175"></a>
 <span class="sourceLineNo">176</span>  }<a name="line.176"></a>
 <span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  /** See {@link StoreFileManager#getCandidateFilesForRowKeyBefore(KeyValue)}<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   * for details on this methods. */<a name="line.179"></a>
-<span class="sourceLineNo">180</span>  @Override<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  public Iterator&lt;StoreFile&gt; getCandidateFilesForRowKeyBefore(final KeyValue targetKey) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    KeyBeforeConcatenatedLists result = new KeyBeforeConcatenatedLists();<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    // Order matters for this call.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    result.addSublist(state.level0Files);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    if (!state.stripeFiles.isEmpty()) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      int lastStripeIndex = findStripeForRow(CellUtil.cloneRow(targetKey), false);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      for (int stripeIndex = lastStripeIndex; stripeIndex &gt;= 0; --stripeIndex) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>        result.addSublist(state.stripeFiles.get(stripeIndex));<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    return result.iterator();<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  /** See {@link StoreFileManager#getCandidateFilesForRowKeyBefore(KeyValue)} and<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * {@link StoreFileManager#updateCandidateFilesForRowKeyBefore(Iterator, KeyValue, Cell)}<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   * for details on this methods. */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  @Override<a name="line.197"></a>
-<span class="sourceLineNo">198</span>  public Iterator&lt;StoreFile&gt; updateCandidateFilesForRowKeyBefore(<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      Iterator&lt;StoreFile&gt; candidateFiles, final KeyValue targetKey, final Cell candidate) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    KeyBeforeConcatenatedLists.Iterator original =<a name="line.200"></a>
-<span class="sourceLineNo">201</span>        (KeyBeforeConcatenatedLists.Iterator)candidateFiles;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    assert original != null;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    ArrayList&lt;List&lt;StoreFile&gt;&gt; components = original.getComponents();<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    for (int firstIrrelevant = 0; firstIrrelevant &lt; components.size(); ++firstIrrelevant) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      StoreFile sf = components.get(firstIrrelevant).get(0);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      byte[] endKey = endOf(sf);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      // Entries are ordered as such: L0, then stripes in reverse order. We never remove<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      // level 0; we remove the stripe, and all subsequent ones, as soon as we find the<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      // first one that cannot possibly have better candidates.<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      if (!isInvalid(endKey) &amp;&amp; !isOpen(endKey)<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          &amp;&amp; (nonOpenRowCompare(targetKey, endKey) &gt;= 0)) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        original.removeComponents(firstIrrelevant);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>        break;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    return original;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  }<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>  private byte[] getSplitPoint(Collection&lt;StoreFile&gt; sfs) throws IOException {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    Optional&lt;StoreFile&gt; largestFile = StoreUtils.getLargestFile(sfs);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    return largestFile.isPresent()<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        ? StoreUtils.getFileSplitPoint(largestFile.get(), cellComparator).orElse(null) : null;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>  /**<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * Override of getSplitPoint that determines the split point as the boundary between two<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * stripes, unless it causes significant imbalance between split sides' sizes. In that<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * case, the split boundary will be chosen from the middle of one of the stripes to<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * minimize imbalance.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   * @return The split point, or null if no split is possible.<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   */<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  @Override<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  public byte[] getSplitPoint() throws IOException {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    if (this.getStorefileCount() == 0) return null;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    if (state.stripeFiles.size() &lt;= 1) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      return getSplitPointFromAllFiles();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    int leftIndex = -1, rightIndex = state.stripeFiles.size();<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    long leftSize = 0, rightSize = 0;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    long lastLeftSize = 0, lastRightSize = 0;<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    while (rightIndex - 1 != leftIndex) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      if (leftSize &gt;= rightSize) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        --rightIndex;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        lastRightSize = getStripeFilesSize(rightIndex);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        rightSize += lastRightSize;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      } else {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        ++leftIndex;<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        lastLeftSize = getStripeFilesSize(leftIndex);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        leftSize += lastLeftSize;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      }<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    if (leftSize == 0 || rightSize == 0) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      String errMsg = String.format("Cannot split on a boundary - left index %d size %d, "<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          + "right index %d size %d", leftIndex, leftSize, rightIndex, rightSize);<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      debugDumpState(errMsg);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      LOG.warn(errMsg);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      return getSplitPointFromAllFiles();<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    }<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    double ratio = (double)rightSize / leftSize;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    if (ratio &lt; 1) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      ratio = 1 / ratio;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    if (config.getMaxSplitImbalance() &gt; ratio) return state.stripeEndRows[leftIndex];<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>    // If the difference between the sides is too large, we could get the proportional key on<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    // the a stripe to equalize the difference, but there's no proportional key method at the<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    // moment, and it's not extremely important.<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    // See if we can achieve better ratio if we split the bigger side in half.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    boolean isRightLarger = rightSize &gt;= leftSize;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    double newRatio = isRightLarger<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        ? getMidStripeSplitRatio(leftSize, rightSize, lastRightSize)<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        : getMidStripeSplitRatio(rightSize, leftSize, lastLeftSize);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    if (newRatio &lt; 1) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      newRatio = 1 / newRatio;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    if (newRatio &gt;= ratio)  return state.stripeEndRows[leftIndex];<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    LOG.debug("Splitting the stripe - ratio w/o split " + ratio + ", ratio with split "<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        + newRatio + " configured ratio " + config.getMaxSplitImbalance());<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // Ok, we may get better ratio, get it.<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    return getSplitPoint(state.stripeFiles.get(isRightLarger ? rightIndex : leftIndex));<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  private byte[] getSplitPointFromAllFiles() throws IOException {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    ConcatenatedLists&lt;StoreFile&gt; sfs = new ConcatenatedLists&lt;&gt;();<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    sfs.addSublist(state.level0Files);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    sfs.addAllSublists(state.stripeFiles);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    return getSplitPoint(sfs);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>  private double getMidStripeSplitRatio(long smallerSize, long largerSize, long lastLargerSize) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    return (double)(largerSize - lastLargerSize / 2f) / (smallerSize + lastLargerSize / 2f);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>  @Override<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public Collection&lt;StoreFile&gt; getFilesForScan(byte[] startRow, boolean includeStartRow,<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      byte[] stopRow, boolean includeStopRow) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    if (state.stripeFiles.isEmpty()) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      return state.level0Files; // There's just L0.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    }<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>    int firstStripe = findStripeForRow(startRow, true);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    int lastStripe = findStripeForRow(stopRow, false);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    assert firstStripe &lt;= lastStripe;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    if (firstStripe == lastStripe &amp;&amp; state.level0Files.isEmpty()) {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      return state.stripeFiles.get(firstStripe); // There's just one stripe we need.<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    if (firstStripe == 0 &amp;&amp; lastStripe == (state.stripeFiles.size() - 1)) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      return state.allFilesCached; // We need to read all files.<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    }<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>    ConcatenatedLists&lt;StoreFile&gt; result = new ConcatenatedLists&lt;&gt;();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    result.addAllSublists(state.stripeFiles.subList(firstStripe, lastStripe + 1));<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    result.addSublist(state.level0Files);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    return result;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  }<a name="line.315"></a>
-<span class="sourceLineNo">316</span><a name="line.316"></a>
-<span class="sourceLineNo">317</span>  @Override<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public void addCompactionResults(<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    Collection&lt;StoreFile&gt; compactedFiles, Collection&lt;StoreFile&gt; results) throws IOException {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    // See class comment for the assumptions we make here.<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    LOG.debug("Attempting to merge compaction results: " + compactedFiles.size()<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        + " files replaced by " + results.size());<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    // In order to be able to fail in the middle of the operation, we'll operate on lazy<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    // copies and apply the result at the end.<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(false);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    cmc.mergeResults(compactedFiles, results);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    markCompactedAway(compactedFiles);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    debugDumpState("Merged compaction results");<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  }<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  // Mark the files as compactedAway once the storefiles and compactedfiles list is finalised<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  // Let a background thread close the actual reader on these compacted files and also<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  // ensure to evict the blocks from block cache so that they are no longer in<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  // cache<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  private void markCompactedAway(Collection&lt;StoreFile&gt; compactedFiles) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    for (StoreFile file : compactedFiles) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      file.markCompactedAway();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  }<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  @Override<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public void removeCompactedFiles(Collection&lt;StoreFile&gt; compactedFiles) throws IOException {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    // See class comment for the assumptions we make here.<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    LOG.debug("Attempting to delete compaction results: " + compactedFiles.size());<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    // In order to be able to fail in the middle of the operation, we'll operate on lazy<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    // copies and apply the result at the end.<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(false);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    cmc.deleteResults(compactedFiles);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    debugDumpState("Deleted compaction results");<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  }<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  @Override<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  public int getStoreCompactionPriority() {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    // If there's only L0, do what the default store does.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    // If we are in critical priority, do the same - we don't want to trump all stores all<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    // the time due to how many files we have.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    int fc = getStorefileCount();<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    if (state.stripeFiles.isEmpty() || (this.blockingFileCount &lt;= fc)) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      return this.blockingFileCount - fc;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    // If we are in good shape, we don't want to be trumped by all other stores due to how<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    // many files we have, so do an approximate mapping to normal priority range; L0 counts<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    // for all stripes.<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    int l0 = state.level0Files.size(), sc = state.stripeFiles.size();<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    int priority = (int)Math.ceil(((double)(this.blockingFileCount - fc + l0) / sc) - l0);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    return (priority &lt;= HStore.PRIORITY_USER) ? (HStore.PRIORITY_USER + 1) : priority;<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  /**<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * Gets the total size of all files in the stripe.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * @param stripeIndex Stripe index.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * @return Size.<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   */<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  private long getStripeFilesSize(int stripeIndex) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    long result = 0;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    for (StoreFile sf : state.stripeFiles.get(stripeIndex)) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      result += sf.getReader().length();<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    return result;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  }<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>  /**<a name="line.382"></a>
-<span class="sourceLineNo">383</span>   * Loads initial store files that were picked up from some physical location pertaining to<a name="line.383"></a>
-<span class="sourceLineNo">384</span>   * this store (presumably). Unlike adding files after compaction, assumes empty initial<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * sets, and is forgiving with regard to stripe constraints - at worst, many/all files will<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   * go to level 0.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * @param storeFiles Store files to add.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private void loadUnclassifiedStoreFiles(List&lt;StoreFile&gt; storeFiles) {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    LOG.debug("Attempting to load " + storeFiles.size() + " store files.");<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    TreeMap&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; candidateStripes = new TreeMap&lt;&gt;(MAP_COMPARATOR);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    ArrayList&lt;StoreFile&gt; level0Files = new ArrayList&lt;&gt;();<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    // Separate the files into tentative stripes; then validate. Currently, we rely on metadata.<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    // If needed, we could dynamically determine the stripes in future.<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    for (StoreFile sf : storeFiles) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      byte[] startRow = startOf(sf), endRow = endOf(sf);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      // Validate the range and put the files into place.<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      if (isInvalid(startRow) || isInvalid(endRow)) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        insertFileIntoStripe(level0Files, sf); // No metadata - goes to L0.<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        ensureLevel0Metadata(sf);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      } else if (!isOpen(startRow) &amp;&amp; !isOpen(endRow) &amp;&amp;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>          nonOpenRowCompare(startRow, endRow) &gt;= 0) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        LOG.error("Unexpected metadata - start row [" + Bytes.toString(startRow) + "], end row ["<a name="line.403"></a>
-<span class="sourceLineNo">404</span>          + Bytes.toString(endRow) + "] in file [" + sf.getPath() + "], pushing to L0");<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        insertFileIntoStripe(level0Files, sf); // Bad metadata - goes to L0 also.<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        ensureLevel0Metadata(sf);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      } else {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        ArrayList&lt;StoreFile&gt; stripe = candidateStripes.get(endRow);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        if (stripe == null) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>          stripe = new ArrayList&lt;&gt;();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>          candidateStripes.put(endRow, stripe);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        }<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        insertFileIntoStripe(stripe, sf);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      }<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    }<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    // Possible improvement - for variable-count stripes, if all the files are in L0, we can<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    // instead create single, open-ended stripe with all files.<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>    boolean hasOverlaps = false;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    byte[] expectedStartRow = null; // first stripe can start wherever<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    Iterator&lt;Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt;&gt; entryIter =<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        candidateStripes.entrySet().iterator();<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    while (entryIter.hasNext()) {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; entry = entryIter.next();<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      ArrayList&lt;StoreFile&gt; files = entry.getValue();<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      // Validate the file start rows, and remove the bad ones to level 0.<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      for (int i = 0; i &lt; files.size(); ++i) {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        StoreFile sf = files.get(i);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        byte[] startRow = startOf(sf);<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        if (expectedStartRow == null) {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>          expectedStartRow = startRow; // ensure that first stripe is still consistent<a name="line.431"></a>
-<span class="sourceLineNo">432</span>        } else if (!rowEquals(expectedStartRow, startRow)) {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          hasOverlaps = true;<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          LOG.warn("Store file doesn't fit into the tentative stripes - expected to start at ["<a name="line.434"></a>
-<span class="sourceLineNo">435</span>              + Bytes.toString(expectedStartRow) + "], but starts at [" + Bytes.toString(startRow)<a name="line.435"></a>
-<span class="sourceLineNo">436</span>              + "], to L0 it goes");<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          StoreFile badSf = files.remove(i);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>          insertFileIntoStripe(level0Files, badSf);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>          ensureLevel0Metadata(badSf);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>          --i;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      }<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      // Check if any files from the candidate stripe are valid. If so, add a stripe.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      byte[] endRow = entry.getKey();<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      if (!files.isEmpty()) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>        expectedStartRow = endRow; // Next stripe must start exactly at that key.<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      } else {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>        entryIter.remove();<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>    // In the end, there must be open ends on two sides. If not, and there were no errors i.e.<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    // files are consistent, they might be coming from a split. We will treat the boundaries<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // as open keys anyway, and log the message.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    // If there were errors, we'll play it safe and dump everything into L0.<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    if (!candidateStripes.isEmpty()) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      StoreFile firstFile = candidateStripes.firstEntry().getValue().get(0);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      boolean isOpen = isOpen(startOf(firstFile)) &amp;&amp; isOpen(candidateStripes.lastKey());<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      if (!isOpen) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        LOG.warn("The range of the loaded files does not cover full key space: from ["<a name="line.460"></a>
-<span class="sourceLineNo">461</span>            + Bytes.toString(startOf(firstFile)) + "], to ["<a name="line.461"></a>
-<span class="sourceLineNo">462</span>            + Bytes.toString(candidateStripes.lastKey()) + "]");<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        if (!hasOverlaps) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>          ensureEdgeStripeMetadata(candidateStripes.firstEntry().getValue(), true);<a name="line.464"></a>
-<span class="sourceLineNo">465</span>          ensureEdgeStripeMetadata(candidateStripes.lastEntry().getValue(), false);<a name="line.465"></a>
-<span class="sourceLineNo">466</span>        } else {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>          LOG.warn("Inconsistent files, everything goes to L0.");<a name="line.467"></a>
-<span class="sourceLineNo">468</span>          for (ArrayList&lt;StoreFile&gt; files : candidateStripes.values()) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>            for (StoreFile sf : files) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>              insertFileIntoStripe(level0Files, sf);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>              ensureLevel0Metadata(sf);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>            }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>          }<a name="line.473"></a>
-<span class="sourceLineNo">474</span>          candidateStripes.clear();<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        }<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      }<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>    // Copy the results into the fields.<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    State state = new State();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    state.level0Files = ImmutableList.copyOf(level0Files);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    state.stripeFiles = new ArrayList&lt;&gt;(candidateStripes.size());<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    state.stripeEndRows = new byte[Math.max(0, candidateStripes.size() - 1)][];<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    ArrayList&lt;StoreFile&gt; newAllFiles = new ArrayList&lt;&gt;(level0Files);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    int i = candidateStripes.size() - 1;<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    for (Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; entry : candidateStripes.entrySet()) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      state.stripeFiles.add(ImmutableList.copyOf(entry.getValue()));<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      newAllFiles.addAll(entry.getValue());<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      if (i &gt; 0) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        state.stripeEndRows[state.stripeFiles.size() - 1] = entry.getKey();<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      }<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      --i;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    }<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    state.allFilesCached = ImmutableList.copyOf(newAllFiles);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    this.state = state;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    debugDumpState("Files loaded");<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  }<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>  private void ensureEdgeStripeMetadata(ArrayList&lt;StoreFile&gt; stripe, boolean isFirst) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    HashMap&lt;StoreFile, byte[]&gt; targetMap = isFirst ? fileStarts : fileEnds;<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    for (StoreFile sf : stripe) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      targetMap.put(sf, OPEN_KEY);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    }<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  }<a name="line.504"></a>
-<span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>  private void ensureLevel0Metadata(StoreFile sf) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    if (!isInvalid(startOf(sf))) this.fileStarts.put(sf, INVALID_KEY_IN_MAP);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    if (!isInvalid(endOf(sf))) this.fileEnds.put(sf, INVALID_KEY_IN_MAP);<a name="line.508"></a>
+<span class="sourceLineNo">178</span>  @Override<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  public int getStorefileCount() {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    return state.allFilesCached.size();<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  }<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>  /** See {@link StoreFileManager#getCandidateFilesForRowKeyBefore(KeyValue)}<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * for details on this methods. */<a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @Override<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public Iterator&lt;StoreFile&gt; getCandidateFilesForRowKeyBefore(final KeyValue targetKey) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    KeyBeforeConcatenatedLists result = new KeyBeforeConcatenatedLists();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    // Order matters for this call.<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    result.addSublist(state.level0Files);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    if (!state.stripeFiles.isEmpty()) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      int lastStripeIndex = findStripeForRow(CellUtil.cloneRow(targetKey), false);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      for (int stripeIndex = lastStripeIndex; stripeIndex &gt;= 0; --stripeIndex) {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        result.addSublist(state.stripeFiles.get(stripeIndex));<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      }<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    return result.iterator();<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  }<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span>  /** See {@link StoreFileManager#getCandidateFilesForRowKeyBefore(KeyValue)} and<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * {@link StoreFileManager#updateCandidateFilesForRowKeyBefore(Iterator, KeyValue, Cell)}<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   * for details on this methods. */<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  @Override<a name="line.202"></a>
+<span class="sourceLineNo">203</span>  public Iterator&lt;StoreFile&gt; updateCandidateFilesForRowKeyBefore(<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      Iterator&lt;StoreFile&gt; candidateFiles, final KeyValue targetKey, final Cell candidate) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    KeyBeforeConcatenatedLists.Iterator original =<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        (KeyBeforeConcatenatedLists.Iterator)candidateFiles;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    assert original != null;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    ArrayList&lt;List&lt;StoreFile&gt;&gt; components = original.getComponents();<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    for (int firstIrrelevant = 0; firstIrrelevant &lt; components.size(); ++firstIrrelevant) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      StoreFile sf = components.get(firstIrrelevant).get(0);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      byte[] endKey = endOf(sf);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      // Entries are ordered as such: L0, then stripes in reverse order. We never remove<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      // level 0; we remove the stripe, and all subsequent ones, as soon as we find the<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      // first one that cannot possibly have better candidates.<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      if (!isInvalid(endKey) &amp;&amp; !isOpen(endKey)<a name="line.215"></a>
+<span class="sourceLineNo">216</span>          &amp;&amp; (nonOpenRowCompare(targetKey, endKey) &gt;= 0)) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        original.removeComponents(firstIrrelevant);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        break;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    return original;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>  private byte[] getSplitPoint(Collection&lt;StoreFile&gt; sfs) throws IOException {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    Optional&lt;StoreFile&gt; largestFile = StoreUtils.getLargestFile(sfs);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    return largestFile.isPresent()<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        ? StoreUtils.getFileSplitPoint(largestFile.get(), cellComparator).orElse(null) : null;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  }<a name="line.228"></a>
+<span class="sourceLineNo">229</span><a name="line.229"></a>
+<span class="sourceLineNo">230</span>  /**<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * Override of getSplitPoint that determines the split point as the boundary between two<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   * stripes, unless it causes significant imbalance between split sides' sizes. In that<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   * case, the split boundary will be chosen from the middle of one of the stripes to<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * minimize imbalance.<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * @return The split point, or null if no split is possible.<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  @Override<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  public byte[] getSplitPoint() throws IOException {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    if (this.getStorefileCount() == 0) return null;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    if (state.stripeFiles.size() &lt;= 1) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      return getSplitPointFromAllFiles();<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    int leftIndex = -1, rightIndex = state.stripeFiles.size();<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    long leftSize = 0, rightSize = 0;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    long lastLeftSize = 0, lastRightSize = 0;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    while (rightIndex - 1 != leftIndex) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      if (leftSize &gt;= rightSize) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        --rightIndex;<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        lastRightSize = getStripeFilesSize(rightIndex);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        rightSize += lastRightSize;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      } else {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        ++leftIndex;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        lastLeftSize = getStripeFilesSize(leftIndex);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        leftSize += lastLeftSize;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    }<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    if (leftSize == 0 || rightSize == 0) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      String errMsg = String.format("Cannot split on a boundary - left index %d size %d, "<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          + "right index %d size %d", leftIndex, leftSize, rightIndex, rightSize);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      debugDumpState(errMsg);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      LOG.warn(errMsg);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      return getSplitPointFromAllFiles();<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    double ratio = (double)rightSize / leftSize;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    if (ratio &lt; 1) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      ratio = 1 / ratio;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    if (config.getMaxSplitImbalance() &gt; ratio) return state.stripeEndRows[leftIndex];<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span>    // If the difference between the sides is too large, we could get the proportional key on<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    // the a stripe to equalize the difference, but there's no proportional key method at the<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    // moment, and it's not extremely important.<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // See if we can achieve better ratio if we split the bigger side in half.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    boolean isRightLarger = rightSize &gt;= leftSize;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    double newRatio = isRightLarger<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        ? getMidStripeSplitRatio(leftSize, rightSize, lastRightSize)<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        : getMidStripeSplitRatio(rightSize, leftSize, lastLeftSize);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    if (newRatio &lt; 1) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      newRatio = 1 / newRatio;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    if (newRatio &gt;= ratio)  return state.stripeEndRows[leftIndex];<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    LOG.debug("Splitting the stripe - ratio w/o split " + ratio + ", ratio with split "<a name="line.282"></a>
+<span class="sourceLineNo">283</span>        + newRatio + " configured ratio " + config.getMaxSplitImbalance());<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // Ok, we may get better ratio, get it.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    return getSplitPoint(state.stripeFiles.get(isRightLarger ? rightIndex : leftIndex));<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  }<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>  private byte[] getSplitPointFromAllFiles() throws IOException {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    ConcatenatedLists&lt;StoreFile&gt; sfs = new ConcatenatedLists&lt;&gt;();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    sfs.addSublist(state.level0Files);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    sfs.addAllSublists(state.stripeFiles);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    return getSplitPoint(sfs);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>  private double getMidStripeSplitRatio(long smallerSize, long largerSize, long lastLargerSize) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    return (double)(largerSize - lastLargerSize / 2f) / (smallerSize + lastLargerSize / 2f);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  }<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span>  @Override<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  public Collection&lt;StoreFile&gt; getFilesForScan(byte[] startRow, boolean includeStartRow,<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      byte[] stopRow, boolean includeStopRow) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    if (state.stripeFiles.isEmpty()) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      return state.level0Files; // There's just L0.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>    int firstStripe = findStripeForRow(startRow, true);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    int lastStripe = findStripeForRow(stopRow, false);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    assert firstStripe &lt;= lastStripe;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    if (firstStripe == lastStripe &amp;&amp; state.level0Files.isEmpty()) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      return state.stripeFiles.get(firstStripe); // There's just one stripe we need.<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    if (firstStripe == 0 &amp;&amp; lastStripe == (state.stripeFiles.size() - 1)) {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      return state.allFilesCached; // We need to read all files.<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    }<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>    ConcatenatedLists&lt;StoreFile&gt; result = new ConcatenatedLists&lt;&gt;();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    result.addAllSublists(state.stripeFiles.subList(firstStripe, lastStripe + 1));<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    result.addSublist(state.level0Files);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    return result;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  @Override<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public void addCompactionResults(<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    Collection&lt;StoreFile&gt; compactedFiles, Collection&lt;StoreFile&gt; results) throws IOException {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // See class comment for the assumptions we make here.<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    LOG.debug("Attempting to merge compaction results: " + compactedFiles.size()<a name="line.326"></a>
+<span class="sourceLineNo">327</span>        + " files replaced by " + results.size());<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    // In order to be able to fail in the middle of the operation, we'll operate on lazy<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    // copies and apply the result at the end.<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(false);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    cmc.mergeResults(compactedFiles, results);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    markCompactedAway(compactedFiles);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    debugDumpState("Merged compaction results");<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  // Mark the files as compactedAway once the storefiles and compactedfiles list is finalised<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  // Let a background thread close the actual reader on these compacted files and also<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  // ensure to evict the blocks from block cache so that they are no longer in<a name="line.338"></a>
+<span class="sourceLineNo">339</span>  // cache<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  private void markCompactedAway(Collection&lt;StoreFile&gt; compactedFiles) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    for (StoreFile file : compactedFiles) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      file.markCompactedAway();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>  @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  public void removeCompactedFiles(Collection&lt;StoreFile&gt; compactedFiles) throws IOException {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    // See class comment for the assumptions we make here.<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    LOG.debug("Attempting to delete compaction results: " + compactedFiles.size());<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // In order to be able to fail in the middle of the operation, we'll operate on lazy<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    // copies and apply the result at the end.<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(false);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    cmc.deleteResults(compactedFiles);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    debugDumpState("Deleted compaction results");<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>  @Override<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  public int getStoreCompactionPriority() {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    // If there's only L0, do what the default store does.<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    // If we are in critical priority, do the same - we don't want to trump all stores all<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    // the time due to how many files we have.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    int fc = getStorefileCount();<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    if (state.stripeFiles.isEmpty() || (this.blockingFileCount &lt;= fc)) {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      return this.blockingFileCount - fc;<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    }<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    // If we are in good shape, we don't want to be trumped by all other stores due to how<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    // many files we have, so do an approximate mapping to normal priority range; L0 counts<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    // for all stripes.<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    int l0 = state.level0Files.size(), sc = state.stripeFiles.size();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    int priority = (int)Math.ceil(((double)(this.blockingFileCount - fc + l0) / sc) - l0);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    return (priority &lt;= HStore.PRIORITY_USER) ? (HStore.PRIORITY_USER + 1) : priority;<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  /**<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * Gets the total size of all files in the stripe.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @param stripeIndex Stripe index.<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * @return Size.<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   */<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  private long getStripeFilesSize(int stripeIndex) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    long result = 0;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    for (StoreFile sf : state.stripeFiles.get(stripeIndex)) {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      result += sf.getReader().length();<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    }<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    return result;<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
+<span class="sourceLineNo">386</span><a name="line.386"></a>
+<span class="sourceLineNo">387</span>  /**<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * Loads initial store files that were picked up from some physical location pertaining to<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * this store (presumably). Unlike adding files after compaction, assumes empty initial<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * sets, and is forgiving with regard to stripe constraints - at worst, many/all files will<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * go to level 0.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   * @param storeFiles Store files to add.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>   */<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  private void loadUnclassifiedStoreFiles(List&lt;StoreFile&gt; storeFiles) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    LOG.debug("Attempting to load " + storeFiles.size() + " store files.");<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    TreeMap&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; candidateStripes = new TreeMap&lt;&gt;(MAP_COMPARATOR);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    ArrayList&lt;StoreFile&gt; level0Files = new ArrayList&lt;&gt;();<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Separate the files into tentative stripes; then validate. Currently, we rely on metadata.<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    // If needed, we could dynamically determine the stripes in future.<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    for (StoreFile sf : storeFiles) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      byte[] startRow = startOf(sf), endRow = endOf(sf);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      // Validate the range and put the files into place.<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      if (isInvalid(startRow) || isInvalid(endRow)) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>        insertFileIntoStripe(level0Files, sf); // No metadata - goes to L0.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        ensureLevel0Metadata(sf);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      } else if (!isOpen(startRow) &amp;&amp; !isOpen(endRow) &amp;&amp;<a name="line.406"></a>
+<span class="sourceLineNo">407</span>          nonOpenRowCompare(startRow, endRow) &gt;= 0) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        LOG.error("Unexpected metadata - start row [" + Bytes.toString(startRow) + "], end row ["<a name="line.408"></a>
+<span class="sourceLineNo">409</span>          + Bytes.toString(endRow) + "] in file [" + sf.getPath() + "], pushing to L0");<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        insertFileIntoStripe(level0Files, sf); // Bad metadata - goes to L0 also.<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        ensureLevel0Metadata(sf);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      } else {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        ArrayList&lt;StoreFile&gt; stripe = candidateStripes.get(endRow);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        if (stripe == null) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>          stripe = new ArrayList&lt;&gt;();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>          candidateStripes.put(endRow, stripe);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        insertFileIntoStripe(stripe, sf);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      }<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    // Possible improvement - for variable-count stripes, if all the files are in L0, we can<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    // instead create single, open-ended stripe with all files.<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    boolean hasOverlaps = false;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    byte[] expectedStartRow = null; // first stripe can start wherever<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    Iterator&lt;Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt;&gt; entryIter =<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        candidateStripes.entrySet().iterator();<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    while (entryIter.hasNext()) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; entry = entryIter.next();<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      ArrayList&lt;StoreFile&gt; files = entry.getValue();<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      // Validate the file start rows, and remove the bad ones to level 0.<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      for (int i = 0; i &lt; files.size(); ++i) {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>        StoreFile sf = files.get(i);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        byte[] startRow = startOf(sf);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>        if (expectedStartRow == null) {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>          expectedStartRow = startRow; // ensure that first stripe is still consistent<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        } else if (!rowEquals(expectedStartRow, startRow)) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          hasOverlaps = true;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          LOG.warn("Store file doesn't fit into the tentative stripes - expected to start at ["<a name="line.439"></a>
+<span class="sourceLineNo">440</span>              + Bytes.toString(expectedStartRow) + "], but starts at [" + Bytes.toString(startRow)<a name="line.440"></a>
+<span class="sourceLineNo">441</span>              + "], to L0 it goes");<a name="line.441"></a>
+<span class="sourceLineNo">442</span>          StoreFile badSf = files.remove(i);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>          insertFileIntoStripe(level0Files, badSf);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>          ensureLevel0Metadata(badSf);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>          --i;<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>      // Check if any files from the candidate stripe are valid. If so, add a stripe.<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      byte[] endRow = entry.getKey();<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      if (!files.isEmpty()) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>        expectedStartRow = endRow; // Next stripe must start exactly at that key.<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      } else {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        entryIter.remove();<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>    // In the end, there must be open ends on two sides. If not, and there were no errors i.e.<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    // files are consistent, they might be coming from a split. We will treat the boundaries<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    // as open keys anyway, and log the message.<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    // If there were errors, we'll play it safe and dump everything into L0.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    if (!candidateStripes.isEmpty()) {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      StoreFile firstFile = candidateStripes.firstEntry().getValue().get(0);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      boolean isOpen = isOpen(startOf(firstFile)) &amp;&amp; isOpen(candidateStripes.lastKey());<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      if (!isOpen) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>        LOG.warn("The range of the loaded files does not cover full key space: from ["<a name="line.465"></a>
+<span class="sourceLineNo">466</span>            + Bytes.toString(startOf(firstFile)) + "], to ["<a name="line.466"></a>
+<span class="sourceLineNo">467</span>            + Bytes.toString(candidateStripes.lastKey()) + "]");<a name="line.467"></a>
+<span class="sourceLineNo">468</span>        if (!hasOverlaps) {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>          ensureEdgeStripeMetadata(candidateStripes.firstEntry().getValue(), true);<a name="line.469"></a>
+<span class="sourceLineNo">470</span>          ensureEdgeStripeMetadata(candidateStripes.lastEntry().getValue(), false);<a name="line.470"></a>
+<span class="sourceLineNo">471</span>        } else {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>          LOG.warn("Inconsistent files, everything goes to L0.");<a name="line.472"></a>
+<span class="sourceLineNo">473</span>          for (ArrayList&lt;StoreFile&gt; files : candidateStripes.values()) {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>            for (StoreFile sf : files) {<a name="line.474"></a>
+<span class="sourceLineNo">475</span>              insertFileIntoStripe(level0Files, sf);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>              ensureLevel0Metadata(sf);<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>          candidateStripes.clear();<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><a name="line.483"></a>
+<span class="sourceLineNo">484</span>    // Copy the results into the fields.<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    State state = new State();<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    state.level0Files = ImmutableList.copyOf(level0Files);<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    state.stripeFiles = new ArrayList&lt;&gt;(candidateStripes.size());<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    state.stripeEndRows = new byte[Math.max(0, candidateStripes.size() - 1)][];<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    ArrayList&lt;StoreFile&gt; newAllFiles = new ArrayList&lt;&gt;(level0Files);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    int i = candidateStripes.size() - 1;<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    for (Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; entry : candidateStripes.entrySet()) {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>      state.stripeFiles.add(ImmutableList.copyOf(entry.getValue()));<a name="line.492"></a>
+<span class="sourceLineNo">493</span>      newAllFiles.addAll(entry.getValue());<a name="line.493"></a>
+<span class="sourceLineNo">494</span>      if (i &gt; 0) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>        state.stripeEndRows[state.stripeFiles.size() - 1] = entry.getKey();<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      }<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      --i;<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    }<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    state.allFilesCached = ImmutableList.copyOf(newAllFiles);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    this.state = state;<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    debugDumpState("Files loaded");<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>  private void ensureEdgeStripeMetadata(ArrayList&lt;StoreFile&gt; stripe, boolean isFirst) {<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    HashMap&lt;StoreFile, byte[]&gt; targetMap = isFirst ? fileStarts : fileEnds;<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    for (StoreFile sf : stripe) {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>      targetMap.put(sf, OPEN_KEY);<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    }<a name="line.508"></a>
 <span class="sourceLineNo">509</span>  }<a name="line.509"></a>
 <span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>  private void debugDumpState(String string) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    if (!LOG.isDebugEnabled()) return;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    StringBuilder sb = new StringBuilder();<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    sb.append("\n" + string + "; current stripe state is as such:");<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    sb.append("\n level 0 with ")<a name="line.515"></a>
-<span class="sourceLineNo">516</span>        .append(state.level0Files.size())<a name="line.516"></a>
-<span class="sourceLineNo">517</span>        .append(<a name="line.517"></a>
-<span class="sourceLineNo">518</span>          " files: "<a name="line.518"></a>
-<span class="sourceLineNo">519</span>              + TraditionalBinaryPrefix.long2String(<a name="line.519"></a>
-<span class="sourceLineNo">520</span>                StripeCompactionPolicy.getTotalFileSize(state.level0Files), "", 1) + ";");<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    for (int i = 0; i &lt; state.stripeFiles.size(); ++i) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      String endRow = (i == state.stripeEndRows.length)<a name="line.522"></a>
-<span class="sourceLineNo">523</span>          ? "(end)" : "[" + Bytes.toString(state.stripeEndRows[i]) + "]";<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      sb.append("\n stripe ending in ")<a name="line.524"></a>
-<span class="sourceLineNo">525</span>          .append(endRow)<a name="line.525"></a>
-<span class="sourceLineNo">526</span>          .append(" with ")<a name="line.526"></a>
-<span class="sourceLineNo">527</span>          .append(state.stripeFiles.get(i).size())<a name="line.527"></a>
-<span class="sourceLineNo">528</span>          .append(<a name="line.528"></a>
-<span class="sourceLineNo">529</span>            " files: "<a name="line.529"></a>
-<span class="sourceLineNo">530</span>                + TraditionalBinaryPrefix.long2String(<a name="line.530"></a>
-<span class="sourceLineNo">531</span>                  StripeCompactionPolicy.getTotalFileSize(state.stripeFiles.get(i)), "", 1) + ";");<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    }<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    sb.append("\n").append(state.stripeFiles.size()).append(" stripes total.");<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    sb.append("\n").append(getStorefileCount()).append(" files total.");<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    LOG.debug(sb.toString());<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>  /**<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * Checks whether the key indicates an open interval boundary (i.e. infinity).<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  private static final boolean isOpen(byte[] key) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    return key != null &amp;&amp; key.length == 0;<a name="line.542"></a>
-<span class="sourceLineNo">543</span>  }<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>  private static final boolean isOpen(Cell key) {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    return key != null &amp;&amp; key.getRowLength() == 0;<a name="line.546"></a>
-<span class="sourceLineNo">547</span>  }<a name="line.547"></a>
-<span class="sourceLineNo">548</span><a name="line.548"></a>
-<span class="sourceLineNo">549</span>  /**<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * Checks whether the key is invalid (e.g. from an L0 file, or non-stripe-compacted files).<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   */<a name="line.551"></a>
-<span class="sourceLineNo">552</span>  private static final boolean isInvalid(byte[] key) {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    // No need to use Arrays.equals because INVALID_KEY is null<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    return key == INVALID_KEY;<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>  /**<a name="line.557"></a>
-<span class="sourceLineNo">558</span>   * Compare two keys for equality.<a name="line.558"></a>
-<span class="sourceLineNo">559</span>   */<a name="line.559"></a>
-<span class="sourceLineNo">560</span>  private final boolean rowEquals(byte[] k1, byte[] k2) {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    return Bytes.equals(k1, 0, k1.length, k2, 0, k2.length);<a name="line.561"></a>
-<span class="sourceLineNo">562</span>  }<a name="line.562"></a>
-<span class="sourceLineNo">563</span><a name="line.563"></a>
-<span class="sourceLineNo">564</span>  /**<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * Compare two keys. Keys must not be open (isOpen(row) == false).<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   */<a name="line.566"></a>
-<span class="sourceLineNo">567</span>  private final int nonOpenRowCompare(byte[] k1, byte[] k2) {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    assert !isOpen(k1) &amp;&amp; !isOpen(k2);<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    return Bytes.compareTo(k1, k2);<a name="line.569"></a>
-<span class="sourceLineNo">570</span>  }<a name="line.570"></a>
-<span class="sourceLineNo">571</span><a name="line.571"></a>
-<span class="sourceLineNo">572</span>  private final int nonOpenRowCompare(Cell k1, byte[] k2) {<a name="line.572"></a>
+<span class="sourceLineNo">511</span>  private void ensureLevel0Metadata(StoreFile sf) {<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    if (!isInvalid(startOf(sf))) this.fileStarts.put(sf, INVALID_KEY_IN_MAP);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    if (!isInvalid(endOf(sf))) this.fileEnds.put(sf, INVALID_KEY_IN_MAP);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>  }<a name="line.514"></a>
+<span class="sourceLineNo">515</span><a name="line.515"></a>
+<span class="sourceLineNo">516</span>  private void debugDumpState(String string) {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    if (!LOG.isDebugEnabled()) return;<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    StringBuilder sb = new StringBuilder();<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    sb.append("\n" + string + "; current stripe state is as such:");<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    sb.append("\n level 0 with ")<a name="line.520"></a>
+<span class="sourceLineNo">521</span>        .append(state.level0Files.size())<a name="line.521"></a>
+<span class="sourceLineNo">522</span>        .append(<a name="line.522"></a>
+<span class="sourceLineNo">523</span>          " files: "<a name="line.523"></a>
+<span class="sourceLineNo">524</span>              + TraditionalBinaryPrefix.long2String(<a name="line.524"></a>
+<span class="sourceLineNo">525</span>                StripeCompactionPolicy.getTotalFileSize(state.level0Files), "", 1) + ";");<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    for (int i = 0; i &lt; state.stripeFiles.size(); ++i) {<a name="line.526"></a>
+<span class="sourceLineNo">527</span>      String endRow = (i == state.stripeEndRows.length)<a name="line.527"></a>
+<span class="sourceLineNo">528</span>          ? "(end)" : "[" + Bytes.toString(state.stripeEndRows[i]) + "]";<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      sb.append("\n stripe ending in ")<a name="line.529"></a>
+<span class="sourceLineNo">530</span>          .append(endRow)<a name="line.530"></a>
+<span class="sourceLineNo">531</span>          .append(" with ")<a name="line.531"></a>
+<span class="sourceLineNo">532</span>          .append(state.stripeFiles.get(i).size())<a name="line.532"></a>
+<span class="sourceLineNo">533</span>          .append(<a name="line.533"></a>
+<span class="sourceLineNo">534</span>            " files: "<a name="line.534"></a>
+<span class="sourceLineNo">535</span>                + TraditionalBinaryPrefix.long2String(<a name="line.535"></a>
+<span class="sourceLineNo">536</span>                  StripeCompactionPolicy.getTotalFileSize(state.stripeFiles.get(i)), "", 1) + ";");<a name="line.536"></a>
+<span class="sourceLineNo">537</span>    }<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    sb.append("\n").append(state.stripeFiles.size()).append(" stripes total.");<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    sb.append("\n").append(getStorefileCount()).append(" files total.");<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    LOG.debug(sb.toString());<a name="line.540"></a>
+<span class="sourceLineNo">541</span>  }<a name="line.541"></a>
+<span class="sourceLineNo">542</span><a name="line.542"></a>
+<span class="sourceLineNo">543</span>  /**<a name="line.543"></a>
+<span class="sourceLineNo">544</span>   * Checks whether the key indicates an open interval boundary (i.e. infinity).<a name="line.544"></a>
+<span class="sourceLineNo">545</span>   */<a name="line.545"></a>
+<span class="sourceLineNo">546</span>  private static final boolean isOpen(byte[] key) {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>    return key != null &amp;&amp; key.length == 0;<a name="line.547"></a>
+<span class="sourceLineNo">548</span>  }<a name="line.548"></a>
+<span class="sourceLineNo">549</span><a name="line.549"></a>
+<span class="sourceLineNo">550</span>  private static final boolean isOpen(Cell key) {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    return key != null &amp;&amp; key.getRowLength() == 0;<a name="line.551"></a>
+<span class="sourceLineNo">552</span>  }<a name="line.552"></a>
+<span class="sourceLineNo">553</span><a name="line.553"></a>
+<span class="sourceLineNo">554</span>  /**<a name="line.554"></a>
+<span class="sourceLineNo">555</span>   * Checks whether the key is invalid (e.g. from an L0 file, or non-stripe-compacted files).<a name="line.555"></a>
+<span class="sourceLineNo">556</span>   */<a name="line.556"></a>
+<span class="sourceLineNo">557</span>  private static final boolean isInvalid(byte[] key) {<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    // No need to use Arrays.equals because INVALID_KEY is null<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    return key == INVALID_KEY;<a name="line.559"></a>
+<span class="sourceLineNo">560</span>  }<a name="line.560"></a>
+<span class="sourceLineNo">561</span><a name="line.561"></a>
+<span class="sourceLineNo">562</span>  /**<a name="line.562"></a>
+<span class="sourceLineNo">563</span>   * Compare two keys for equality.<a name="line.563"></a>
+<span class="sourceLineNo">564</span>   */<a name="line.564"></a>
+<span class="sourceLineNo">565</span>  private final boolean rowEquals(byte[] k1, byte[] k2) {<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    return Bytes.equals(k1, 0, k1.length, k2, 0, k2.length);<a name="line.566"></a>
+<span class="sourceLineNo">567</span>  }<a name="line.567"></a>
+<span class="sourceLineNo">568</span><a name="line.568"></a>
+<span class="sourceLineNo">569</span>  /**<a name="line.569"></a>
+<span class="sourceLineNo">570</span>   * Compare two keys. Keys must not be open (isOpen(row) == false).<a name="line.570"></a>
+<span class="sourceLineNo">571</span>   */<a name="line.571"></a>
+<span class="sourceLineNo">572</span>  private final int nonOpenRowCompare(byte[] k1, byte[] k2) {<a name="line.572"></a>
 <span class="sourceLineNo">573</span>    assert !isOpen(k1) &amp;&amp; !isOpen(k2);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    return cellComparator.compareRows(k1, k2, 0, k2.length);<a name="line.574"></a>
+<span class="sourceLineNo">574</span>    return Bytes.compareTo(k1, k2);<a name="line.574"></a>
 <span cl

<TRUNCATED>

[30/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
index 15c5c2f..2bd18a2 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
@@ -297,40 +297,40 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <!--   -->
 </a>
 <h3>Field Detail</h3>
-<a name="filter">
+<a name="bcv">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>filter</h4>
-<pre>protected&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.html#line.151">filter</a></pre>
+<h4>bcv</h4>
+<pre>protected&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.html#line.151">bcv</a></pre>
 </li>
 </ul>
-<a name="bcn">
+<a name="format">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>bcn</h4>
-<pre>protected&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.html#line.158">bcn</a></pre>
+<h4>format</h4>
+<pre>protected&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.html#line.158">format</a></pre>
 </li>
 </ul>
-<a name="bcv">
+<a name="bcn">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>bcv</h4>
-<pre>protected&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.html#line.165">bcv</a></pre>
+<h4>bcn</h4>
+<pre>protected&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.html#line.165">bcn</a></pre>
 </li>
 </ul>
-<a name="format">
+<a name="filter">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>format</h4>
-<pre>protected&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.html#line.172">format</a></pre>
+<h4>filter</h4>
+<pre>protected&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.html#line.172">filter</a></pre>
 </li>
 </ul>
 </li>
@@ -402,40 +402,40 @@ extends org.jamon.AbstractTemplateProxy</pre>
 </dl>
 </li>
 </ul>
-<a name="setFilter-java.lang.String-">
+<a name="setBcv-java.lang.String-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFilter</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.152">setFilter</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_filter)</pre>
+<h4>setBcv</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.152">setBcv</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_bcv)</pre>
 </li>
 </ul>
-<a name="setBcn-java.lang.String-">
+<a name="setFormat-java.lang.String-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setBcn</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.159">setBcn</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_bcn)</pre>
+<h4>setFormat</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.159">setFormat</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_format)</pre>
 </li>
 </ul>
-<a name="setBcv-java.lang.String-">
+<a name="setBcn-java.lang.String-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setBcv</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.166">setBcv</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_bcv)</pre>
+<h4>setBcn</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.166">setBcn</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_bcn)</pre>
 </li>
 </ul>
-<a name="setFormat-java.lang.String-">
+<a name="setFilter-java.lang.String-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFormat</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.173">setFormat</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_format)</pre>
+<h4>setFilter</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.173">setFilter</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_filter)</pre>
 </li>
 </ul>
 <a name="constructImpl-java.lang.Class-">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
index 15d28d2..2bedf21 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
@@ -238,40 +238,40 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/
 <pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html#line.28">regionServer</a></pre>
 </li>
 </ul>
-<a name="filter">
+<a name="bcv">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>filter</h4>
-<pre>private final&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmplImpl.html#line.29">filter</a></pre>
+<h4>bcv</h4>
+<pre>private final&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmplImpl.html#line.29">bcv</a></pre>
 </li>
 </ul>
-<a name="bcn">
+<a name="format">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>bcn</h4>
-<pre>private final&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmplImpl.html#line.30">bcn</a></pre>
+<h4>format</h4>
+<pre>private final&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmplImpl.html#line.30">format</a></pre>
 </li>
 </ul>
-<a name="bcv">
+<a name="bcn">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>bcv</h4>
-<pre>private final&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmplImpl.html#line.31">bcv</a></pre>
+<h4>bcn</h4>
+<pre>private final&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmplImpl.html#line.31">bcn</a></pre>
 </li>
 </ul>
-<a name="format">
+<a name="filter">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>format</h4>
-<pre>private final&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmplImpl.html#line.32">format</a></pre>
+<h4>filter</h4>
+<pre>private final&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmplImpl.html#line.32">filter</a></pre>
 </li>
 </ul>
 </li>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/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 3bd3900..53d258e 100644
--- a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -166,8 +166,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://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="http://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="http://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/e9db7c5d/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 c59f50a..d6f49b6 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -16,11 +16,11 @@
 <span class="sourceLineNo">008</span>@InterfaceAudience.Private<a name="line.8"></a>
 <span class="sourceLineNo">009</span>public class Version {<a name="line.9"></a>
 <span class="sourceLineNo">010</span>  public static final String version = "3.0.0-SNAPSHOT";<a name="line.10"></a>
-<span class="sourceLineNo">011</span>  public static final String revision = "7cc458e129cf7c55910c9985d0824a72189a1a73";<a name="line.11"></a>
+<span class="sourceLineNo">011</span>  public static final String revision = "d092008766c460de329d14d40e9cfd2377dcaf01";<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 Jun 22 14:39:49 UTC 2017";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Fri Jun 23 14:39:20 UTC 2017";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String url = "git://asf920.gq1.ygridcore.net/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.14"></a>
-<span class="sourceLineNo">015</span>  public static final String srcChecksum = "83cc237c7604a7786af1a1aab7f0020f";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "32fc2f233b8d7f509c35718e88129025";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html
index 71a052f..640c007 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html
@@ -35,18 +35,18 @@
 <span class="sourceLineNo">027</span>import java.util.List;<a name="line.27"></a>
 <span class="sourceLineNo">028</span>import java.util.Optional;<a name="line.28"></a>
 <span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>import com.google.common.collect.ImmutableCollection;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import com.google.common.collect.ImmutableList;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import com.google.common.collect.Lists;<a name="line.32"></a>
-<span class="sourceLineNo">033</span><a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.commons.logging.Log;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.commons.logging.LogFactory;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.conf.Configuration;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.Cell;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.41"></a>
+<span class="sourceLineNo">030</span>import org.apache.commons.logging.Log;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.commons.logging.LogFactory;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.conf.Configuration;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.Cell;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.37"></a>
+<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">039</span>import com.google.common.collect.ImmutableCollection;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import com.google.common.collect.ImmutableList;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import com.google.common.collect.Lists;<a name="line.41"></a>
 <span class="sourceLineNo">042</span><a name="line.42"></a>
 <span class="sourceLineNo">043</span>/**<a name="line.43"></a>
 <span class="sourceLineNo">044</span> * Default implementation of StoreFileManager. Not thread-safe.<a name="line.44"></a>
@@ -125,132 +125,140 @@
 <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>  @Override<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  public void addCompactionResults(<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    Collection&lt;StoreFile&gt; newCompactedfiles, Collection&lt;StoreFile&gt; results) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    ArrayList&lt;StoreFile&gt; newStoreFiles = Lists.newArrayList(storefiles);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    newStoreFiles.removeAll(newCompactedfiles);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    if (!results.isEmpty()) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      newStoreFiles.addAll(results);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    sortAndSetStoreFiles(newStoreFiles);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    ArrayList&lt;StoreFile&gt; updatedCompactedfiles = null;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    if (this.compactedfiles != null) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      updatedCompactedfiles = new ArrayList&lt;&gt;(this.compactedfiles);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      updatedCompactedfiles.addAll(newCompactedfiles);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    } else {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      updatedCompactedfiles = new ArrayList&lt;&gt;(newCompactedfiles);<a name="line.133"></a>
+<span class="sourceLineNo">120</span>  public final int getCompactedFilesCount() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    if (compactedfiles == null) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      return 0;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    }<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    return compactedfiles.size();<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  }<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>  @Override<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  public void addCompactionResults(<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    Collection&lt;StoreFile&gt; newCompactedfiles, Collection&lt;StoreFile&gt; results) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    ArrayList&lt;StoreFile&gt; newStoreFiles = Lists.newArrayList(storefiles);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    newStoreFiles.removeAll(newCompactedfiles);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    if (!results.isEmpty()) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      newStoreFiles.addAll(results);<a name="line.133"></a>
 <span class="sourceLineNo">134</span>    }<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    markCompactedAway(newCompactedfiles);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    this.compactedfiles = sortCompactedfiles(updatedCompactedfiles);<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>  // Mark the files as compactedAway once the storefiles and compactedfiles list is finalized<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  // Let a background thread close the actual reader on these compacted files and also<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  // ensure to evict the blocks from block cache so that they are no longer in<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  // cache<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  private void markCompactedAway(Collection&lt;StoreFile&gt; compactedFiles) {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    for (StoreFile file : compactedFiles) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      file.markCompactedAway();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    }<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  }<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>  @Override<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  public void removeCompactedFiles(Collection&lt;StoreFile&gt; removedCompactedfiles) throws IOException {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    ArrayList&lt;StoreFile&gt; updatedCompactedfiles = null;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    if (this.compactedfiles != null) {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      updatedCompactedfiles = new ArrayList&lt;&gt;(this.compactedfiles);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      updatedCompactedfiles.removeAll(removedCompactedfiles);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      this.compactedfiles = sortCompactedfiles(updatedCompactedfiles);<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    }<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  }<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  @Override<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  public final Iterator&lt;StoreFile&gt; getCandidateFilesForRowKeyBefore(final KeyValue targetKey) {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    return new ArrayList&lt;&gt;(Lists.reverse(this.storefiles)).iterator();<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  @Override<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  public Iterator&lt;StoreFile&gt; updateCandidateFilesForRowKeyBefore(<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      Iterator&lt;StoreFile&gt; candidateFiles, final KeyValue targetKey, final Cell candidate) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    // Default store has nothing useful to do here.<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    // TODO: move this comment when implementing Level:<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    // Level store can trim the list by range, removing all the files which cannot have<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    // any useful candidates less than "candidate".<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    return candidateFiles;<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 final byte[] getSplitPoint() throws IOException {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    List&lt;StoreFile&gt; storefiles = this.storefiles;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    if (storefiles.isEmpty()) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      return null;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    Optional&lt;StoreFile&gt; largestFile = StoreUtils.getLargestFile(storefiles);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    return largestFile.isPresent()<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        ? StoreUtils.getFileSplitPoint(largestFile.get(), kvComparator).orElse(null) : null;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>  @Override<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  public final Collection&lt;StoreFile&gt; getFilesForScan(byte[] startRow, boolean includeStartRow,<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      byte[] stopRow, boolean includeStopRow) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    // We cannot provide any useful input and already have the files sorted by seqNum.<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    return getStorefiles();<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 int getStoreCompactionPriority() {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    int priority = blockingFileCount - storefiles.size();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    return (priority == HStore.PRIORITY_USER) ? priority + 1 : priority;<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 Collection&lt;StoreFile&gt; getUnneededFiles(long maxTs, List&lt;StoreFile&gt; filesCompacting) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    Collection&lt;StoreFile&gt; expiredStoreFiles = null;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    ImmutableList&lt;StoreFile&gt; files = storefiles;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    // 1) We can never get rid of the last file which has the maximum seqid.<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    // 2) Files that are not the latest can't become one due to (1), so the rest are fair game.<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    for (int i = 0; i &lt; files.size() - 1; ++i) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      StoreFile sf = files.get(i);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      long fileTs = sf.getReader().getMaxTimestamp();<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      if (fileTs &lt; maxTs &amp;&amp; !filesCompacting.contains(sf)) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>        LOG.info("Found an expired store file: " + sf.getPath()<a name="line.208"></a>
-<span class="sourceLineNo">209</span>            + " whose maxTimeStamp is " + fileTs + ", which is below " + maxTs);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        if (expiredStoreFiles == null) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          expiredStoreFiles = new ArrayList&lt;&gt;();<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>        expiredStoreFiles.add(sf);<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>    return expiredStoreFiles;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  }<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>  private void sortAndSetStoreFiles(List&lt;StoreFile&gt; storeFiles) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    Collections.sort(storeFiles, storeFileComparator);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    storefiles = ImmutableList.copyOf(storeFiles);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  private List&lt;StoreFile&gt; sortCompactedfiles(List&lt;StoreFile&gt; storefiles) {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    // Sorting may not be really needed here for the compacted files?<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    Collections.sort(storefiles, storeFileComparator);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    return new ArrayList&lt;&gt;(storefiles);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  }<a name="line.228"></a>
-<span class="sourceLineNo">229</span><a name="line.229"></a>
-<span class="sourceLineNo">230</span>  @Override<a name="line.230"></a>
-<span class="sourceLineNo">231</span>  public double getCompactionPressure() {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    int storefileCount = getStorefileCount();<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    int minFilesToCompact = comConf.getMinFilesToCompact();<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    if (storefileCount &lt;= minFilesToCompact) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      return 0.0;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    }<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    return (double) (storefileCount - minFilesToCompact) / (blockingFileCount - minFilesToCompact);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  @Override<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  public Comparator&lt;StoreFile&gt; getStoreFileComparator() {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    return storeFileComparator;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>  }<a name="line.243"></a>
-<span class="sourceLineNo">244</span>}<a name="line.244"></a>
-<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">135</span>    sortAndSetStoreFiles(newStoreFiles);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    ArrayList&lt;StoreFile&gt; updatedCompactedfiles = null;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    if (this.compactedfiles != null) {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      updatedCompactedfiles = new ArrayList&lt;&gt;(this.compactedfiles);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      updatedCompactedfiles.addAll(newCompactedfiles);<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    } else {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      updatedCompactedfiles = new ArrayList&lt;&gt;(newCompactedfiles);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    markCompactedAway(newCompactedfiles);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    this.compactedfiles = sortCompactedfiles(updatedCompactedfiles);<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  // Mark the files as compactedAway once the storefiles and compactedfiles list is finalized<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  // Let a background thread close the actual reader on these compacted files and also<a name="line.148"></a>
+<span class="sourceLineNo">149</span>  // ensure to evict the blocks from block cache so that they are no longer in<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  // cache<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  private void markCompactedAway(Collection&lt;StoreFile&gt; compactedFiles) {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    for (StoreFile file : compactedFiles) {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      file.markCompactedAway();<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    }<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  }<a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>  @Override<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  public void removeCompactedFiles(Collection&lt;StoreFile&gt; removedCompactedfiles) throws IOException {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    ArrayList&lt;StoreFile&gt; updatedCompactedfiles = null;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    if (this.compactedfiles != null) {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      updatedCompactedfiles = new ArrayList&lt;&gt;(this.compactedfiles);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      updatedCompactedfiles.removeAll(removedCompactedfiles);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      this.compactedfiles = sortCompactedfiles(updatedCompactedfiles);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    }<a name="line.164"></a>
+<span class="sourceLineNo">165</span>  }<a name="line.165"></a>
+<span class="sourceLineNo">166</span><a name="line.166"></a>
+<span class="sourceLineNo">167</span>  @Override<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  public final Iterator&lt;StoreFile&gt; getCandidateFilesForRowKeyBefore(final KeyValue targetKey) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    return new ArrayList&lt;&gt;(Lists.reverse(this.storefiles)).iterator();<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  @Override<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  public Iterator&lt;StoreFile&gt; updateCandidateFilesForRowKeyBefore(<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      Iterator&lt;StoreFile&gt; candidateFiles, final KeyValue targetKey, final Cell candidate) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    // Default store has nothing useful to do here.<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    // TODO: move this comment when implementing Level:<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    // Level store can trim the list by range, removing all the files which cannot have<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    // any useful candidates less than "candidate".<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    return candidateFiles;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  }<a name="line.180"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span>  @Override<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  public final byte[] getSplitPoint() throws IOException {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    List&lt;StoreFile&gt; storefiles = this.storefiles;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    if (storefiles.isEmpty()) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      return null;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    Optional&lt;StoreFile&gt; largestFile = StoreUtils.getLargestFile(storefiles);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    return largestFile.isPresent()<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        ? StoreUtils.getFileSplitPoint(largestFile.get(), kvComparator).orElse(null) : null;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>  @Override<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  public final Collection&lt;StoreFile&gt; getFilesForScan(byte[] startRow, boolean includeStartRow,<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      byte[] stopRow, boolean includeStopRow) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // We cannot provide any useful input and already have the files sorted by seqNum.<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    return getStorefiles();<a name="line.197"></a>
+<span class="sourceLineNo">198</span>  }<a name="line.198"></a>
+<span class="sourceLineNo">199</span><a name="line.199"></a>
+<span class="sourceLineNo">200</span>  @Override<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  public int getStoreCompactionPriority() {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    int priority = blockingFileCount - storefiles.size();<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    return (priority == HStore.PRIORITY_USER) ? priority + 1 : priority;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>  }<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>  @Override<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  public Collection&lt;StoreFile&gt; getUnneededFiles(long maxTs, List&lt;StoreFile&gt; filesCompacting) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    Collection&lt;StoreFile&gt; expiredStoreFiles = null;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    ImmutableList&lt;StoreFile&gt; files = storefiles;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    // 1) We can never get rid of the last file which has the maximum seqid.<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    // 2) Files that are not the latest can't become one due to (1), so the rest are fair game.<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    for (int i = 0; i &lt; files.size() - 1; ++i) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      StoreFile sf = files.get(i);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      long fileTs = sf.getReader().getMaxTimestamp();<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      if (fileTs &lt; maxTs &amp;&amp; !filesCompacting.contains(sf)) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>        LOG.info("Found an expired store file: " + sf.getPath()<a name="line.216"></a>
+<span class="sourceLineNo">217</span>            + " whose maxTimeStamp is " + fileTs + ", which is below " + maxTs);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        if (expiredStoreFiles == null) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>          expiredStoreFiles = new ArrayList&lt;&gt;();<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        }<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        expiredStoreFiles.add(sf);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    }<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    return expiredStoreFiles;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>  private void sortAndSetStoreFiles(List&lt;StoreFile&gt; storeFiles) {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    Collections.sort(storeFiles, storeFileComparator);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    storefiles = ImmutableList.copyOf(storeFiles);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>  }<a name="line.230"></a>
+<span class="sourceLineNo">231</span><a name="line.231"></a>
+<span class="sourceLineNo">232</span>  private List&lt;StoreFile&gt; sortCompactedfiles(List&lt;StoreFile&gt; storefiles) {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    // Sorting may not be really needed here for the compacted files?<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    Collections.sort(storefiles, storeFileComparator);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    return new ArrayList&lt;&gt;(storefiles);<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
+<span class="sourceLineNo">237</span><a name="line.237"></a>
+<span class="sourceLineNo">238</span>  @Override<a name="line.238"></a>
+<span class="sourceLineNo">239</span>  public double getCompactionPressure() {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    int storefileCount = getStorefileCount();<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    int minFilesToCompact = comConf.getMinFilesToCompact();<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    if (storefileCount &lt;= minFilesToCompact) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      return 0.0;<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    }<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    return (double) (storefileCount - minFilesToCompact) / (blockingFileCount - minFilesToCompact);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>  }<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>  @Override<a name="line.248"></a>
+<span class="sourceLineNo">249</span>  public Comparator&lt;StoreFile&gt; getStoreFileComparator() {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    return storeFileComparator;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  }<a name="line.251"></a>
+<span class="sourceLineNo">252</span>}<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
 
 
 


[18/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
index 39f7e50..efccb82 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
@@ -33,10 +33,10 @@
 <span class="sourceLineNo">025</span>  requiredArguments = {<a name="line.25"></a>
 <span class="sourceLineNo">026</span>    @org.jamon.annotations.Argument(name = "regionServer", type = "HRegionServer")},<a name="line.26"></a>
 <span class="sourceLineNo">027</span>  optionalArguments = {<a name="line.27"></a>
-<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.28"></a>
-<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String"),<a name="line.29"></a>
-<span class="sourceLineNo">030</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String"),<a name="line.30"></a>
-<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "format", type = "String")})<a name="line.31"></a>
+<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String"),<a name="line.28"></a>
+<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.29"></a>
+<span class="sourceLineNo">030</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String"),<a name="line.30"></a>
+<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "filter", type = "String")})<a name="line.31"></a>
 <span class="sourceLineNo">032</span>public class RSStatusTmpl<a name="line.32"></a>
 <span class="sourceLineNo">033</span>  extends org.jamon.AbstractTemplateProxy<a name="line.33"></a>
 <span class="sourceLineNo">034</span>{<a name="line.34"></a>
@@ -77,74 +77,74 @@
 <span class="sourceLineNo">069</span>      return m_regionServer;<a name="line.69"></a>
 <span class="sourceLineNo">070</span>    }<a name="line.70"></a>
 <span class="sourceLineNo">071</span>    private HRegionServer m_regionServer;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    // 21, 1<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    public void setFilter(String filter)<a name="line.73"></a>
+<span class="sourceLineNo">072</span>    // 24, 1<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    public void setBcv(String bcv)<a name="line.73"></a>
 <span class="sourceLineNo">074</span>    {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      // 21, 1<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      m_filter = filter;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      m_filter__IsNotDefault = true;<a name="line.77"></a>
+<span class="sourceLineNo">075</span>      // 24, 1<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      m_bcv = bcv;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      m_bcv__IsNotDefault = true;<a name="line.77"></a>
 <span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    public String getFilter()<a name="line.79"></a>
+<span class="sourceLineNo">079</span>    public String getBcv()<a name="line.79"></a>
 <span class="sourceLineNo">080</span>    {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return m_filter;<a name="line.81"></a>
+<span class="sourceLineNo">081</span>      return m_bcv;<a name="line.81"></a>
 <span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    private String m_filter;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public boolean getFilter__IsNotDefault()<a name="line.84"></a>
+<span class="sourceLineNo">083</span>    private String m_bcv;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    public boolean getBcv__IsNotDefault()<a name="line.84"></a>
 <span class="sourceLineNo">085</span>    {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      return m_filter__IsNotDefault;<a name="line.86"></a>
+<span class="sourceLineNo">086</span>      return m_bcv__IsNotDefault;<a name="line.86"></a>
 <span class="sourceLineNo">087</span>    }<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    private boolean m_filter__IsNotDefault;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    // 23, 1<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    public void setBcn(String bcn)<a name="line.90"></a>
+<span class="sourceLineNo">088</span>    private boolean m_bcv__IsNotDefault;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    // 22, 1<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public void setFormat(String format)<a name="line.90"></a>
 <span class="sourceLineNo">091</span>    {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      // 23, 1<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      m_bcn = bcn;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      m_bcn__IsNotDefault = true;<a name="line.94"></a>
+<span class="sourceLineNo">092</span>      // 22, 1<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      m_format = format;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      m_format__IsNotDefault = true;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>    }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public String getBcn()<a name="line.96"></a>
+<span class="sourceLineNo">096</span>    public String getFormat()<a name="line.96"></a>
 <span class="sourceLineNo">097</span>    {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      return m_bcn;<a name="line.98"></a>
+<span class="sourceLineNo">098</span>      return m_format;<a name="line.98"></a>
 <span class="sourceLineNo">099</span>    }<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    private String m_bcn;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    public boolean getBcn__IsNotDefault()<a name="line.101"></a>
+<span class="sourceLineNo">100</span>    private String m_format;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    public boolean getFormat__IsNotDefault()<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      return m_bcn__IsNotDefault;<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      return m_format__IsNotDefault;<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    }<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    private boolean m_bcn__IsNotDefault;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    // 24, 1<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    public void setBcv(String bcv)<a name="line.107"></a>
+<span class="sourceLineNo">105</span>    private boolean m_format__IsNotDefault;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    // 23, 1<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    public void setBcn(String bcn)<a name="line.107"></a>
 <span class="sourceLineNo">108</span>    {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      // 24, 1<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      m_bcv = bcv;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      m_bcv__IsNotDefault = true;<a name="line.111"></a>
+<span class="sourceLineNo">109</span>      // 23, 1<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      m_bcn = bcn;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      m_bcn__IsNotDefault = true;<a name="line.111"></a>
 <span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    public String getBcv()<a name="line.113"></a>
+<span class="sourceLineNo">113</span>    public String getBcn()<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      return m_bcv;<a name="line.115"></a>
+<span class="sourceLineNo">115</span>      return m_bcn;<a name="line.115"></a>
 <span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    private String m_bcv;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public boolean getBcv__IsNotDefault()<a name="line.118"></a>
+<span class="sourceLineNo">117</span>    private String m_bcn;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    public boolean getBcn__IsNotDefault()<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_bcv__IsNotDefault;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_bcn__IsNotDefault;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private boolean m_bcv__IsNotDefault;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    // 22, 1<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    public void setFormat(String format)<a name="line.124"></a>
+<span class="sourceLineNo">122</span>    private boolean m_bcn__IsNotDefault;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    // 21, 1<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    public void setFilter(String filter)<a name="line.124"></a>
 <span class="sourceLineNo">125</span>    {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      // 22, 1<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      m_format = format;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      m_format__IsNotDefault = true;<a name="line.128"></a>
+<span class="sourceLineNo">126</span>      // 21, 1<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      m_filter = filter;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      m_filter__IsNotDefault = true;<a name="line.128"></a>
 <span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    public String getFormat()<a name="line.130"></a>
+<span class="sourceLineNo">130</span>    public String getFilter()<a name="line.130"></a>
 <span class="sourceLineNo">131</span>    {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      return m_format;<a name="line.132"></a>
+<span class="sourceLineNo">132</span>      return m_filter;<a name="line.132"></a>
 <span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    private String m_format;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    public boolean getFormat__IsNotDefault()<a name="line.135"></a>
+<span class="sourceLineNo">134</span>    private String m_filter;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    public boolean getFilter__IsNotDefault()<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      return m_format__IsNotDefault;<a name="line.137"></a>
+<span class="sourceLineNo">137</span>      return m_filter__IsNotDefault;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    private boolean m_format__IsNotDefault;<a name="line.139"></a>
+<span class="sourceLineNo">139</span>    private boolean m_filter__IsNotDefault;<a name="line.139"></a>
 <span class="sourceLineNo">140</span>  }<a name="line.140"></a>
 <span class="sourceLineNo">141</span>  @Override<a name="line.141"></a>
 <span class="sourceLineNo">142</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.142"></a>
@@ -156,31 +156,31 @@
 <span class="sourceLineNo">148</span>    return (ImplData) super.getImplData();<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>  protected String filter;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.152"></a>
+<span class="sourceLineNo">151</span>  protected String bcv;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.152"></a>
 <span class="sourceLineNo">153</span>  {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    (getImplData()).setFilter(p_filter);<a name="line.154"></a>
+<span class="sourceLineNo">154</span>    (getImplData()).setBcv(p_bcv);<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    return this;<a name="line.155"></a>
 <span class="sourceLineNo">156</span>  }<a name="line.156"></a>
 <span class="sourceLineNo">157</span>  <a name="line.157"></a>
-<span class="sourceLineNo">158</span>  protected String bcn;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.159"></a>
+<span class="sourceLineNo">158</span>  protected String format;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFormat(String p_format)<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    (getImplData()).setBcn(p_bcn);<a name="line.161"></a>
+<span class="sourceLineNo">161</span>    (getImplData()).setFormat(p_format);<a name="line.161"></a>
 <span class="sourceLineNo">162</span>    return this;<a name="line.162"></a>
 <span class="sourceLineNo">163</span>  }<a name="line.163"></a>
 <span class="sourceLineNo">164</span>  <a name="line.164"></a>
-<span class="sourceLineNo">165</span>  protected String bcv;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.166"></a>
+<span class="sourceLineNo">165</span>  protected String bcn;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.166"></a>
 <span class="sourceLineNo">167</span>  {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    (getImplData()).setBcv(p_bcv);<a name="line.168"></a>
+<span class="sourceLineNo">168</span>    (getImplData()).setBcn(p_bcn);<a name="line.168"></a>
 <span class="sourceLineNo">169</span>    return this;<a name="line.169"></a>
 <span class="sourceLineNo">170</span>  }<a name="line.170"></a>
 <span class="sourceLineNo">171</span>  <a name="line.171"></a>
-<span class="sourceLineNo">172</span>  protected String format;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFormat(String p_format)<a name="line.173"></a>
+<span class="sourceLineNo">172</span>  protected String filter;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.173"></a>
 <span class="sourceLineNo">174</span>  {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    (getImplData()).setFormat(p_format);<a name="line.175"></a>
+<span class="sourceLineNo">175</span>    (getImplData()).setFilter(p_filter);<a name="line.175"></a>
 <span class="sourceLineNo">176</span>    return this;<a name="line.176"></a>
 <span class="sourceLineNo">177</span>  }<a name="line.177"></a>
 <span class="sourceLineNo">178</span>  <a name="line.178"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
index c5c8c04..63ba337 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
@@ -34,27 +34,27 @@
 <span class="sourceLineNo">026</span><a name="line.26"></a>
 <span class="sourceLineNo">027</span>{<a name="line.27"></a>
 <span class="sourceLineNo">028</span>  private final HRegionServer regionServer;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>  private final String filter;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>  private final String bcn;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>  private final String bcv;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>  private final String format;<a name="line.32"></a>
+<span class="sourceLineNo">029</span>  private final String bcv;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>  private final String format;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>  private final String bcn;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>  private final String filter;<a name="line.32"></a>
 <span class="sourceLineNo">033</span>  protected static org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl.ImplData p_implData)<a name="line.33"></a>
 <span class="sourceLineNo">034</span>  {<a name="line.34"></a>
-<span class="sourceLineNo">035</span>    if(! p_implData.getFilter__IsNotDefault())<a name="line.35"></a>
+<span class="sourceLineNo">035</span>    if(! p_implData.getBcv__IsNotDefault())<a name="line.35"></a>
 <span class="sourceLineNo">036</span>    {<a name="line.36"></a>
-<span class="sourceLineNo">037</span>      p_implData.setFilter("general");<a name="line.37"></a>
+<span class="sourceLineNo">037</span>      p_implData.setBcv("");<a name="line.37"></a>
 <span class="sourceLineNo">038</span>    }<a name="line.38"></a>
-<span class="sourceLineNo">039</span>    if(! p_implData.getBcn__IsNotDefault())<a name="line.39"></a>
+<span class="sourceLineNo">039</span>    if(! p_implData.getFormat__IsNotDefault())<a name="line.39"></a>
 <span class="sourceLineNo">040</span>    {<a name="line.40"></a>
-<span class="sourceLineNo">041</span>      p_implData.setBcn("");<a name="line.41"></a>
+<span class="sourceLineNo">041</span>      p_implData.setFormat("html");<a name="line.41"></a>
 <span class="sourceLineNo">042</span>    }<a name="line.42"></a>
-<span class="sourceLineNo">043</span>    if(! p_implData.getBcv__IsNotDefault())<a name="line.43"></a>
+<span class="sourceLineNo">043</span>    if(! p_implData.getBcn__IsNotDefault())<a name="line.43"></a>
 <span class="sourceLineNo">044</span>    {<a name="line.44"></a>
-<span class="sourceLineNo">045</span>      p_implData.setBcv("");<a name="line.45"></a>
+<span class="sourceLineNo">045</span>      p_implData.setBcn("");<a name="line.45"></a>
 <span class="sourceLineNo">046</span>    }<a name="line.46"></a>
-<span class="sourceLineNo">047</span>    if(! p_implData.getFormat__IsNotDefault())<a name="line.47"></a>
+<span class="sourceLineNo">047</span>    if(! p_implData.getFilter__IsNotDefault())<a name="line.47"></a>
 <span class="sourceLineNo">048</span>    {<a name="line.48"></a>
-<span class="sourceLineNo">049</span>      p_implData.setFormat("html");<a name="line.49"></a>
+<span class="sourceLineNo">049</span>      p_implData.setFilter("general");<a name="line.49"></a>
 <span class="sourceLineNo">050</span>    }<a name="line.50"></a>
 <span class="sourceLineNo">051</span>    return p_implData;<a name="line.51"></a>
 <span class="sourceLineNo">052</span>  }<a name="line.52"></a>
@@ -62,10 +62,10 @@
 <span class="sourceLineNo">054</span>  {<a name="line.54"></a>
 <span class="sourceLineNo">055</span>    super(p_templateManager, __jamon_setOptionalArguments(p_implData));<a name="line.55"></a>
 <span class="sourceLineNo">056</span>    regionServer = p_implData.getRegionServer();<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    filter = p_implData.getFilter();<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    bcn = p_implData.getBcn();<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    bcv = p_implData.getBcv();<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    format = p_implData.getFormat();<a name="line.60"></a>
+<span class="sourceLineNo">057</span>    bcv = p_implData.getBcv();<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    format = p_implData.getFormat();<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    bcn = p_implData.getBcn();<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    filter = p_implData.getFilter();<a name="line.60"></a>
 <span class="sourceLineNo">061</span>  }<a name="line.61"></a>
 <span class="sourceLineNo">062</span>  <a name="line.62"></a>
 <span class="sourceLineNo">063</span>  @Override public void renderNoFlush(final java.io.Writer jamonWriter)<a name="line.63"></a>
@@ -94,8 +94,8 @@
 <span class="sourceLineNo">086</span>      // 41, 3<a name="line.86"></a>
 <span class="sourceLineNo">087</span>      {<a name="line.87"></a>
 <span class="sourceLineNo">088</span>        org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl __jamon__var_7 = new org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl(this.getTemplateManager());<a name="line.88"></a>
-<span class="sourceLineNo">089</span>        __jamon__var_7.setFormat("json" );<a name="line.89"></a>
-<span class="sourceLineNo">090</span>        __jamon__var_7.setFilter(filter);<a name="line.90"></a>
+<span class="sourceLineNo">089</span>        __jamon__var_7.setFilter(filter);<a name="line.89"></a>
+<span class="sourceLineNo">090</span>        __jamon__var_7.setFormat("json" );<a name="line.90"></a>
 <span class="sourceLineNo">091</span>        __jamon__var_7.renderNoFlush(jamonWriter);<a name="line.91"></a>
 <span class="sourceLineNo">092</span>      }<a name="line.92"></a>
 <span class="sourceLineNo">093</span>      // 41, 68<a name="line.93"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index 1939b74..5591e51 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -336,7 +336,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: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-annotations/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/checkstyle.html b/hbase-annotations/checkstyle.html
index d8448a5..d37a038 100644
--- a/hbase-annotations/checkstyle.html
+++ b/hbase-annotations/checkstyle.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-annotations/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependencies.html b/hbase-annotations/dependencies.html
index 8498ece..74d1389 100644
--- a/hbase-annotations/dependencies.html
+++ b/hbase-annotations/dependencies.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-annotations/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-convergence.html b/hbase-annotations/dependency-convergence.html
index 0be26dc..8a42eb5 100644
--- a/hbase-annotations/dependency-convergence.html
+++ b/hbase-annotations/dependency-convergence.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-annotations/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-info.html b/hbase-annotations/dependency-info.html
index b235743..0ca2918 100644
--- a/hbase-annotations/dependency-info.html
+++ b/hbase-annotations/dependency-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-annotations/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-management.html b/hbase-annotations/dependency-management.html
index d45b61e..be494f4 100644
--- a/hbase-annotations/dependency-management.html
+++ b/hbase-annotations/dependency-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-annotations/index.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/index.html b/hbase-annotations/index.html
index 3432dba..241e4fc 100644
--- a/hbase-annotations/index.html
+++ b/hbase-annotations/index.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-annotations/integration.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/integration.html b/hbase-annotations/integration.html
index ccedecf..aa5af9e 100644
--- a/hbase-annotations/integration.html
+++ b/hbase-annotations/integration.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-annotations/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/issue-tracking.html b/hbase-annotations/issue-tracking.html
index 00cf655..81e9176 100644
--- a/hbase-annotations/issue-tracking.html
+++ b/hbase-annotations/issue-tracking.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-annotations/license.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/license.html b/hbase-annotations/license.html
index 923e7ac..df2b45c 100644
--- a/hbase-annotations/license.html
+++ b/hbase-annotations/license.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-annotations/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/mail-lists.html b/hbase-annotations/mail-lists.html
index 694f83f..504f62b 100644
--- a/hbase-annotations/mail-lists.html
+++ b/hbase-annotations/mail-lists.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-annotations/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/plugin-management.html b/hbase-annotations/plugin-management.html
index 6f9ca92..efe5fd3 100644
--- a/hbase-annotations/plugin-management.html
+++ b/hbase-annotations/plugin-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-annotations/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/plugins.html b/hbase-annotations/plugins.html
index f66bf1a..d7767ee 100644
--- a/hbase-annotations/plugins.html
+++ b/hbase-annotations/plugins.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-annotations/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-info.html b/hbase-annotations/project-info.html
index 29a16c5..29c6405 100644
--- a/hbase-annotations/project-info.html
+++ b/hbase-annotations/project-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-annotations/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-reports.html b/hbase-annotations/project-reports.html
index 24055b5..1e2ad09 100644
--- a/hbase-annotations/project-reports.html
+++ b/hbase-annotations/project-reports.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-annotations/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-summary.html b/hbase-annotations/project-summary.html
index a5d138a..93c966d 100644
--- a/hbase-annotations/project-summary.html
+++ b/hbase-annotations/project-summary.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-annotations/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/source-repository.html b/hbase-annotations/source-repository.html
index 460d46c..f7491f9 100644
--- a/hbase-annotations/source-repository.html
+++ b/hbase-annotations/source-repository.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-annotations/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/team-list.html b/hbase-annotations/team-list.html
index 5fa2a59..1f477ed 100644
--- a/hbase-annotations/team-list.html
+++ b/hbase-annotations/team-list.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/dependencies.html b/hbase-archetypes/dependencies.html
index 3df5eca..9108add 100644
--- a/hbase-archetypes/dependencies.html
+++ b/hbase-archetypes/dependencies.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/dependency-convergence.html b/hbase-archetypes/dependency-convergence.html
index b6031b9..69c2e52 100644
--- a/hbase-archetypes/dependency-convergence.html
+++ b/hbase-archetypes/dependency-convergence.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/dependency-info.html b/hbase-archetypes/dependency-info.html
index b64ef4e..331f15c 100644
--- a/hbase-archetypes/dependency-info.html
+++ b/hbase-archetypes/dependency-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/dependency-management.html b/hbase-archetypes/dependency-management.html
index 7051b80..08404f2 100644
--- a/hbase-archetypes/dependency-management.html
+++ b/hbase-archetypes/dependency-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-archetype-builder/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/dependencies.html b/hbase-archetypes/hbase-archetype-builder/dependencies.html
index a132c6a..32db470 100644
--- a/hbase-archetypes/hbase-archetype-builder/dependencies.html
+++ b/hbase-archetypes/hbase-archetype-builder/dependencies.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html b/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
index 6128cb3..dbce44c 100644
--- a/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
+++ b/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-archetype-builder/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/dependency-info.html b/hbase-archetypes/hbase-archetype-builder/dependency-info.html
index d5e8ea0..834611d 100644
--- a/hbase-archetypes/hbase-archetype-builder/dependency-info.html
+++ b/hbase-archetypes/hbase-archetype-builder/dependency-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-archetype-builder/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/dependency-management.html b/hbase-archetypes/hbase-archetype-builder/dependency-management.html
index 3ff2ba5..6309698 100644
--- a/hbase-archetypes/hbase-archetype-builder/dependency-management.html
+++ b/hbase-archetypes/hbase-archetype-builder/dependency-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-archetype-builder/index.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/index.html b/hbase-archetypes/hbase-archetype-builder/index.html
index 7cbd049..c81878a 100644
--- a/hbase-archetypes/hbase-archetype-builder/index.html
+++ b/hbase-archetypes/hbase-archetype-builder/index.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-archetype-builder/integration.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/integration.html b/hbase-archetypes/hbase-archetype-builder/integration.html
index 6c5757b..ba1688c 100644
--- a/hbase-archetypes/hbase-archetype-builder/integration.html
+++ b/hbase-archetypes/hbase-archetype-builder/integration.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/issue-tracking.html b/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
index cb1c761..b90212b 100644
--- a/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
+++ b/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-archetype-builder/license.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/license.html b/hbase-archetypes/hbase-archetype-builder/license.html
index fd278a5..d959c37 100644
--- a/hbase-archetypes/hbase-archetype-builder/license.html
+++ b/hbase-archetypes/hbase-archetype-builder/license.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-archetype-builder/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/mail-lists.html b/hbase-archetypes/hbase-archetype-builder/mail-lists.html
index 14ce9e2..167f4d9 100644
--- a/hbase-archetypes/hbase-archetype-builder/mail-lists.html
+++ b/hbase-archetypes/hbase-archetype-builder/mail-lists.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-archetype-builder/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/plugin-management.html b/hbase-archetypes/hbase-archetype-builder/plugin-management.html
index 55115f3..e4e4bc0 100644
--- a/hbase-archetypes/hbase-archetype-builder/plugin-management.html
+++ b/hbase-archetypes/hbase-archetype-builder/plugin-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-archetype-builder/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/plugins.html b/hbase-archetypes/hbase-archetype-builder/plugins.html
index bc254e1..0dd1f0a 100644
--- a/hbase-archetypes/hbase-archetype-builder/plugins.html
+++ b/hbase-archetypes/hbase-archetype-builder/plugins.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-archetype-builder/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/project-info.html b/hbase-archetypes/hbase-archetype-builder/project-info.html
index 3b066de..3561bb6 100644
--- a/hbase-archetypes/hbase-archetype-builder/project-info.html
+++ b/hbase-archetypes/hbase-archetype-builder/project-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-archetype-builder/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/project-summary.html b/hbase-archetypes/hbase-archetype-builder/project-summary.html
index a590428..f79424a 100644
--- a/hbase-archetypes/hbase-archetype-builder/project-summary.html
+++ b/hbase-archetypes/hbase-archetype-builder/project-summary.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-archetype-builder/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/source-repository.html b/hbase-archetypes/hbase-archetype-builder/source-repository.html
index 25d3224..129a8b0 100644
--- a/hbase-archetypes/hbase-archetype-builder/source-repository.html
+++ b/hbase-archetypes/hbase-archetype-builder/source-repository.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-archetype-builder/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/team-list.html b/hbase-archetypes/hbase-archetype-builder/team-list.html
index 36d3c46..6139f0c 100644
--- a/hbase-archetypes/hbase-archetype-builder/team-list.html
+++ b/hbase-archetypes/hbase-archetype-builder/team-list.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-client-project/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/checkstyle.html b/hbase-archetypes/hbase-client-project/checkstyle.html
index e380d3e..2200ee2 100644
--- a/hbase-archetypes/hbase-client-project/checkstyle.html
+++ b/hbase-archetypes/hbase-client-project/checkstyle.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-client-project/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/dependencies.html b/hbase-archetypes/hbase-client-project/dependencies.html
index 59818ca..da4b0c6 100644
--- a/hbase-archetypes/hbase-client-project/dependencies.html
+++ b/hbase-archetypes/hbase-client-project/dependencies.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>
@@ -4045,7 +4045,7 @@ built on Jackson JSON processor</p>
 <th>Sealed</th></tr>
 <tr class="b">
 <td>149</td>
-<td>73.74 MB</td>
+<td>73.75 MB</td>
 <td>37,994</td>
 <td>33,650</td>
 <td>1,553</td>


[04/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html
index a1d9f98..9ce2441 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html
@@ -28,1446 +28,1556 @@
 <span class="sourceLineNo">020</span>package org.apache.hadoop.hbase.regionserver;<a name="line.20"></a>
 <span class="sourceLineNo">021</span><a name="line.21"></a>
 <span class="sourceLineNo">022</span>import static org.junit.Assert.assertEquals;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.junit.Assert.assertNull;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.junit.Assert.assertTrue;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import static org.mockito.Matchers.any;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import static org.mockito.Mockito.spy;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import static org.mockito.Mockito.times;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import static org.mockito.Mockito.verify;<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.io.IOException;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.lang.ref.SoftReference;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.security.PrivilegedExceptionAction;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.ArrayList;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.Arrays;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.Collection;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.Collections;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.Iterator;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.List;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.ListIterator;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import java.util.NavigableSet;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import java.util.TreeSet;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import java.util.concurrent.ConcurrentSkipListSet;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.concurrent.CountDownLatch;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import java.util.concurrent.ExecutorService;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import java.util.concurrent.Executors;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import java.util.concurrent.TimeUnit;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.util.function.Consumer;<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.commons.logging.Log;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.commons.logging.LogFactory;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.fs.FileStatus;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FileSystem;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FilterFileSystem;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.LocalFileSystem;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.Path;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.permission.FsPermission;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.Cell;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HConstants;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.TableName;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Get;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.security.User;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.util.Progressable;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.junit.After;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.junit.Assert;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.junit.Before;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.junit.Rule;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.junit.Test;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.junit.experimental.categories.Category;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.junit.rules.TestName;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.mockito.Mockito;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>import com.google.common.collect.Lists;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>/**<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * Test class for the Store<a name="line.110"></a>
-<span class="sourceLineNo">111</span> */<a name="line.111"></a>
-<span class="sourceLineNo">112</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.112"></a>
-<span class="sourceLineNo">113</span>public class TestStore {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private static final Log LOG = LogFactory.getLog(TestStore.class);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  @Rule public TestName name = new TestName();<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  HStore store;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  byte [] table = Bytes.toBytes("table");<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  byte [] family = Bytes.toBytes("family");<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  byte [] row = Bytes.toBytes("row");<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  byte [] row2 = Bytes.toBytes("row2");<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  byte [] qf1 = Bytes.toBytes("qf1");<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  byte [] qf2 = Bytes.toBytes("qf2");<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  byte [] qf3 = Bytes.toBytes("qf3");<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  byte [] qf4 = Bytes.toBytes("qf4");<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  byte [] qf5 = Bytes.toBytes("qf5");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  byte [] qf6 = Bytes.toBytes("qf6");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  NavigableSet&lt;byte[]&gt; qualifiers = new ConcurrentSkipListSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  List&lt;Cell&gt; expected = new ArrayList&lt;&gt;();<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  List&lt;Cell&gt; result = new ArrayList&lt;&gt;();<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  long id = System.currentTimeMillis();<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  Get get = new Get(row);<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private final String DIR = TEST_UTIL.getDataTestDir("TestStore").toString();<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertFalse;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.junit.Assert.assertNull;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.junit.Assert.assertTrue;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import static org.mockito.Matchers.any;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import static org.mockito.Mockito.spy;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import static org.mockito.Mockito.times;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import static org.mockito.Mockito.verify;<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.io.IOException;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.lang.ref.SoftReference;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.security.PrivilegedExceptionAction;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.ArrayList;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.Arrays;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Collection;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.Collections;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.Iterator;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.List;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import java.util.ListIterator;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import java.util.NavigableSet;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import java.util.TreeSet;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import java.util.concurrent.ConcurrentSkipListSet;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.concurrent.CountDownLatch;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.ExecutorService;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import java.util.concurrent.Executors;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import java.util.concurrent.TimeUnit;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import java.util.function.Consumer;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.commons.logging.Log;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.commons.logging.LogFactory;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.conf.Configuration;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FileStatus;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.FileSystem;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.FilterFileSystem;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.LocalFileSystem;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.Path;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.fs.permission.FsPermission;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.Cell;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HConstants;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.TableName;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Get;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.security.User;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.util.Progressable;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.junit.After;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.junit.Assert;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.junit.Before;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.junit.Rule;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.junit.Test;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.junit.experimental.categories.Category;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.junit.rules.TestName;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.mockito.Mockito;<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>import com.google.common.collect.Lists;<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> * Test class for the Store<a name="line.111"></a>
+<span class="sourceLineNo">112</span> */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.113"></a>
+<span class="sourceLineNo">114</span>public class TestStore {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static final Log LOG = LogFactory.getLog(TestStore.class);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  @Rule public TestName name = new TestName();<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  HStore store;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  byte [] table = Bytes.toBytes("table");<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  byte [] family = Bytes.toBytes("family");<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>  byte [] row = Bytes.toBytes("row");<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  byte [] row2 = Bytes.toBytes("row2");<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  byte [] qf1 = Bytes.toBytes("qf1");<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  byte [] qf2 = Bytes.toBytes("qf2");<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  byte [] qf3 = Bytes.toBytes("qf3");<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  byte [] qf4 = Bytes.toBytes("qf4");<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  byte [] qf5 = Bytes.toBytes("qf5");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  byte [] qf6 = Bytes.toBytes("qf6");<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  NavigableSet&lt;byte[]&gt; qualifiers = new ConcurrentSkipListSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  List&lt;Cell&gt; expected = new ArrayList&lt;&gt;();<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  List&lt;Cell&gt; result = new ArrayList&lt;&gt;();<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  long id = System.currentTimeMillis();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  Get get = new Get(row);<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private final String DIR = TEST_UTIL.getDataTestDir("TestStore").toString();<a name="line.140"></a>
 <span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  /**<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * Setup<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * @throws IOException<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  @Before<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  public void setUp() throws IOException {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    qualifiers.add(qf1);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    qualifiers.add(qf3);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    qualifiers.add(qf5);<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>    Iterator&lt;byte[]&gt; iter = qualifiers.iterator();<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    while(iter.hasNext()){<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      byte [] next = iter.next();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      expected.add(new KeyValue(row, family, next, 1, (byte[])null));<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      get.addColumn(family, next);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>  private void init(String methodName) throws IOException {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    init(methodName, TEST_UTIL.getConfiguration());<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  private void init(String methodName, Configuration conf)<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  throws IOException {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    // some of the tests write 4 versions and then flush<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    // (with HBASE-4241, lower versions are collected on flush)<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    hcd.setMaxVersions(4);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    init(methodName, conf, hcd);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  private void init(String methodName, Configuration conf,<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      HColumnDescriptor hcd) throws IOException {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(table));<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    init(methodName, conf, htd, hcd);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  }<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      HColumnDescriptor hcd) throws IOException {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    return init(methodName, conf, htd, hcd, null);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  @SuppressWarnings("deprecation")<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      HColumnDescriptor hcd, MyScannerHook hook) throws IOException {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    //Setting up a Store<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    Path basedir = new Path(DIR+methodName);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    Path tableDir = FSUtils.getTableDir(basedir, htd.getTableName());<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    final Path logdir = new Path(basedir, AbstractFSWALProvider.getWALDirectoryName(methodName));<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>    FileSystem fs = FileSystem.get(conf);<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>    fs.delete(logdir, true);<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>    if (htd.hasFamily(hcd.getName())) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      htd.modifyFamily(hcd);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    } else {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      htd.addFamily(hcd);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false, MemStoreLABImpl.CHUNK_SIZE_DEFAULT, 1, 0, null);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    final Configuration walConf = new Configuration(conf);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    FSUtils.setRootDir(walConf, basedir);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    final WALFactory wals = new WALFactory(walConf, null, methodName);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    HRegion region = new HRegion(tableDir, wals.getWAL(info.getEncodedNameAsBytes(),<a name="line.206"></a>
-<span class="sourceLineNo">207</span>            info.getTable().getNamespace()), fs, conf, info, htd, null);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    if (hook == null) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      store = new HStore(region, hcd, conf);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    } else {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      store = new MyStore(region, hcd, conf, hook);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    return store;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  }<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  /**<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * Test we do not lose data if we fail a flush and then close.<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * Part of HBase-10466<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * @throws Exception<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   */<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  @Test<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  public void testFlushSizeAccounting() throws Exception {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    LOG.info("Setting up a faulty file system that cannot write in " +<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      this.name.getMethodName());<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    // Only retry once.<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    conf.setInt("hbase.hstore.flush.retries.number", 1);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    User user = User.createUserForTesting(conf, this.name.getMethodName(),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      new String[]{"foo"});<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // Inject our faulty LocalFileSystem<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    conf.setClass("fs.file.impl", FaultyFileSystem.class, FileSystem.class);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    user.runAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      public Object run() throws Exception {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        // Make sure it worked (above is sensitive to caching details in hadoop core)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        FileSystem fs = FileSystem.get(conf);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        Assert.assertEquals(FaultyFileSystem.class, fs.getClass());<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        FaultyFileSystem ffs = (FaultyFileSystem)fs;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>        // Initialize region<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        init(name.getMethodName(), conf);<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span>        MemstoreSize size = store.memstore.getFlushableSize();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        Assert.assertEquals(0, size.getDataSize());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        LOG.info("Adding some data");<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        MemstoreSize kvSize = new MemstoreSize();<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        store.add(new KeyValue(row, family, qf1, 1, (byte[])null), kvSize);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        size = store.memstore.getFlushableSize();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        Assert.assertEquals(kvSize, size);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        // Flush.  Bug #1 from HBASE-10466.  Make sure size calculation on failed flush is right.<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        try {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          LOG.info("Flushing");<a name="line.252"></a>
-<span class="sourceLineNo">253</span>          flushStore(store, id++);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          Assert.fail("Didn't bubble up IOE!");<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        } catch (IOException ioe) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>          Assert.assertTrue(ioe.getMessage().contains("Fault injected"));<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        size = store.memstore.getFlushableSize();<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        Assert.assertEquals(kvSize, size);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        MemstoreSize kvSize2 = new MemstoreSize();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        store.add(new KeyValue(row, family, qf2, 2, (byte[])null), kvSize2);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        // Even though we add a new kv, we expect the flushable size to be 'same' since we have<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        // not yet cleared the snapshot -- the above flush failed.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        Assert.assertEquals(kvSize, size);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        ffs.fault.set(false);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        flushStore(store, id++);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        size = store.memstore.getFlushableSize();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        // Size should be the foreground kv size.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        Assert.assertEquals(kvSize2, size);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        flushStore(store, id++);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        size = store.memstore.getFlushableSize();<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        assertEquals(0, size.getDataSize());<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        assertEquals(0, size.getHeapSize());<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        return null;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    });<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  }<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  /**<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   * Verify that compression and data block encoding are respected by the<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * Store.createWriterInTmp() method, used on store flush.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   */<a name="line.282"></a>
-<span class="sourceLineNo">283</span>  @Test<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  public void testCreateWriter() throws Exception {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    Configuration conf = HBaseConfiguration.create();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    FileSystem fs = FileSystem.get(conf);<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    hcd.setCompressionType(Compression.Algorithm.GZ);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    hcd.setDataBlockEncoding(DataBlockEncoding.DIFF);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    init(name.getMethodName(), conf, hcd);<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>    // Test createWriterInTmp()<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    StoreFileWriter writer = store.createWriterInTmp(4, hcd.getCompressionType(), false, true, false);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    Path path = writer.getPath();<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    writer.append(new KeyValue(row, family, qf1, Bytes.toBytes(1)));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    writer.append(new KeyValue(row, family, qf2, Bytes.toBytes(2)));<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    writer.append(new KeyValue(row2, family, qf1, Bytes.toBytes(3)));<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    writer.append(new KeyValue(row2, family, qf2, Bytes.toBytes(4)));<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    writer.close();<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>    // Verify that compression and encoding settings are respected<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    HFile.Reader reader = HFile.createReader(fs, path, new CacheConfig(conf), true, conf);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    Assert.assertEquals(hcd.getCompressionType(), reader.getCompressionAlgorithm());<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    Assert.assertEquals(hcd.getDataBlockEncoding(), reader.getDataBlockEncoding());<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    reader.close();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  /**<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * Setup<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * @throws IOException<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   */<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  @Before<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  public void setUp() throws IOException {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    qualifiers.add(qf1);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    qualifiers.add(qf3);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    qualifiers.add(qf5);<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    Iterator&lt;byte[]&gt; iter = qualifiers.iterator();<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    while(iter.hasNext()){<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      byte [] next = iter.next();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      expected.add(new KeyValue(row, family, next, 1, (byte[])null));<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      get.addColumn(family, next);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>  private void init(String methodName) throws IOException {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    init(methodName, TEST_UTIL.getConfiguration());<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  private Store init(String methodName, Configuration conf)<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  throws IOException {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    // some of the tests write 4 versions and then flush<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    // (with HBASE-4241, lower versions are collected on flush)<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    hcd.setMaxVersions(4);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    return init(methodName, conf, hcd);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>  private Store init(String methodName, Configuration conf,<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      HColumnDescriptor hcd) throws IOException {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(table));<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    return init(methodName, conf, htd, hcd);<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>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      HColumnDescriptor hcd) throws IOException {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    return init(methodName, conf, htd, hcd, null);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @SuppressWarnings("deprecation")<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      HColumnDescriptor hcd, MyScannerHook hook) throws IOException {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    return init(methodName, conf, htd, hcd, hook, false);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  @SuppressWarnings("deprecation")<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      HColumnDescriptor hcd, MyScannerHook hook, boolean switchToPread) throws IOException {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    //Setting up a Store<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    Path basedir = new Path(DIR+methodName);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    Path tableDir = FSUtils.getTableDir(basedir, htd.getTableName());<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    final Path logdir = new Path(basedir, AbstractFSWALProvider.getWALDirectoryName(methodName));<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>    FileSystem fs = FileSystem.get(conf);<a name="line.198"></a>
+<span class="sourceLineNo">199</span><a name="line.199"></a>
+<span class="sourceLineNo">200</span>    fs.delete(logdir, true);<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    if (htd.hasFamily(hcd.getName())) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      htd.modifyFamily(hcd);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    } else {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      htd.addFamily(hcd);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false,<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      MemStoreLABImpl.CHUNK_SIZE_DEFAULT, 1, 0, null);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    final Configuration walConf = new Configuration(conf);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    FSUtils.setRootDir(walConf, basedir);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    final WALFactory wals = new WALFactory(walConf, null, methodName);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    HRegion region = new HRegion(tableDir, wals.getWAL(info.getEncodedNameAsBytes(),<a name="line.213"></a>
+<span class="sourceLineNo">214</span>            info.getTable().getNamespace()), fs, conf, info, htd, null);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    if (hook == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      store = new HStore(region, hcd, conf);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    } else {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      store = new MyStore(region, hcd, conf, hook, switchToPread);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    return store;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  /**<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * Test we do not lose data if we fail a flush and then close.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * Part of HBase-10466<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   * @throws Exception<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   */<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  @Test<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  public void testFlushSizeAccounting() throws Exception {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    LOG.info("Setting up a faulty file system that cannot write in " +<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      this.name.getMethodName());<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    // Only retry once.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    conf.setInt("hbase.hstore.flush.retries.number", 1);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    User user = User.createUserForTesting(conf, this.name.getMethodName(),<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      new String[]{"foo"});<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    // Inject our faulty LocalFileSystem<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    conf.setClass("fs.file.impl", FaultyFileSystem.class, FileSystem.class);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    user.runAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      @Override<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      public Object run() throws Exception {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        // Make sure it worked (above is sensitive to caching details in hadoop core)<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        FileSystem fs = FileSystem.get(conf);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        Assert.assertEquals(FaultyFileSystem.class, fs.getClass());<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        FaultyFileSystem ffs = (FaultyFileSystem)fs;<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>        // Initialize region<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        init(name.getMethodName(), conf);<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>        MemstoreSize size = store.memstore.getFlushableSize();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        Assert.assertEquals(0, size.getDataSize());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        LOG.info("Adding some data");<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        MemstoreSize kvSize = new MemstoreSize();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        store.add(new KeyValue(row, family, qf1, 1, (byte[])null), kvSize);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        size = store.memstore.getFlushableSize();<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        Assert.assertEquals(kvSize, size);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        // Flush.  Bug #1 from HBASE-10466.  Make sure size calculation on failed flush is right.<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        try {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          LOG.info("Flushing");<a name="line.259"></a>
+<span class="sourceLineNo">260</span>          flushStore(store, id++);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>          Assert.fail("Didn't bubble up IOE!");<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        } catch (IOException ioe) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          Assert.assertTrue(ioe.getMessage().contains("Fault injected"));<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        size = store.memstore.getFlushableSize();<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        Assert.assertEquals(kvSize, size);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        MemstoreSize kvSize2 = new MemstoreSize();<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        store.add(new KeyValue(row, family, qf2, 2, (byte[])null), kvSize2);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        // Even though we add a new kv, we expect the flushable size to be 'same' since we have<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        // not yet cleared the snapshot -- the above flush failed.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        Assert.assertEquals(kvSize, size);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        ffs.fault.set(false);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        flushStore(store, id++);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        size = store.memstore.getFlushableSize();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        // Size should be the foreground kv size.<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        Assert.assertEquals(kvSize2, size);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        flushStore(store, id++);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        size = store.memstore.getFlushableSize();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        assertEquals(0, size.getDataSize());<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        assertEquals(0, size.getHeapSize());<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        return null;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    });<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  }<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>  /**<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * Verify that compression and data block encoding are respected by the<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * Store.createWriterInTmp() method, used on store flush.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   */<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  @Test<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  public void testCreateWriter() throws Exception {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    Configuration conf = HBaseConfiguration.create();<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    FileSystem fs = FileSystem.get(conf);<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    hcd.setCompressionType(Compression.Algorithm.GZ);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    hcd.setDataBlockEncoding(DataBlockEncoding.DIFF);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    init(name.getMethodName(), conf, hcd);<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // Test createWriterInTmp()<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    StoreFileWriter writer = store.createWriterInTmp(4, hcd.getCompressionType(), false, true, false);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    Path path = writer.getPath();<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    writer.append(new KeyValue(row, family, qf1, Bytes.toBytes(1)));<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    writer.append(new KeyValue(row, family, qf2, Bytes.toBytes(2)));<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    writer.append(new KeyValue(row2, family, qf1, Bytes.toBytes(3)));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    writer.append(new KeyValue(row2, family, qf2, Bytes.toBytes(4)));<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    writer.close();<a name="line.307"></a>
 <span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  @Test<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  public void testDeleteExpiredStoreFiles() throws Exception {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    testDeleteExpiredStoreFiles(0);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    testDeleteExpiredStoreFiles(1);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  /*<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * @param minVersions the MIN_VERSIONS for the column family<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   */<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public void testDeleteExpiredStoreFiles(int minVersions) throws Exception {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    int storeFileNum = 4;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    int ttl = 4;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    IncrementingEnvironmentEdge edge = new IncrementingEnvironmentEdge();<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    EnvironmentEdgeManagerTestHelper.injectEdge(edge);<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    Configuration conf = HBaseConfiguration.create();<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    // Enable the expired store file deletion<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    conf.setBoolean("hbase.store.delete.expired.storefile", true);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    // Set the compaction threshold higher to avoid normal compactions.<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY, 5);<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    hcd.setMinVersions(minVersions);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    hcd.setTimeToLive(ttl);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    init(name.getMethodName() + "-" + minVersions, conf, hcd);<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>    long storeTtl = this.store.getScanInfo().getTtl();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    long sleepTime = storeTtl / storeFileNum;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    long timeStamp;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    // There are 4 store files and the max time stamp difference among these<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    // store files will be (this.store.ttl / storeFileNum)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      LOG.info("Adding some data for the store file #" + i);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      timeStamp = EnvironmentEdgeManager.currentTime();<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      this.store.add(new KeyValue(row, family, qf1, timeStamp, (byte[]) null), null);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      this.store.add(new KeyValue(row, family, qf2, timeStamp, (byte[]) null), null);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      this.store.add(new KeyValue(row, family, qf3, timeStamp, (byte[]) null), null);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      flush(i);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      edge.incrementTime(sleepTime);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    }<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>    // Verify the total number of store files<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    Assert.assertEquals(storeFileNum, this.store.getStorefiles().size());<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>     // Each call will find one expired store file and delete it before compaction happens.<a name="line.353"></a>
-<span class="sourceLineNo">354</span>     // There will be no compaction due to threshold above. Last file will not be replaced.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    for (int i = 1; i &lt;= storeFileNum - 1; i++) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      // verify the expired store file.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      assertNull(this.store.requestCompaction());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      // Ensure i files are gone.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      if (minVersions == 0) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        assertEquals(storeFileNum - i, sfs.size());<a name="line.361"></a>
-<span class="sourceLineNo">362</span>        // Ensure only non-expired files remain.<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        for (StoreFile sf : sfs) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>          assertTrue(sf.getReader().getMaxTimestamp() &gt;= (edge.currentTime() - storeTtl));<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      } else {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        assertEquals(storeFileNum, sfs.size());<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      // Let the next store file expired.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      edge.incrementTime(sleepTime);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    }<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    assertNull(this.store.requestCompaction());<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>    Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    // Assert the last expired file is not removed.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    if (minVersions == 0) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      assertEquals(1, sfs.size());<a name="line.377"></a>
+<span class="sourceLineNo">309</span>    // Verify that compression and encoding settings are respected<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    HFile.Reader reader = HFile.createReader(fs, path, new CacheConfig(conf), true, conf);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    Assert.assertEquals(hcd.getCompressionType(), reader.getCompressionAlgorithm());<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    Assert.assertEquals(hcd.getDataBlockEncoding(), reader.getDataBlockEncoding());<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    reader.close();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  @Test<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public void testDeleteExpiredStoreFiles() throws Exception {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    testDeleteExpiredStoreFiles(0);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    testDeleteExpiredStoreFiles(1);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  /*<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   * @param minVersions the MIN_VERSIONS for the column family<a name="line.323"></a>
+<span class="sourceLineNo">324</span>   */<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public void testDeleteExpiredStoreFiles(int minVersions) throws Exception {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    int storeFileNum = 4;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    int ttl = 4;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    IncrementingEnvironmentEdge edge = new IncrementingEnvironmentEdge();<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    EnvironmentEdgeManagerTestHelper.injectEdge(edge);<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>    Configuration conf = HBaseConfiguration.create();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    // Enable the expired store file deletion<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    conf.setBoolean("hbase.store.delete.expired.storefile", true);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    // Set the compaction threshold higher to avoid normal compactions.<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY, 5);<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    hcd.setMinVersions(minVersions);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    hcd.setTimeToLive(ttl);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    init(name.getMethodName() + "-" + minVersions, conf, hcd);<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    long storeTtl = this.store.getScanInfo().getTtl();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    long sleepTime = storeTtl / storeFileNum;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    long timeStamp;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    // There are 4 store files and the max time stamp difference among these<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // store files will be (this.store.ttl / storeFileNum)<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      LOG.info("Adding some data for the store file #" + i);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      timeStamp = EnvironmentEdgeManager.currentTime();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      this.store.add(new KeyValue(row, family, qf1, timeStamp, (byte[]) null), null);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      this.store.add(new KeyValue(row, family, qf2, timeStamp, (byte[]) null), null);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      this.store.add(new KeyValue(row, family, qf3, timeStamp, (byte[]) null), null);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      flush(i);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      edge.incrementTime(sleepTime);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>    // Verify the total number of store files<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    Assert.assertEquals(storeFileNum, this.store.getStorefiles().size());<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>     // Each call will find one expired store file and delete it before compaction happens.<a name="line.360"></a>
+<span class="sourceLineNo">361</span>     // There will be no compaction due to threshold above. Last file will not be replaced.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    for (int i = 1; i &lt;= storeFileNum - 1; i++) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      // verify the expired store file.<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      assertNull(this.store.requestCompaction());<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      // Ensure i files are gone.<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      if (minVersions == 0) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        assertEquals(storeFileNum - i, sfs.size());<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        // Ensure only non-expired files remain.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        for (StoreFile sf : sfs) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>          assertTrue(sf.getReader().getMaxTimestamp() &gt;= (edge.currentTime() - storeTtl));<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        }<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      } else {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        assertEquals(storeFileNum, sfs.size());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      // Let the next store file expired.<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      edge.incrementTime(sleepTime);<a name="line.377"></a>
 <span class="sourceLineNo">378</span>    }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    long ts = sfs.iterator().next().getReader().getMaxTimestamp();<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    assertTrue(ts &lt; (edge.currentTime() - storeTtl));<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    for (StoreFile sf : sfs) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      sf.closeReader(true);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  @Test<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public void testLowestModificationTime() throws Exception {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    Configuration conf = HBaseConfiguration.create();<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    FileSystem fs = FileSystem.get(conf);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    // Initialize region<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    init(name.getMethodName(), conf);<a name="line.392"></a>
+<span class="sourceLineNo">379</span>    assertNull(this.store.requestCompaction());<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>    Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    // Assert the last expired file is not removed.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    if (minVersions == 0) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      assertEquals(1, sfs.size());<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    }<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    long ts = sfs.iterator().next().getReader().getMaxTimestamp();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    assertTrue(ts &lt; (edge.currentTime() - storeTtl));<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>    for (StoreFile sf : sfs) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      sf.closeReader(true);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    }<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  }<a name="line.392"></a>
 <span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    int storeFileNum = 4;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      LOG.info("Adding some data for the store file #"+i);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      this.store.add(new KeyValue(row, family, qf1, i, (byte[])null), null);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      this.store.add(new KeyValue(row, family, qf2, i, (byte[])null), null);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      this.store.add(new KeyValue(row, family, qf3, i, (byte[])null), null);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      flush(i);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    // after flush; check the lowest time stamp<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    long lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    long lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    Assert.assertEquals(lowestTimeStampFromManager,lowestTimeStampFromFS);<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>    // after compact; check the lowest time stamp<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    store.compact(store.requestCompaction(), NoLimitThroughputController.INSTANCE, null);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    Assert.assertEquals(lowestTimeStampFromManager, lowestTimeStampFromFS);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
+<span class="sourceLineNo">394</span>  @Test<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  public void testLowestModificationTime() throws Exception {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    Configuration conf = HBaseConfiguration.create();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    FileSystem fs = FileSystem.get(conf);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Initialize region<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    init(name.getMethodName(), conf);<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    int storeFileNum = 4;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      LOG.info("Adding some data for the store file #"+i);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      this.store.add(new KeyValue(row, family, qf1, i, (byte[])null), null);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      this.store.add(new KeyValue(row, family, qf2, i, (byte[])null), null);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      this.store.add(new KeyValue(row, family, qf3, i, (byte[])null), null);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      flush(i);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    // after flush; check the lowest time stamp<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    long lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    long lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    Assert.assertEquals(lowestTimeStampFromManager,lowestTimeStampFromFS);<a name="line.412"></a>
 <span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  private static long getLowestTimeStampFromFS(FileSystem fs,<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      final Collection&lt;StoreFile&gt; candidates) throws IOException {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    long minTs = Long.MAX_VALUE;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    if (candidates.isEmpty()) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      return minTs;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    }<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    Path[] p = new Path[candidates.size()];<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    int i = 0;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    for (StoreFile sf : candidates) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      p[i] = sf.getPath();<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      ++i;<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    }<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>    FileStatus[] stats = fs.listStatus(p);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    if (stats == null || stats.length == 0) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      return minTs;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    for (FileStatus s : stats) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      minTs = Math.min(minTs, s.getModificationTime());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    return minTs;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  // Get tests<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>  private static final int BLOCKSIZE_SMALL = 8192;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Test for hbase-1686.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @throws IOException<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  @Test<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  public void testEmptyStoreFile() throws IOException {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    init(this.name.getMethodName());<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    // Write a store file.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    flush(1);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    // Now put in place an empty store file.  Its a little tricky.  Have to<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // do manually with hacked in sequence id.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    StoreFile f = this.store.getStorefiles().iterator().next();<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    Path storedir = f.getPath().getParent();<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    long seqid = f.getMaxSequenceId();<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    Configuration c = HBaseConfiguration.create();<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    FileSystem fs = FileSystem.get(c);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    HFileContext meta = new HFileContextBuilder().withBlockSize(BLOCKSIZE_SMALL).build();<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    StoreFileWriter w = new StoreFileWriter.Builder(c, new CacheConfig(c),<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        fs)<a name="line.462"></a>
-<span class="sourceLineNo">463</span>            .withOutputDir(storedir)<a name="line.463"></a>
-<span class="sourceLineNo">464</span>            .withFileContext(meta)<a name="line.464"></a>
-<span class="sourceLineNo">465</span>            .build();<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    w.appendMetadata(seqid + 1, false);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    w.close();<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    this.store.close();<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    // Reopen it... should pick up two files<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    this.store = new HStore(this.store.getHRegion(), this.store.getFamily(), c);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    Assert.assertEquals(2, this.store.getStorefilesCount());<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        get.getRow(),<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        qualifiers);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    Assert.assertEquals(1, result.size());<a name="line.476"></a>
-<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>  /**<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * Getting data from memstore only<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @throws IOException<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   */<a name="line.482"></a>
-<span class="sourceLineNo">483</span>  @Test<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  public void testGet_FromMemStoreOnly() throws IOException {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    init(this.name.getMethodName());<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>    //Put data in memstore<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    this.store.add(new KeyValue(row, family, qf3, 1, (byte[])null), null);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    this.store.add(new KeyValue(row, family, qf4, 1, (byte[])null), null);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    this.store.add(new KeyValue(row, family, qf5, 1, (byte[])null), null);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    this.store.add(new KeyValue(row, family, qf6, 1, (byte[])null), null);<a name="line.493"></a>
-<span class="sourceLineNo">494</span><a name="line.494"></a>
-<span class="sourceLineNo">495</span>    //Get<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        get.getRow(), qualifiers);<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    //Compare<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    assertCheck();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  }<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>   * Getting data from files only<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @throws IOException<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   */<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  @Test<a name="line.507"></a>
-<span class="sourceLineNo">508</span>  public void testGet_FromFilesOnly() throws IOException {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    init(this.name.getMethodName());<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>    //Put data in memstore<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    //flush<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    flush(1);<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>    //Add more data<a name="line.517"></a>
-<span class="so

<TRUNCATED>

[17/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-client-project/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/dependency-convergence.html b/hbase-archetypes/hbase-client-project/dependency-convergence.html
index 3adc379..bba4574 100644
--- a/hbase-archetypes/hbase-client-project/dependency-convergence.html
+++ b/hbase-archetypes/hbase-client-project/dependency-convergence.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-client-project/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/dependency-info.html b/hbase-archetypes/hbase-client-project/dependency-info.html
index d827a55..65d2c20 100644
--- a/hbase-archetypes/hbase-client-project/dependency-info.html
+++ b/hbase-archetypes/hbase-client-project/dependency-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-client-project/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/dependency-management.html b/hbase-archetypes/hbase-client-project/dependency-management.html
index a5c5c27..d9750b3 100644
--- a/hbase-archetypes/hbase-client-project/dependency-management.html
+++ b/hbase-archetypes/hbase-client-project/dependency-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-client-project/index.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/index.html b/hbase-archetypes/hbase-client-project/index.html
index ba57b35..912553c 100644
--- a/hbase-archetypes/hbase-client-project/index.html
+++ b/hbase-archetypes/hbase-client-project/index.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-client-project/integration.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/integration.html b/hbase-archetypes/hbase-client-project/integration.html
index e2524c0..0097b1b 100644
--- a/hbase-archetypes/hbase-client-project/integration.html
+++ b/hbase-archetypes/hbase-client-project/integration.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-client-project/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/issue-tracking.html b/hbase-archetypes/hbase-client-project/issue-tracking.html
index 28184a0..d6066bf 100644
--- a/hbase-archetypes/hbase-client-project/issue-tracking.html
+++ b/hbase-archetypes/hbase-client-project/issue-tracking.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-client-project/license.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/license.html b/hbase-archetypes/hbase-client-project/license.html
index 1a70c7b..1b4336f 100644
--- a/hbase-archetypes/hbase-client-project/license.html
+++ b/hbase-archetypes/hbase-client-project/license.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-client-project/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/mail-lists.html b/hbase-archetypes/hbase-client-project/mail-lists.html
index 96c42c3..eb998b4 100644
--- a/hbase-archetypes/hbase-client-project/mail-lists.html
+++ b/hbase-archetypes/hbase-client-project/mail-lists.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-client-project/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/plugin-management.html b/hbase-archetypes/hbase-client-project/plugin-management.html
index 162bfe6..97af759 100644
--- a/hbase-archetypes/hbase-client-project/plugin-management.html
+++ b/hbase-archetypes/hbase-client-project/plugin-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-client-project/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/plugins.html b/hbase-archetypes/hbase-client-project/plugins.html
index bd2bdd3..a2e4fe4 100644
--- a/hbase-archetypes/hbase-client-project/plugins.html
+++ b/hbase-archetypes/hbase-client-project/plugins.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-client-project/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/project-info.html b/hbase-archetypes/hbase-client-project/project-info.html
index a5683f7..25e68f6 100644
--- a/hbase-archetypes/hbase-client-project/project-info.html
+++ b/hbase-archetypes/hbase-client-project/project-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-client-project/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/project-reports.html b/hbase-archetypes/hbase-client-project/project-reports.html
index 84e0708..d87529c 100644
--- a/hbase-archetypes/hbase-client-project/project-reports.html
+++ b/hbase-archetypes/hbase-client-project/project-reports.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-client-project/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/project-summary.html b/hbase-archetypes/hbase-client-project/project-summary.html
index 6cd36cf..44d0538 100644
--- a/hbase-archetypes/hbase-client-project/project-summary.html
+++ b/hbase-archetypes/hbase-client-project/project-summary.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-client-project/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/source-repository.html b/hbase-archetypes/hbase-client-project/source-repository.html
index 917233f..f2bf0d4 100644
--- a/hbase-archetypes/hbase-client-project/source-repository.html
+++ b/hbase-archetypes/hbase-client-project/source-repository.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-client-project/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/team-list.html b/hbase-archetypes/hbase-client-project/team-list.html
index 69983a8..6b1f0ca 100644
--- a/hbase-archetypes/hbase-client-project/team-list.html
+++ b/hbase-archetypes/hbase-client-project/team-list.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/checkstyle.html b/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
index ed32b05..6c6c0b7 100644
--- a/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
+++ b/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-shaded-client-project/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/dependencies.html b/hbase-archetypes/hbase-shaded-client-project/dependencies.html
index 20f0d24..d1eb452 100644
--- a/hbase-archetypes/hbase-shaded-client-project/dependencies.html
+++ b/hbase-archetypes/hbase-shaded-client-project/dependencies.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html b/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
index b87a22b..9846462 100644
--- a/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
+++ b/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/dependency-info.html b/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
index 72e464d..079c367 100644
--- a/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
+++ b/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/dependency-management.html b/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
index 45f4c79..5edaaf1 100644
--- a/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
+++ b/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-shaded-client-project/index.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/index.html b/hbase-archetypes/hbase-shaded-client-project/index.html
index 88fae80..805e47a 100644
--- a/hbase-archetypes/hbase-shaded-client-project/index.html
+++ b/hbase-archetypes/hbase-shaded-client-project/index.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-shaded-client-project/integration.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/integration.html b/hbase-archetypes/hbase-shaded-client-project/integration.html
index 736fe8e..71b8118 100644
--- a/hbase-archetypes/hbase-shaded-client-project/integration.html
+++ b/hbase-archetypes/hbase-shaded-client-project/integration.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html b/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
index 2d7acd3..366d9d1 100644
--- a/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
+++ b/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-shaded-client-project/license.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/license.html b/hbase-archetypes/hbase-shaded-client-project/license.html
index 4db7ddc..67455fa 100644
--- a/hbase-archetypes/hbase-shaded-client-project/license.html
+++ b/hbase-archetypes/hbase-shaded-client-project/license.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/mail-lists.html b/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
index 70714a7..f9db5a0 100644
--- a/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
+++ b/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/plugin-management.html b/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
index 960fd93..355f9ca 100644
--- a/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
+++ b/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-shaded-client-project/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/plugins.html b/hbase-archetypes/hbase-shaded-client-project/plugins.html
index caa40ff..ac81a47 100644
--- a/hbase-archetypes/hbase-shaded-client-project/plugins.html
+++ b/hbase-archetypes/hbase-shaded-client-project/plugins.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-shaded-client-project/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/project-info.html b/hbase-archetypes/hbase-shaded-client-project/project-info.html
index a27e174..52d3f14 100644
--- a/hbase-archetypes/hbase-shaded-client-project/project-info.html
+++ b/hbase-archetypes/hbase-shaded-client-project/project-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-shaded-client-project/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/project-reports.html b/hbase-archetypes/hbase-shaded-client-project/project-reports.html
index d464802..2719d8f 100644
--- a/hbase-archetypes/hbase-shaded-client-project/project-reports.html
+++ b/hbase-archetypes/hbase-shaded-client-project/project-reports.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-shaded-client-project/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/project-summary.html b/hbase-archetypes/hbase-shaded-client-project/project-summary.html
index d7c8215..d9380f7 100644
--- a/hbase-archetypes/hbase-shaded-client-project/project-summary.html
+++ b/hbase-archetypes/hbase-shaded-client-project/project-summary.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-shaded-client-project/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/source-repository.html b/hbase-archetypes/hbase-shaded-client-project/source-repository.html
index c24169e..01ac273 100644
--- a/hbase-archetypes/hbase-shaded-client-project/source-repository.html
+++ b/hbase-archetypes/hbase-shaded-client-project/source-repository.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/hbase-shaded-client-project/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/team-list.html b/hbase-archetypes/hbase-shaded-client-project/team-list.html
index 7c0e142..752d84e 100644
--- a/hbase-archetypes/hbase-shaded-client-project/team-list.html
+++ b/hbase-archetypes/hbase-shaded-client-project/team-list.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/index.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/index.html b/hbase-archetypes/index.html
index a92cf90..8809d41 100644
--- a/hbase-archetypes/index.html
+++ b/hbase-archetypes/index.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/integration.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/integration.html b/hbase-archetypes/integration.html
index 3e57a00..ca7edb0 100644
--- a/hbase-archetypes/integration.html
+++ b/hbase-archetypes/integration.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/issue-tracking.html b/hbase-archetypes/issue-tracking.html
index 84a94b5..47d0ff6 100644
--- a/hbase-archetypes/issue-tracking.html
+++ b/hbase-archetypes/issue-tracking.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/license.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/license.html b/hbase-archetypes/license.html
index 8608548..a27b2d0 100644
--- a/hbase-archetypes/license.html
+++ b/hbase-archetypes/license.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/mail-lists.html b/hbase-archetypes/mail-lists.html
index 530d552..5be510d 100644
--- a/hbase-archetypes/mail-lists.html
+++ b/hbase-archetypes/mail-lists.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/plugin-management.html b/hbase-archetypes/plugin-management.html
index 3073207..5372eb6 100644
--- a/hbase-archetypes/plugin-management.html
+++ b/hbase-archetypes/plugin-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/plugins.html b/hbase-archetypes/plugins.html
index 81fa6f8..657f0d7 100644
--- a/hbase-archetypes/plugins.html
+++ b/hbase-archetypes/plugins.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/project-info.html b/hbase-archetypes/project-info.html
index 93128b0..4f04d55 100644
--- a/hbase-archetypes/project-info.html
+++ b/hbase-archetypes/project-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/project-summary.html b/hbase-archetypes/project-summary.html
index d27f619..ea6b6fa 100644
--- a/hbase-archetypes/project-summary.html
+++ b/hbase-archetypes/project-summary.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/source-repository.html b/hbase-archetypes/source-repository.html
index 2409bdc..211ba2c 100644
--- a/hbase-archetypes/source-repository.html
+++ b/hbase-archetypes/source-repository.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-archetypes/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/team-list.html b/hbase-archetypes/team-list.html
index 96f48c6..a3e7089 100644
--- a/hbase-archetypes/team-list.html
+++ b/hbase-archetypes/team-list.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-spark/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-spark/checkstyle.html b/hbase-spark/checkstyle.html
index 7613c10..b06e8cb 100644
--- a/hbase-spark/checkstyle.html
+++ b/hbase-spark/checkstyle.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-spark/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-spark/dependencies.html b/hbase-spark/dependencies.html
index 09346ed..a1ddf74 100644
--- a/hbase-spark/dependencies.html
+++ b/hbase-spark/dependencies.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-spark/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-spark/dependency-convergence.html b/hbase-spark/dependency-convergence.html
index aae6423..2082097 100644
--- a/hbase-spark/dependency-convergence.html
+++ b/hbase-spark/dependency-convergence.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-spark/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-spark/dependency-info.html b/hbase-spark/dependency-info.html
index 0e54eeb..88b4979 100644
--- a/hbase-spark/dependency-info.html
+++ b/hbase-spark/dependency-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-spark/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-spark/dependency-management.html b/hbase-spark/dependency-management.html
index f9a2963..0f73dca 100644
--- a/hbase-spark/dependency-management.html
+++ b/hbase-spark/dependency-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-spark/index.html
----------------------------------------------------------------------
diff --git a/hbase-spark/index.html b/hbase-spark/index.html
index c4d77c1..430e948 100644
--- a/hbase-spark/index.html
+++ b/hbase-spark/index.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-spark/integration.html
----------------------------------------------------------------------
diff --git a/hbase-spark/integration.html b/hbase-spark/integration.html
index b52e3b6..a109287 100644
--- a/hbase-spark/integration.html
+++ b/hbase-spark/integration.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-spark/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-spark/issue-tracking.html b/hbase-spark/issue-tracking.html
index ac0d24a..1b36a99 100644
--- a/hbase-spark/issue-tracking.html
+++ b/hbase-spark/issue-tracking.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>


[19/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
index 910002d..eca504f 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
@@ -70,14 +70,14 @@
 <span class="sourceLineNo">062</span>    @org.jamon.annotations.Argument(name = "master", type = "HMaster")},<a name="line.62"></a>
 <span class="sourceLineNo">063</span>  optionalArguments = {<a name="line.63"></a>
 <span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.68"></a>
+<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;"),<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.68"></a>
 <span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;"),<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean")})<a name="line.72"></a>
+<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    @org.jamon.annotations.Argument(name = "filter", type = "String")})<a name="line.72"></a>
 <span class="sourceLineNo">073</span>public class MasterStatusTmpl<a name="line.73"></a>
 <span class="sourceLineNo">074</span>  extends org.jamon.AbstractTemplateProxy<a name="line.74"></a>
 <span class="sourceLineNo">075</span>{<a name="line.75"></a>
@@ -135,74 +135,74 @@
 <span class="sourceLineNo">127</span>      return m_deadServers__IsNotDefault;<a name="line.127"></a>
 <span class="sourceLineNo">128</span>    }<a name="line.128"></a>
 <span class="sourceLineNo">129</span>    private boolean m_deadServers__IsNotDefault;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    // 22, 1<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.131"></a>
+<span class="sourceLineNo">130</span>    // 28, 1<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    public void setServerManager(ServerManager serverManager)<a name="line.131"></a>
 <span class="sourceLineNo">132</span>    {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      // 22, 1<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      m_metaLocation = metaLocation;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      m_metaLocation__IsNotDefault = true;<a name="line.135"></a>
+<span class="sourceLineNo">133</span>      // 28, 1<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      m_serverManager = serverManager;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      m_serverManager__IsNotDefault = true;<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    public ServerName getMetaLocation()<a name="line.137"></a>
+<span class="sourceLineNo">137</span>    public ServerManager getServerManager()<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      return m_metaLocation;<a name="line.139"></a>
+<span class="sourceLineNo">139</span>      return m_serverManager;<a name="line.139"></a>
 <span class="sourceLineNo">140</span>    }<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    private ServerName m_metaLocation;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.142"></a>
+<span class="sourceLineNo">141</span>    private ServerManager m_serverManager;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    public boolean getServerManager__IsNotDefault()<a name="line.142"></a>
 <span class="sourceLineNo">143</span>    {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      return m_metaLocation__IsNotDefault;<a name="line.144"></a>
+<span class="sourceLineNo">144</span>      return m_serverManager__IsNotDefault;<a name="line.144"></a>
 <span class="sourceLineNo">145</span>    }<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    // 29, 1<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.148"></a>
+<span class="sourceLineNo">146</span>    private boolean m_serverManager__IsNotDefault;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    // 23, 1<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.148"></a>
 <span class="sourceLineNo">149</span>    {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      // 29, 1<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      m_assignmentManager = assignmentManager;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      m_assignmentManager__IsNotDefault = true;<a name="line.152"></a>
+<span class="sourceLineNo">150</span>      // 23, 1<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      m_servers = servers;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      m_servers__IsNotDefault = true;<a name="line.152"></a>
 <span class="sourceLineNo">153</span>    }<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    public AssignmentManager getAssignmentManager()<a name="line.154"></a>
+<span class="sourceLineNo">154</span>    public List&lt;ServerName&gt; getServers()<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      return m_assignmentManager;<a name="line.156"></a>
+<span class="sourceLineNo">156</span>      return m_servers;<a name="line.156"></a>
 <span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    private AssignmentManager m_assignmentManager;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.159"></a>
+<span class="sourceLineNo">158</span>    private List&lt;ServerName&gt; m_servers;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    public boolean getServers__IsNotDefault()<a name="line.159"></a>
 <span class="sourceLineNo">160</span>    {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      return m_assignmentManager__IsNotDefault;<a name="line.161"></a>
+<span class="sourceLineNo">161</span>      return m_servers__IsNotDefault;<a name="line.161"></a>
 <span class="sourceLineNo">162</span>    }<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    // 26, 1<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    public void setFilter(String filter)<a name="line.165"></a>
+<span class="sourceLineNo">163</span>    private boolean m_servers__IsNotDefault;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    // 29, 1<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.165"></a>
 <span class="sourceLineNo">166</span>    {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      // 26, 1<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      m_filter = filter;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      m_filter__IsNotDefault = true;<a name="line.169"></a>
+<span class="sourceLineNo">167</span>      // 29, 1<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      m_assignmentManager = assignmentManager;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      m_assignmentManager__IsNotDefault = true;<a name="line.169"></a>
 <span class="sourceLineNo">170</span>    }<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    public String getFilter()<a name="line.171"></a>
+<span class="sourceLineNo">171</span>    public AssignmentManager getAssignmentManager()<a name="line.171"></a>
 <span class="sourceLineNo">172</span>    {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      return m_filter;<a name="line.173"></a>
+<span class="sourceLineNo">173</span>      return m_assignmentManager;<a name="line.173"></a>
 <span class="sourceLineNo">174</span>    }<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    private String m_filter;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    public boolean getFilter__IsNotDefault()<a name="line.176"></a>
+<span class="sourceLineNo">175</span>    private AssignmentManager m_assignmentManager;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.176"></a>
 <span class="sourceLineNo">177</span>    {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      return m_filter__IsNotDefault;<a name="line.178"></a>
+<span class="sourceLineNo">178</span>      return m_assignmentManager__IsNotDefault;<a name="line.178"></a>
 <span class="sourceLineNo">179</span>    }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    private boolean m_filter__IsNotDefault;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    // 21, 1<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.182"></a>
+<span class="sourceLineNo">180</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    // 22, 1<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.182"></a>
 <span class="sourceLineNo">183</span>    {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      // 21, 1<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      m_frags = frags;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      m_frags__IsNotDefault = true;<a name="line.186"></a>
+<span class="sourceLineNo">184</span>      // 22, 1<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      m_metaLocation = metaLocation;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      m_metaLocation__IsNotDefault = true;<a name="line.186"></a>
 <span class="sourceLineNo">187</span>    }<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.188"></a>
+<span class="sourceLineNo">188</span>    public ServerName getMetaLocation()<a name="line.188"></a>
 <span class="sourceLineNo">189</span>    {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      return m_frags;<a name="line.190"></a>
+<span class="sourceLineNo">190</span>      return m_metaLocation;<a name="line.190"></a>
 <span class="sourceLineNo">191</span>    }<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    public boolean getFrags__IsNotDefault()<a name="line.193"></a>
+<span class="sourceLineNo">192</span>    private ServerName m_metaLocation;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.193"></a>
 <span class="sourceLineNo">194</span>    {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      return m_frags__IsNotDefault;<a name="line.195"></a>
+<span class="sourceLineNo">195</span>      return m_metaLocation__IsNotDefault;<a name="line.195"></a>
 <span class="sourceLineNo">196</span>    }<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    private boolean m_frags__IsNotDefault;<a name="line.197"></a>
+<span class="sourceLineNo">197</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.197"></a>
 <span class="sourceLineNo">198</span>    // 27, 1<a name="line.198"></a>
 <span class="sourceLineNo">199</span>    public void setFormat(String format)<a name="line.199"></a>
 <span class="sourceLineNo">200</span>    {<a name="line.200"></a>
@@ -220,57 +220,57 @@
 <span class="sourceLineNo">212</span>      return m_format__IsNotDefault;<a name="line.212"></a>
 <span class="sourceLineNo">213</span>    }<a name="line.213"></a>
 <span class="sourceLineNo">214</span>    private boolean m_format__IsNotDefault;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    // 28, 1<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    public void setServerManager(ServerManager serverManager)<a name="line.216"></a>
+<span class="sourceLineNo">215</span>    // 21, 1<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.216"></a>
 <span class="sourceLineNo">217</span>    {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      // 28, 1<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      m_serverManager = serverManager;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      m_serverManager__IsNotDefault = true;<a name="line.220"></a>
+<span class="sourceLineNo">218</span>      // 21, 1<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      m_frags = frags;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      m_frags__IsNotDefault = true;<a name="line.220"></a>
 <span class="sourceLineNo">221</span>    }<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    public ServerManager getServerManager()<a name="line.222"></a>
+<span class="sourceLineNo">222</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.222"></a>
 <span class="sourceLineNo">223</span>    {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      return m_serverManager;<a name="line.224"></a>
+<span class="sourceLineNo">224</span>      return m_frags;<a name="line.224"></a>
 <span class="sourceLineNo">225</span>    }<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    private ServerManager m_serverManager;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    public boolean getServerManager__IsNotDefault()<a name="line.227"></a>
+<span class="sourceLineNo">226</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    public boolean getFrags__IsNotDefault()<a name="line.227"></a>
 <span class="sourceLineNo">228</span>    {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      return m_serverManager__IsNotDefault;<a name="line.229"></a>
+<span class="sourceLineNo">229</span>      return m_frags__IsNotDefault;<a name="line.229"></a>
 <span class="sourceLineNo">230</span>    }<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    private boolean m_serverManager__IsNotDefault;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    // 23, 1<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.233"></a>
+<span class="sourceLineNo">231</span>    private boolean m_frags__IsNotDefault;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    // 25, 1<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.233"></a>
 <span class="sourceLineNo">234</span>    {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      // 23, 1<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      m_servers = servers;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      m_servers__IsNotDefault = true;<a name="line.237"></a>
+<span class="sourceLineNo">235</span>      // 25, 1<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.237"></a>
 <span class="sourceLineNo">238</span>    }<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    public List&lt;ServerName&gt; getServers()<a name="line.239"></a>
+<span class="sourceLineNo">239</span>    public boolean getCatalogJanitorEnabled()<a name="line.239"></a>
 <span class="sourceLineNo">240</span>    {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      return m_servers;<a name="line.241"></a>
+<span class="sourceLineNo">241</span>      return m_catalogJanitorEnabled;<a name="line.241"></a>
 <span class="sourceLineNo">242</span>    }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    private List&lt;ServerName&gt; m_servers;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    public boolean getServers__IsNotDefault()<a name="line.244"></a>
+<span class="sourceLineNo">243</span>    private boolean m_catalogJanitorEnabled;<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.244"></a>
 <span class="sourceLineNo">245</span>    {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      return m_servers__IsNotDefault;<a name="line.246"></a>
+<span class="sourceLineNo">246</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.246"></a>
 <span class="sourceLineNo">247</span>    }<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    private boolean m_servers__IsNotDefault;<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    // 25, 1<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.250"></a>
+<span class="sourceLineNo">248</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    // 26, 1<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    public void setFilter(String filter)<a name="line.250"></a>
 <span class="sourceLineNo">251</span>    {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      // 25, 1<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.254"></a>
+<span class="sourceLineNo">252</span>      // 26, 1<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      m_filter = filter;<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      m_filter__IsNotDefault = true;<a name="line.254"></a>
 <span class="sourceLineNo">255</span>    }<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    public boolean getCatalogJanitorEnabled()<a name="line.256"></a>
+<span class="sourceLineNo">256</span>    public String getFilter()<a name="line.256"></a>
 <span class="sourceLineNo">257</span>    {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      return m_catalogJanitorEnabled;<a name="line.258"></a>
+<span class="sourceLineNo">258</span>      return m_filter;<a name="line.258"></a>
 <span class="sourceLineNo">259</span>    }<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    private boolean m_catalogJanitorEnabled;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.261"></a>
+<span class="sourceLineNo">260</span>    private String m_filter;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    public boolean getFilter__IsNotDefault()<a name="line.261"></a>
 <span class="sourceLineNo">262</span>    {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.263"></a>
+<span class="sourceLineNo">263</span>      return m_filter__IsNotDefault;<a name="line.263"></a>
 <span class="sourceLineNo">264</span>    }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.265"></a>
+<span class="sourceLineNo">265</span>    private boolean m_filter__IsNotDefault;<a name="line.265"></a>
 <span class="sourceLineNo">266</span>  }<a name="line.266"></a>
 <span class="sourceLineNo">267</span>  @Override<a name="line.267"></a>
 <span class="sourceLineNo">268</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.268"></a>
@@ -289,31 +289,31 @@
 <span class="sourceLineNo">281</span>    return this;<a name="line.281"></a>
 <span class="sourceLineNo">282</span>  }<a name="line.282"></a>
 <span class="sourceLineNo">283</span>  <a name="line.283"></a>
-<span class="sourceLineNo">284</span>  protected ServerName metaLocation;<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.285"></a>
+<span class="sourceLineNo">284</span>  protected ServerManager serverManager;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.285"></a>
 <span class="sourceLineNo">286</span>  {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.287"></a>
+<span class="sourceLineNo">287</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.287"></a>
 <span class="sourceLineNo">288</span>    return this;<a name="line.288"></a>
 <span class="sourceLineNo">289</span>  }<a name="line.289"></a>
 <span class="sourceLineNo">290</span>  <a name="line.290"></a>
-<span class="sourceLineNo">291</span>  protected AssignmentManager assignmentManager;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.292"></a>
+<span class="sourceLineNo">291</span>  protected List&lt;ServerName&gt; servers;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.292"></a>
 <span class="sourceLineNo">293</span>  {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.294"></a>
+<span class="sourceLineNo">294</span>    (getImplData()).setServers(p_servers);<a name="line.294"></a>
 <span class="sourceLineNo">295</span>    return this;<a name="line.295"></a>
 <span class="sourceLineNo">296</span>  }<a name="line.296"></a>
 <span class="sourceLineNo">297</span>  <a name="line.297"></a>
-<span class="sourceLineNo">298</span>  protected String filter;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.299"></a>
+<span class="sourceLineNo">298</span>  protected AssignmentManager assignmentManager;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.299"></a>
 <span class="sourceLineNo">300</span>  {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    (getImplData()).setFilter(p_filter);<a name="line.301"></a>
+<span class="sourceLineNo">301</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.301"></a>
 <span class="sourceLineNo">302</span>    return this;<a name="line.302"></a>
 <span class="sourceLineNo">303</span>  }<a name="line.303"></a>
 <span class="sourceLineNo">304</span>  <a name="line.304"></a>
-<span class="sourceLineNo">305</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.306"></a>
+<span class="sourceLineNo">305</span>  protected ServerName metaLocation;<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.306"></a>
 <span class="sourceLineNo">307</span>  {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    (getImplData()).setFrags(p_frags);<a name="line.308"></a>
+<span class="sourceLineNo">308</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.308"></a>
 <span class="sourceLineNo">309</span>    return this;<a name="line.309"></a>
 <span class="sourceLineNo">310</span>  }<a name="line.310"></a>
 <span class="sourceLineNo">311</span>  <a name="line.311"></a>
@@ -324,24 +324,24 @@
 <span class="sourceLineNo">316</span>    return this;<a name="line.316"></a>
 <span class="sourceLineNo">317</span>  }<a name="line.317"></a>
 <span class="sourceLineNo">318</span>  <a name="line.318"></a>
-<span class="sourceLineNo">319</span>  protected ServerManager serverManager;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.320"></a>
+<span class="sourceLineNo">319</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.320"></a>
 <span class="sourceLineNo">321</span>  {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.322"></a>
+<span class="sourceLineNo">322</span>    (getImplData()).setFrags(p_frags);<a name="line.322"></a>
 <span class="sourceLineNo">323</span>    return this;<a name="line.323"></a>
 <span class="sourceLineNo">324</span>  }<a name="line.324"></a>
 <span class="sourceLineNo">325</span>  <a name="line.325"></a>
-<span class="sourceLineNo">326</span>  protected List&lt;ServerName&gt; servers;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.327"></a>
+<span class="sourceLineNo">326</span>  protected boolean catalogJanitorEnabled;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.327"></a>
 <span class="sourceLineNo">328</span>  {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    (getImplData()).setServers(p_servers);<a name="line.329"></a>
+<span class="sourceLineNo">329</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.329"></a>
 <span class="sourceLineNo">330</span>    return this;<a name="line.330"></a>
 <span class="sourceLineNo">331</span>  }<a name="line.331"></a>
 <span class="sourceLineNo">332</span>  <a name="line.332"></a>
-<span class="sourceLineNo">333</span>  protected boolean catalogJanitorEnabled;<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.334"></a>
+<span class="sourceLineNo">333</span>  protected String filter;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.334"></a>
 <span class="sourceLineNo">335</span>  {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.336"></a>
+<span class="sourceLineNo">336</span>    (getImplData()).setFilter(p_filter);<a name="line.336"></a>
 <span class="sourceLineNo">337</span>    return this;<a name="line.337"></a>
 <span class="sourceLineNo">338</span>  }<a name="line.338"></a>
 <span class="sourceLineNo">339</span>  <a name="line.339"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
index 3726ab6..d6e51a7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
@@ -71,14 +71,14 @@
 <span class="sourceLineNo">063</span>{<a name="line.63"></a>
 <span class="sourceLineNo">064</span>  private final HMaster master;<a name="line.64"></a>
 <span class="sourceLineNo">065</span>  private final Set&lt;ServerName&gt; deadServers;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  private final ServerName metaLocation;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private final AssignmentManager assignmentManager;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private final String filter;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private final Map&lt;String,Integer&gt; frags;<a name="line.69"></a>
+<span class="sourceLineNo">066</span>  private final ServerManager serverManager;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  private final List&lt;ServerName&gt; servers;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  private final AssignmentManager assignmentManager;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private final ServerName metaLocation;<a name="line.69"></a>
 <span class="sourceLineNo">070</span>  private final String format;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private final ServerManager serverManager;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private final List&lt;ServerName&gt; servers;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private final boolean catalogJanitorEnabled;<a name="line.73"></a>
+<span class="sourceLineNo">071</span>  private final Map&lt;String,Integer&gt; frags;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private final boolean catalogJanitorEnabled;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private final String filter;<a name="line.73"></a>
 <span class="sourceLineNo">074</span>  // 69, 1<a name="line.74"></a>
 <span class="sourceLineNo">075</span>  <a name="line.75"></a>
 <span class="sourceLineNo">076</span>  public String formatZKString() {<a name="line.76"></a>
@@ -112,37 +112,37 @@
 <span class="sourceLineNo">104</span>    {<a name="line.104"></a>
 <span class="sourceLineNo">105</span>      p_implData.setDeadServers(null);<a name="line.105"></a>
 <span class="sourceLineNo">106</span>    }<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    if(! p_implData.getMetaLocation__IsNotDefault())<a name="line.107"></a>
+<span class="sourceLineNo">107</span>    if(! p_implData.getServerManager__IsNotDefault())<a name="line.107"></a>
 <span class="sourceLineNo">108</span>    {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      p_implData.setMetaLocation(null);<a name="line.109"></a>
+<span class="sourceLineNo">109</span>      p_implData.setServerManager(null);<a name="line.109"></a>
 <span class="sourceLineNo">110</span>    }<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    if(! p_implData.getAssignmentManager__IsNotDefault())<a name="line.111"></a>
+<span class="sourceLineNo">111</span>    if(! p_implData.getServers__IsNotDefault())<a name="line.111"></a>
 <span class="sourceLineNo">112</span>    {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      p_implData.setAssignmentManager(null);<a name="line.113"></a>
+<span class="sourceLineNo">113</span>      p_implData.setServers(null);<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    }<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    if(! p_implData.getFilter__IsNotDefault())<a name="line.115"></a>
+<span class="sourceLineNo">115</span>    if(! p_implData.getAssignmentManager__IsNotDefault())<a name="line.115"></a>
 <span class="sourceLineNo">116</span>    {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      p_implData.setFilter("general");<a name="line.117"></a>
+<span class="sourceLineNo">117</span>      p_implData.setAssignmentManager(null);<a name="line.117"></a>
 <span class="sourceLineNo">118</span>    }<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    if(! p_implData.getFrags__IsNotDefault())<a name="line.119"></a>
+<span class="sourceLineNo">119</span>    if(! p_implData.getMetaLocation__IsNotDefault())<a name="line.119"></a>
 <span class="sourceLineNo">120</span>    {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      p_implData.setFrags(null);<a name="line.121"></a>
+<span class="sourceLineNo">121</span>      p_implData.setMetaLocation(null);<a name="line.121"></a>
 <span class="sourceLineNo">122</span>    }<a name="line.122"></a>
 <span class="sourceLineNo">123</span>    if(! p_implData.getFormat__IsNotDefault())<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    {<a name="line.124"></a>
 <span class="sourceLineNo">125</span>      p_implData.setFormat("html");<a name="line.125"></a>
 <span class="sourceLineNo">126</span>    }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    if(! p_implData.getServerManager__IsNotDefault())<a name="line.127"></a>
+<span class="sourceLineNo">127</span>    if(! p_implData.getFrags__IsNotDefault())<a name="line.127"></a>
 <span class="sourceLineNo">128</span>    {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      p_implData.setServerManager(null);<a name="line.129"></a>
+<span class="sourceLineNo">129</span>      p_implData.setFrags(null);<a name="line.129"></a>
 <span class="sourceLineNo">130</span>    }<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    if(! p_implData.getServers__IsNotDefault())<a name="line.131"></a>
+<span class="sourceLineNo">131</span>    if(! p_implData.getCatalogJanitorEnabled__IsNotDefault())<a name="line.131"></a>
 <span class="sourceLineNo">132</span>    {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      p_implData.setServers(null);<a name="line.133"></a>
+<span class="sourceLineNo">133</span>      p_implData.setCatalogJanitorEnabled(true);<a name="line.133"></a>
 <span class="sourceLineNo">134</span>    }<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    if(! p_implData.getCatalogJanitorEnabled__IsNotDefault())<a name="line.135"></a>
+<span class="sourceLineNo">135</span>    if(! p_implData.getFilter__IsNotDefault())<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      p_implData.setCatalogJanitorEnabled(true);<a name="line.137"></a>
+<span class="sourceLineNo">137</span>      p_implData.setFilter("general");<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    }<a name="line.138"></a>
 <span class="sourceLineNo">139</span>    return p_implData;<a name="line.139"></a>
 <span class="sourceLineNo">140</span>  }<a name="line.140"></a>
@@ -151,14 +151,14 @@
 <span class="sourceLineNo">143</span>    super(p_templateManager, __jamon_setOptionalArguments(p_implData));<a name="line.143"></a>
 <span class="sourceLineNo">144</span>    master = p_implData.getMaster();<a name="line.144"></a>
 <span class="sourceLineNo">145</span>    deadServers = p_implData.getDeadServers();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    metaLocation = p_implData.getMetaLocation();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    assignmentManager = p_implData.getAssignmentManager();<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    filter = p_implData.getFilter();<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    frags = p_implData.getFrags();<a name="line.149"></a>
+<span class="sourceLineNo">146</span>    serverManager = p_implData.getServerManager();<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    servers = p_implData.getServers();<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    assignmentManager = p_implData.getAssignmentManager();<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    metaLocation = p_implData.getMetaLocation();<a name="line.149"></a>
 <span class="sourceLineNo">150</span>    format = p_implData.getFormat();<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    serverManager = p_implData.getServerManager();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    servers = p_implData.getServers();<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    catalogJanitorEnabled = p_implData.getCatalogJanitorEnabled();<a name="line.153"></a>
+<span class="sourceLineNo">151</span>    frags = p_implData.getFrags();<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    catalogJanitorEnabled = p_implData.getCatalogJanitorEnabled();<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    filter = p_implData.getFilter();<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 public void renderNoFlush(final java.io.Writer jamonWriter)<a name="line.156"></a>
@@ -172,8 +172,8 @@
 <span class="sourceLineNo">164</span>      // 61, 3<a name="line.164"></a>
 <span class="sourceLineNo">165</span>      {<a name="line.165"></a>
 <span class="sourceLineNo">166</span>        org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl __jamon__var_0 = new org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl(this.getTemplateManager());<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        __jamon__var_0.setFormat("json" );<a name="line.167"></a>
-<span class="sourceLineNo">168</span>        __jamon__var_0.setFilter(filter);<a name="line.168"></a>
+<span class="sourceLineNo">167</span>        __jamon__var_0.setFilter(filter);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        __jamon__var_0.setFormat("json" );<a name="line.168"></a>
 <span class="sourceLineNo">169</span>        __jamon__var_0.renderNoFlush(jamonWriter);<a name="line.169"></a>
 <span class="sourceLineNo">170</span>      }<a name="line.170"></a>
 <span class="sourceLineNo">171</span>      // 61, 68<a name="line.171"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
index 39f7e50..efccb82 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
@@ -33,10 +33,10 @@
 <span class="sourceLineNo">025</span>  requiredArguments = {<a name="line.25"></a>
 <span class="sourceLineNo">026</span>    @org.jamon.annotations.Argument(name = "regionServer", type = "HRegionServer")},<a name="line.26"></a>
 <span class="sourceLineNo">027</span>  optionalArguments = {<a name="line.27"></a>
-<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.28"></a>
-<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String"),<a name="line.29"></a>
-<span class="sourceLineNo">030</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String"),<a name="line.30"></a>
-<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "format", type = "String")})<a name="line.31"></a>
+<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String"),<a name="line.28"></a>
+<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.29"></a>
+<span class="sourceLineNo">030</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String"),<a name="line.30"></a>
+<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "filter", type = "String")})<a name="line.31"></a>
 <span class="sourceLineNo">032</span>public class RSStatusTmpl<a name="line.32"></a>
 <span class="sourceLineNo">033</span>  extends org.jamon.AbstractTemplateProxy<a name="line.33"></a>
 <span class="sourceLineNo">034</span>{<a name="line.34"></a>
@@ -77,74 +77,74 @@
 <span class="sourceLineNo">069</span>      return m_regionServer;<a name="line.69"></a>
 <span class="sourceLineNo">070</span>    }<a name="line.70"></a>
 <span class="sourceLineNo">071</span>    private HRegionServer m_regionServer;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    // 21, 1<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    public void setFilter(String filter)<a name="line.73"></a>
+<span class="sourceLineNo">072</span>    // 24, 1<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    public void setBcv(String bcv)<a name="line.73"></a>
 <span class="sourceLineNo">074</span>    {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      // 21, 1<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      m_filter = filter;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      m_filter__IsNotDefault = true;<a name="line.77"></a>
+<span class="sourceLineNo">075</span>      // 24, 1<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      m_bcv = bcv;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      m_bcv__IsNotDefault = true;<a name="line.77"></a>
 <span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    public String getFilter()<a name="line.79"></a>
+<span class="sourceLineNo">079</span>    public String getBcv()<a name="line.79"></a>
 <span class="sourceLineNo">080</span>    {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return m_filter;<a name="line.81"></a>
+<span class="sourceLineNo">081</span>      return m_bcv;<a name="line.81"></a>
 <span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    private String m_filter;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public boolean getFilter__IsNotDefault()<a name="line.84"></a>
+<span class="sourceLineNo">083</span>    private String m_bcv;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    public boolean getBcv__IsNotDefault()<a name="line.84"></a>
 <span class="sourceLineNo">085</span>    {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      return m_filter__IsNotDefault;<a name="line.86"></a>
+<span class="sourceLineNo">086</span>      return m_bcv__IsNotDefault;<a name="line.86"></a>
 <span class="sourceLineNo">087</span>    }<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    private boolean m_filter__IsNotDefault;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    // 23, 1<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    public void setBcn(String bcn)<a name="line.90"></a>
+<span class="sourceLineNo">088</span>    private boolean m_bcv__IsNotDefault;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    // 22, 1<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public void setFormat(String format)<a name="line.90"></a>
 <span class="sourceLineNo">091</span>    {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      // 23, 1<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      m_bcn = bcn;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      m_bcn__IsNotDefault = true;<a name="line.94"></a>
+<span class="sourceLineNo">092</span>      // 22, 1<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      m_format = format;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      m_format__IsNotDefault = true;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>    }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public String getBcn()<a name="line.96"></a>
+<span class="sourceLineNo">096</span>    public String getFormat()<a name="line.96"></a>
 <span class="sourceLineNo">097</span>    {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      return m_bcn;<a name="line.98"></a>
+<span class="sourceLineNo">098</span>      return m_format;<a name="line.98"></a>
 <span class="sourceLineNo">099</span>    }<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    private String m_bcn;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    public boolean getBcn__IsNotDefault()<a name="line.101"></a>
+<span class="sourceLineNo">100</span>    private String m_format;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    public boolean getFormat__IsNotDefault()<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      return m_bcn__IsNotDefault;<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      return m_format__IsNotDefault;<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    }<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    private boolean m_bcn__IsNotDefault;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    // 24, 1<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    public void setBcv(String bcv)<a name="line.107"></a>
+<span class="sourceLineNo">105</span>    private boolean m_format__IsNotDefault;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    // 23, 1<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    public void setBcn(String bcn)<a name="line.107"></a>
 <span class="sourceLineNo">108</span>    {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      // 24, 1<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      m_bcv = bcv;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      m_bcv__IsNotDefault = true;<a name="line.111"></a>
+<span class="sourceLineNo">109</span>      // 23, 1<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      m_bcn = bcn;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      m_bcn__IsNotDefault = true;<a name="line.111"></a>
 <span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    public String getBcv()<a name="line.113"></a>
+<span class="sourceLineNo">113</span>    public String getBcn()<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      return m_bcv;<a name="line.115"></a>
+<span class="sourceLineNo">115</span>      return m_bcn;<a name="line.115"></a>
 <span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    private String m_bcv;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public boolean getBcv__IsNotDefault()<a name="line.118"></a>
+<span class="sourceLineNo">117</span>    private String m_bcn;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    public boolean getBcn__IsNotDefault()<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_bcv__IsNotDefault;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_bcn__IsNotDefault;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private boolean m_bcv__IsNotDefault;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    // 22, 1<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    public void setFormat(String format)<a name="line.124"></a>
+<span class="sourceLineNo">122</span>    private boolean m_bcn__IsNotDefault;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    // 21, 1<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    public void setFilter(String filter)<a name="line.124"></a>
 <span class="sourceLineNo">125</span>    {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      // 22, 1<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      m_format = format;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      m_format__IsNotDefault = true;<a name="line.128"></a>
+<span class="sourceLineNo">126</span>      // 21, 1<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      m_filter = filter;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      m_filter__IsNotDefault = true;<a name="line.128"></a>
 <span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    public String getFormat()<a name="line.130"></a>
+<span class="sourceLineNo">130</span>    public String getFilter()<a name="line.130"></a>
 <span class="sourceLineNo">131</span>    {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      return m_format;<a name="line.132"></a>
+<span class="sourceLineNo">132</span>      return m_filter;<a name="line.132"></a>
 <span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    private String m_format;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    public boolean getFormat__IsNotDefault()<a name="line.135"></a>
+<span class="sourceLineNo">134</span>    private String m_filter;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    public boolean getFilter__IsNotDefault()<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      return m_format__IsNotDefault;<a name="line.137"></a>
+<span class="sourceLineNo">137</span>      return m_filter__IsNotDefault;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    private boolean m_format__IsNotDefault;<a name="line.139"></a>
+<span class="sourceLineNo">139</span>    private boolean m_filter__IsNotDefault;<a name="line.139"></a>
 <span class="sourceLineNo">140</span>  }<a name="line.140"></a>
 <span class="sourceLineNo">141</span>  @Override<a name="line.141"></a>
 <span class="sourceLineNo">142</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.142"></a>
@@ -156,31 +156,31 @@
 <span class="sourceLineNo">148</span>    return (ImplData) super.getImplData();<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>  protected String filter;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.152"></a>
+<span class="sourceLineNo">151</span>  protected String bcv;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.152"></a>
 <span class="sourceLineNo">153</span>  {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    (getImplData()).setFilter(p_filter);<a name="line.154"></a>
+<span class="sourceLineNo">154</span>    (getImplData()).setBcv(p_bcv);<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    return this;<a name="line.155"></a>
 <span class="sourceLineNo">156</span>  }<a name="line.156"></a>
 <span class="sourceLineNo">157</span>  <a name="line.157"></a>
-<span class="sourceLineNo">158</span>  protected String bcn;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.159"></a>
+<span class="sourceLineNo">158</span>  protected String format;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFormat(String p_format)<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    (getImplData()).setBcn(p_bcn);<a name="line.161"></a>
+<span class="sourceLineNo">161</span>    (getImplData()).setFormat(p_format);<a name="line.161"></a>
 <span class="sourceLineNo">162</span>    return this;<a name="line.162"></a>
 <span class="sourceLineNo">163</span>  }<a name="line.163"></a>
 <span class="sourceLineNo">164</span>  <a name="line.164"></a>
-<span class="sourceLineNo">165</span>  protected String bcv;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.166"></a>
+<span class="sourceLineNo">165</span>  protected String bcn;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.166"></a>
 <span class="sourceLineNo">167</span>  {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    (getImplData()).setBcv(p_bcv);<a name="line.168"></a>
+<span class="sourceLineNo">168</span>    (getImplData()).setBcn(p_bcn);<a name="line.168"></a>
 <span class="sourceLineNo">169</span>    return this;<a name="line.169"></a>
 <span class="sourceLineNo">170</span>  }<a name="line.170"></a>
 <span class="sourceLineNo">171</span>  <a name="line.171"></a>
-<span class="sourceLineNo">172</span>  protected String format;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFormat(String p_format)<a name="line.173"></a>
+<span class="sourceLineNo">172</span>  protected String filter;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.173"></a>
 <span class="sourceLineNo">174</span>  {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    (getImplData()).setFormat(p_format);<a name="line.175"></a>
+<span class="sourceLineNo">175</span>    (getImplData()).setFilter(p_filter);<a name="line.175"></a>
 <span class="sourceLineNo">176</span>    return this;<a name="line.176"></a>
 <span class="sourceLineNo">177</span>  }<a name="line.177"></a>
 <span class="sourceLineNo">178</span>  <a name="line.178"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.Intf.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.Intf.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.Intf.html
index 39f7e50..efccb82 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.Intf.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.Intf.html
@@ -33,10 +33,10 @@
 <span class="sourceLineNo">025</span>  requiredArguments = {<a name="line.25"></a>
 <span class="sourceLineNo">026</span>    @org.jamon.annotations.Argument(name = "regionServer", type = "HRegionServer")},<a name="line.26"></a>
 <span class="sourceLineNo">027</span>  optionalArguments = {<a name="line.27"></a>
-<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.28"></a>
-<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String"),<a name="line.29"></a>
-<span class="sourceLineNo">030</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String"),<a name="line.30"></a>
-<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "format", type = "String")})<a name="line.31"></a>
+<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String"),<a name="line.28"></a>
+<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.29"></a>
+<span class="sourceLineNo">030</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String"),<a name="line.30"></a>
+<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "filter", type = "String")})<a name="line.31"></a>
 <span class="sourceLineNo">032</span>public class RSStatusTmpl<a name="line.32"></a>
 <span class="sourceLineNo">033</span>  extends org.jamon.AbstractTemplateProxy<a name="line.33"></a>
 <span class="sourceLineNo">034</span>{<a name="line.34"></a>
@@ -77,74 +77,74 @@
 <span class="sourceLineNo">069</span>      return m_regionServer;<a name="line.69"></a>
 <span class="sourceLineNo">070</span>    }<a name="line.70"></a>
 <span class="sourceLineNo">071</span>    private HRegionServer m_regionServer;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    // 21, 1<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    public void setFilter(String filter)<a name="line.73"></a>
+<span class="sourceLineNo">072</span>    // 24, 1<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    public void setBcv(String bcv)<a name="line.73"></a>
 <span class="sourceLineNo">074</span>    {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      // 21, 1<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      m_filter = filter;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      m_filter__IsNotDefault = true;<a name="line.77"></a>
+<span class="sourceLineNo">075</span>      // 24, 1<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      m_bcv = bcv;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      m_bcv__IsNotDefault = true;<a name="line.77"></a>
 <span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    public String getFilter()<a name="line.79"></a>
+<span class="sourceLineNo">079</span>    public String getBcv()<a name="line.79"></a>
 <span class="sourceLineNo">080</span>    {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return m_filter;<a name="line.81"></a>
+<span class="sourceLineNo">081</span>      return m_bcv;<a name="line.81"></a>
 <span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    private String m_filter;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public boolean getFilter__IsNotDefault()<a name="line.84"></a>
+<span class="sourceLineNo">083</span>    private String m_bcv;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    public boolean getBcv__IsNotDefault()<a name="line.84"></a>
 <span class="sourceLineNo">085</span>    {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      return m_filter__IsNotDefault;<a name="line.86"></a>
+<span class="sourceLineNo">086</span>      return m_bcv__IsNotDefault;<a name="line.86"></a>
 <span class="sourceLineNo">087</span>    }<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    private boolean m_filter__IsNotDefault;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    // 23, 1<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    public void setBcn(String bcn)<a name="line.90"></a>
+<span class="sourceLineNo">088</span>    private boolean m_bcv__IsNotDefault;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    // 22, 1<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public void setFormat(String format)<a name="line.90"></a>
 <span class="sourceLineNo">091</span>    {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      // 23, 1<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      m_bcn = bcn;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      m_bcn__IsNotDefault = true;<a name="line.94"></a>
+<span class="sourceLineNo">092</span>      // 22, 1<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      m_format = format;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      m_format__IsNotDefault = true;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>    }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public String getBcn()<a name="line.96"></a>
+<span class="sourceLineNo">096</span>    public String getFormat()<a name="line.96"></a>
 <span class="sourceLineNo">097</span>    {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      return m_bcn;<a name="line.98"></a>
+<span class="sourceLineNo">098</span>      return m_format;<a name="line.98"></a>
 <span class="sourceLineNo">099</span>    }<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    private String m_bcn;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    public boolean getBcn__IsNotDefault()<a name="line.101"></a>
+<span class="sourceLineNo">100</span>    private String m_format;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    public boolean getFormat__IsNotDefault()<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      return m_bcn__IsNotDefault;<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      return m_format__IsNotDefault;<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    }<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    private boolean m_bcn__IsNotDefault;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    // 24, 1<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    public void setBcv(String bcv)<a name="line.107"></a>
+<span class="sourceLineNo">105</span>    private boolean m_format__IsNotDefault;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    // 23, 1<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    public void setBcn(String bcn)<a name="line.107"></a>
 <span class="sourceLineNo">108</span>    {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      // 24, 1<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      m_bcv = bcv;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      m_bcv__IsNotDefault = true;<a name="line.111"></a>
+<span class="sourceLineNo">109</span>      // 23, 1<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      m_bcn = bcn;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      m_bcn__IsNotDefault = true;<a name="line.111"></a>
 <span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    public String getBcv()<a name="line.113"></a>
+<span class="sourceLineNo">113</span>    public String getBcn()<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      return m_bcv;<a name="line.115"></a>
+<span class="sourceLineNo">115</span>      return m_bcn;<a name="line.115"></a>
 <span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    private String m_bcv;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public boolean getBcv__IsNotDefault()<a name="line.118"></a>
+<span class="sourceLineNo">117</span>    private String m_bcn;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    public boolean getBcn__IsNotDefault()<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_bcv__IsNotDefault;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_bcn__IsNotDefault;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private boolean m_bcv__IsNotDefault;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    // 22, 1<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    public void setFormat(String format)<a name="line.124"></a>
+<span class="sourceLineNo">122</span>    private boolean m_bcn__IsNotDefault;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    // 21, 1<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    public void setFilter(String filter)<a name="line.124"></a>
 <span class="sourceLineNo">125</span>    {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      // 22, 1<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      m_format = format;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      m_format__IsNotDefault = true;<a name="line.128"></a>
+<span class="sourceLineNo">126</span>      // 21, 1<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      m_filter = filter;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      m_filter__IsNotDefault = true;<a name="line.128"></a>
 <span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    public String getFormat()<a name="line.130"></a>
+<span class="sourceLineNo">130</span>    public String getFilter()<a name="line.130"></a>
 <span class="sourceLineNo">131</span>    {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      return m_format;<a name="line.132"></a>
+<span class="sourceLineNo">132</span>      return m_filter;<a name="line.132"></a>
 <span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    private String m_format;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    public boolean getFormat__IsNotDefault()<a name="line.135"></a>
+<span class="sourceLineNo">134</span>    private String m_filter;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    public boolean getFilter__IsNotDefault()<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      return m_format__IsNotDefault;<a name="line.137"></a>
+<span class="sourceLineNo">137</span>      return m_filter__IsNotDefault;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    private boolean m_format__IsNotDefault;<a name="line.139"></a>
+<span class="sourceLineNo">139</span>    private boolean m_filter__IsNotDefault;<a name="line.139"></a>
 <span class="sourceLineNo">140</span>  }<a name="line.140"></a>
 <span class="sourceLineNo">141</span>  @Override<a name="line.141"></a>
 <span class="sourceLineNo">142</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.142"></a>
@@ -156,31 +156,31 @@
 <span class="sourceLineNo">148</span>    return (ImplData) super.getImplData();<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>  protected String filter;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.152"></a>
+<span class="sourceLineNo">151</span>  protected String bcv;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.152"></a>
 <span class="sourceLineNo">153</span>  {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    (getImplData()).setFilter(p_filter);<a name="line.154"></a>
+<span class="sourceLineNo">154</span>    (getImplData()).setBcv(p_bcv);<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    return this;<a name="line.155"></a>
 <span class="sourceLineNo">156</span>  }<a name="line.156"></a>
 <span class="sourceLineNo">157</span>  <a name="line.157"></a>
-<span class="sourceLineNo">158</span>  protected String bcn;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.159"></a>
+<span class="sourceLineNo">158</span>  protected String format;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFormat(String p_format)<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    (getImplData()).setBcn(p_bcn);<a name="line.161"></a>
+<span class="sourceLineNo">161</span>    (getImplData()).setFormat(p_format);<a name="line.161"></a>
 <span class="sourceLineNo">162</span>    return this;<a name="line.162"></a>
 <span class="sourceLineNo">163</span>  }<a name="line.163"></a>
 <span class="sourceLineNo">164</span>  <a name="line.164"></a>
-<span class="sourceLineNo">165</span>  protected String bcv;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.166"></a>
+<span class="sourceLineNo">165</span>  protected String bcn;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.166"></a>
 <span class="sourceLineNo">167</span>  {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    (getImplData()).setBcv(p_bcv);<a name="line.168"></a>
+<span class="sourceLineNo">168</span>    (getImplData()).setBcn(p_bcn);<a name="line.168"></a>
 <span class="sourceLineNo">169</span>    return this;<a name="line.169"></a>
 <span class="sourceLineNo">170</span>  }<a name="line.170"></a>
 <span class="sourceLineNo">171</span>  <a name="line.171"></a>
-<span class="sourceLineNo">172</span>  protected String format;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFormat(String p_format)<a name="line.173"></a>
+<span class="sourceLineNo">172</span>  protected String filter;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.173"></a>
 <span class="sourceLineNo">174</span>  {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    (getImplData()).setFormat(p_format);<a name="line.175"></a>
+<span class="sourceLineNo">175</span>    (getImplData()).setFilter(p_filter);<a name="line.175"></a>
 <span class="sourceLineNo">176</span>    return this;<a name="line.176"></a>
 <span class="sourceLineNo">177</span>  }<a name="line.177"></a>
 <span class="sourceLineNo">178</span>  <a name="line.178"></a>


[29/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
index 6c614c0..8447279 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
@@ -36,2538 +36,2584 @@
 <span class="sourceLineNo">028</span>import java.util.HashSet;<a name="line.28"></a>
 <span class="sourceLineNo">029</span>import java.util.Iterator;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>import java.util.List;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.NavigableSet;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.Set;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.concurrent.Callable;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.concurrent.CompletionService;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.concurrent.ConcurrentHashMap;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.concurrent.ExecutionException;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.concurrent.ExecutorCompletionService;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.concurrent.Future;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import java.util.concurrent.locks.ReentrantLock;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import java.util.concurrent.locks.ReentrantReadWriteLock;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.function.Predicate;<a name="line.43"></a>
-<span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.commons.logging.Log;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.commons.logging.LogFactory;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.conf.Configuration;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.fs.FileSystem;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.fs.Path;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.Cell;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.HConstants;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.TableName;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.backup.FailedArchiveException;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.io.crypto.Encryption;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoder;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoderImpl;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.io.hfile.HFileScanner;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.io.hfile.InvalidHFileException;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionProgress;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.regionserver.compactions.OffPeakHours;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.security.EncryptionUtil;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.security.User;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescriptor;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.util.ChecksumType;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.ReflectionUtils;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.util.StringUtils;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>import com.google.common.annotations.VisibleForTesting;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.google.common.base.Preconditions;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.google.common.collect.ImmutableCollection;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.google.common.collect.ImmutableList;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import com.google.common.collect.Lists;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import com.google.common.collect.Sets;<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>/**<a name="line.102"></a>
-<span class="sourceLineNo">103</span> * A Store holds a column family in a Region.  Its a memstore and a set of zero<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * or more StoreFiles, which stretch backwards over time.<a name="line.104"></a>
-<span class="sourceLineNo">105</span> *<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * &lt;p&gt;There's no reason to consider append-logging at this level; all logging<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * and locking is handled at the HRegion level.  Store just provides<a name="line.107"></a>
-<span class="sourceLineNo">108</span> * services to manage sets of StoreFiles.  One of the most important of those<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * services is compaction services where files are aggregated once they pass<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * a configurable threshold.<a name="line.110"></a>
-<span class="sourceLineNo">111</span> *<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * &lt;p&gt;Locking and transactions are handled at a higher level.  This API should<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * not be called directly but by an HRegion manager.<a name="line.113"></a>
-<span class="sourceLineNo">114</span> */<a name="line.114"></a>
-<span class="sourceLineNo">115</span>@InterfaceAudience.Private<a name="line.115"></a>
-<span class="sourceLineNo">116</span>public class HStore implements Store {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  public static final String MEMSTORE_CLASS_NAME = "hbase.regionserver.memstore.class";<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  public static final String COMPACTCHECKER_INTERVAL_MULTIPLIER_KEY =<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      "hbase.server.compactchecker.interval.multiplier";<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  public static final String BLOCKING_STOREFILES_KEY = "hbase.hstore.blockingStoreFiles";<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  public static final String BLOCK_STORAGE_POLICY_KEY = "hbase.hstore.block.storage.policy";<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  // keep in accordance with HDFS default storage policy<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  public static final String DEFAULT_BLOCK_STORAGE_POLICY = "HOT";<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public static final int DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER = 1000;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  public static final int DEFAULT_BLOCKING_STOREFILE_COUNT = 7;<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>  private static final Log LOG = LogFactory.getLog(HStore.class);<a name="line.127"></a>
-<span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>  protected final MemStore memstore;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  // This stores directory in the filesystem.<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  protected final HRegion region;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private final HColumnDescriptor family;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private final HRegionFileSystem fs;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  protected Configuration conf;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  protected CacheConfig cacheConf;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  private long lastCompactSize = 0;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  volatile boolean forceMajor = false;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  /* how many bytes to write between status checks */<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  static int closeCheckInterval = 0;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  private volatile long storeSize = 0L;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private volatile long totalUncompressedBytes = 0L;<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>  /**<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * RWLock for store operations.<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   * Locked in shared mode when the list of component stores is looked at:<a name="line.145"></a>
-<span class="sourceLineNo">146</span>   *   - all reads/writes to table data<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   *   - checking for split<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   * Locked in exclusive mode when the list of component stores is modified:<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   *   - closing<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   *   - completing a compaction<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   */<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  /**<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * Lock specific to archiving compacted store files.  This avoids races around<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   * the combination of retrieving the list of compacted files and moving them to<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   * the archive directory.  Since this is usually a background process (other than<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * on close), we don't want to handle this with the store write lock, which would<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   * block readers and degrade performance.<a name="line.158"></a>
-<span class="sourceLineNo">159</span>   *<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   * Locked by:<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   *   - CompactedHFilesDispatchHandler via closeAndArchiveCompactedFiles()<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   *   - close()<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   */<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  final ReentrantLock archiveLock = new ReentrantLock();<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  private final boolean verifyBulkLoads;<a name="line.166"></a>
-<span class="sourceLineNo">167</span><a name="line.167"></a>
-<span class="sourceLineNo">168</span>  private ScanInfo scanInfo;<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>  // TODO: ideally, this should be part of storeFileManager, as we keep passing this to it.<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  final List&lt;StoreFile&gt; filesCompacting = Lists.newArrayList();<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  // All access must be synchronized.<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  private final Set&lt;ChangedReadersObserver&gt; changedReaderObservers =<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    Collections.newSetFromMap(new ConcurrentHashMap&lt;ChangedReadersObserver, Boolean&gt;());<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>  protected final int blocksize;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  private HFileDataBlockEncoder dataBlockEncoder;<a name="line.178"></a>
-<span class="sourceLineNo">179</span><a name="line.179"></a>
-<span class="sourceLineNo">180</span>  /** Checksum configuration */<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  protected ChecksumType checksumType;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  protected int bytesPerChecksum;<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  // Comparing KeyValues<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  protected final CellComparator comparator;<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>  final StoreEngine&lt;?, ?, ?, ?&gt; storeEngine;<a name="line.187"></a>
-<span class="sourceLineNo">188</span><a name="line.188"></a>
-<span class="sourceLineNo">189</span>  private static final AtomicBoolean offPeakCompactionTracker = new AtomicBoolean();<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  private volatile OffPeakHours offPeakHours;<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>  private static final int DEFAULT_FLUSH_RETRIES_NUMBER = 10;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>  private int flushRetriesNumber;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>  private int pauseTime;<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>  private long blockingFileCount;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private int compactionCheckMultiplier;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>  protected Encryption.Context cryptoContext = Encryption.Context.NONE;<a name="line.198"></a>
-<span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>  private volatile long flushedCellsCount = 0;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>  private volatile long compactedCellsCount = 0;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>  private volatile long majorCompactedCellsCount = 0;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  private volatile long flushedCellsSize = 0;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  private volatile long flushedOutputFileSize = 0;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  private volatile long compactedCellsSize = 0;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  private volatile long majorCompactedCellsSize = 0;<a name="line.206"></a>
-<span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>  /**<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   * Constructor<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   * @param region<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   * @param family HColumnDescriptor for this column<a name="line.211"></a>
-<span class="sourceLineNo">212</span>   * @param confParam configuration object<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * failed.  Can be null.<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   * @throws IOException<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   */<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  protected HStore(final HRegion region, final HColumnDescriptor family,<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      final Configuration confParam) throws IOException {<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>    this.fs = region.getRegionFileSystem();<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>    // Assemble the store's home directory and Ensure it exists.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    fs.createStoreDir(family.getNameAsString());<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    this.region = region;<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    this.family = family;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    // 'conf' renamed to 'confParam' b/c we use this.conf in the constructor<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    // CompoundConfiguration will look for keys in reverse order of addition, so we'd<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    // add global config first, then table and cf overrides, then cf metadata.<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    this.conf = new CompoundConfiguration()<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      .add(confParam)<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      .addStringMap(region.getTableDesc().getConfiguration())<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      .addStringMap(family.getConfiguration())<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      .addBytesMap(family.getValues());<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    this.blocksize = family.getBlocksize();<a name="line.233"></a>
-<span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>    // set block storage policy for store directory<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    String policyName = family.getStoragePolicy();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    if (null == policyName) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      policyName = this.conf.get(BLOCK_STORAGE_POLICY_KEY, DEFAULT_BLOCK_STORAGE_POLICY);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    this.fs.setStoragePolicy(family.getNameAsString(), policyName.trim());<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>    this.dataBlockEncoder =<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        new HFileDataBlockEncoderImpl(family.getDataBlockEncoding());<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    this.comparator = region.getCellComparator();<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    // used by ScanQueryMatcher<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    long timeToPurgeDeletes =<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        Math.max(conf.getLong("hbase.hstore.time.to.purge.deletes", 0), 0);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    LOG.trace("Time to purge deletes set to " + timeToPurgeDeletes +<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        "ms in store " + this);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    // Get TTL<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    long ttl = determineTTLFromFamily(family);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    // Why not just pass a HColumnDescriptor in here altogether?  Even if have<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    // to clone it?<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    scanInfo = new ScanInfo(conf, family, ttl, timeToPurgeDeletes, this.comparator);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    MemoryCompactionPolicy inMemoryCompaction = family.getInMemoryCompaction();<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    if(inMemoryCompaction == null) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      inMemoryCompaction = MemoryCompactionPolicy.valueOf(<a name="line.258"></a>
-<span class="sourceLineNo">259</span>          conf.get(CompactingMemStore.COMPACTING_MEMSTORE_TYPE_KEY,<a name="line.259"></a>
-<span class="sourceLineNo">260</span>              CompactingMemStore.COMPACTING_MEMSTORE_TYPE_DEFAULT));<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    String className;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    switch (inMemoryCompaction) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      case BASIC :<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      case EAGER :<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        Class&lt;? extends CompactingMemStore&gt; clz = conf.getClass(MEMSTORE_CLASS_NAME,<a name="line.266"></a>
-<span class="sourceLineNo">267</span>          CompactingMemStore.class, CompactingMemStore.class);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        className = clz.getName();<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        this.memstore = ReflectionUtils.newInstance(clz, new Object[] { conf, this.comparator, this,<a name="line.269"></a>
-<span class="sourceLineNo">270</span>            this.getHRegion().getRegionServicesForStores(), inMemoryCompaction});<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        break;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      case NONE :<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      default:<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        className = DefaultMemStore.class.getName();<a name="line.274"></a>
-<span class="sourceLineNo">275</span>        this.memstore = ReflectionUtils.instantiateWithCustomCtor(className, new Class[] {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        Configuration.class, CellComparator.class }, new Object[] { conf, this.comparator });<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    LOG.info("Memstore class name is " + className);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    this.offPeakHours = OffPeakHours.getInstance(conf);<a name="line.279"></a>
-<span class="sourceLineNo">280</span><a name="line.280"></a>
-<span class="sourceLineNo">281</span>    // Setting up cache configuration for this family<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    createCacheConf(family);<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>    this.verifyBulkLoads = conf.getBoolean("hbase.hstore.bulkload.verify", false);<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    this.blockingFileCount =<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        conf.getInt(BLOCKING_STOREFILES_KEY, DEFAULT_BLOCKING_STOREFILE_COUNT);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    this.compactionCheckMultiplier = conf.getInt(<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        COMPACTCHECKER_INTERVAL_MULTIPLIER_KEY, DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    if (this.compactionCheckMultiplier &lt;= 0) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      LOG.error("Compaction check period multiplier must be positive, setting default: "<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          + DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER);<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      this.compactionCheckMultiplier = DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    }<a name="line.294"></a>
-<span class="sourceLineNo">295</span><a name="line.295"></a>
-<span class="sourceLineNo">296</span>    if (HStore.closeCheckInterval == 0) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      HStore.closeCheckInterval = conf.getInt(<a name="line.297"></a>
-<span class="sourceLineNo">298</span>          "hbase.hstore.close.check.interval", 10*1000*1000 /* 10 MB */);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    }<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>    this.storeEngine = createStoreEngine(this, this.conf, this.comparator);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    this.storeEngine.getStoreFileManager().loadFiles(loadStoreFiles());<a name="line.302"></a>
-<span class="sourceLineNo">303</span><a name="line.303"></a>
-<span class="sourceLineNo">304</span>    // Initialize checksum type from name. The names are CRC32, CRC32C, etc.<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    this.checksumType = getChecksumType(conf);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    // initilize bytes per checksum<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    this.bytesPerChecksum = getBytesPerChecksum(conf);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    flushRetriesNumber = conf.getInt(<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        "hbase.hstore.flush.retries.number", DEFAULT_FLUSH_RETRIES_NUMBER);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    pauseTime = conf.getInt(HConstants.HBASE_SERVER_PAUSE, HConstants.DEFAULT_HBASE_SERVER_PAUSE);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    if (flushRetriesNumber &lt;= 0) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      throw new IllegalArgumentException(<a name="line.312"></a>
-<span class="sourceLineNo">313</span>          "hbase.hstore.flush.retries.number must be &gt; 0, not "<a name="line.313"></a>
-<span class="sourceLineNo">314</span>              + flushRetriesNumber);<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    cryptoContext = EncryptionUtil.createEncryptionContext(conf, family);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>  }<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>  /**<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   * Creates the cache config.<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * @param family The current column family.<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   */<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  protected void createCacheConf(final HColumnDescriptor family) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    this.cacheConf = new CacheConfig(conf, family);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>  /**<a name="line.327"></a>
-<span class="sourceLineNo">328</span>   * Creates the store engine configured for the given Store.<a name="line.328"></a>
-<span class="sourceLineNo">329</span>   * @param store The store. An unfortunate dependency needed due to it<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   *              being passed to coprocessors via the compactor.<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * @param conf Store configuration.<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * @param kvComparator KVComparator for storeFileManager.<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   * @return StoreEngine to use.<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   */<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  protected StoreEngine&lt;?, ?, ?, ?&gt; createStoreEngine(Store store, Configuration conf,<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      CellComparator kvComparator) throws IOException {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    return StoreEngine.create(store, conf, comparator);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>  /**<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * @param family<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * @return TTL in seconds of the specified family<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   */<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  public static long determineTTLFromFamily(final HColumnDescriptor family) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    // HCD.getTimeToLive returns ttl in seconds.  Convert to milliseconds.<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    long ttl = family.getTimeToLive();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    if (ttl == HConstants.FOREVER) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      // Default is unlimited ttl.<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      ttl = Long.MAX_VALUE;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    } else if (ttl == -1) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      ttl = Long.MAX_VALUE;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    } else {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      // Second -&gt; ms adjust for user data<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      ttl *= 1000;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    return ttl;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  }<a name="line.357"></a>
-<span class="sourceLineNo">358</span><a name="line.358"></a>
-<span class="sourceLineNo">359</span>  @Override<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  public String getColumnFamilyName() {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    return this.family.getNameAsString();<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>  @Override<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  public TableName getTableName() {<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    return this.getRegionInfo().getTable();<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  @Override<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public FileSystem getFileSystem() {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    return this.fs.getFileSystem();<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  public HRegionFileSystem getRegionFileSystem() {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    return this.fs;<a name="line.375"></a>
-<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>  /* Implementation of StoreConfigInformation */<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  @Override<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  public long getStoreFileTtl() {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    // TTL only applies if there's no MIN_VERSIONs setting on the column.<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    return (this.scanInfo.getMinVersions() == 0) ? this.scanInfo.getTtl() : Long.MAX_VALUE;<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>  @Override<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  public long getMemstoreFlushSize() {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    // TODO: Why is this in here?  The flushsize of the region rather than the store?  St.Ack<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    return this.region.memstoreFlushSize;<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>  @Override<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  @Deprecated<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  public long getFlushableSize() {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    MemstoreSize size = getSizeToFlush();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    return size.getHeapSize();<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  }<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  @Override<a name="line.398"></a>
-<span class="sourceLineNo">399</span>  public MemstoreSize getSizeToFlush() {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    return this.memstore.getFlushableSize();<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  @Override<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  @Deprecated<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  public long getSnapshotSize() {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    MemstoreSize size = getSizeOfSnapshot();<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    return size.getHeapSize();<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  }<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>  @Override<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  public MemstoreSize getSizeOfSnapshot() {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    return this.memstore.getSnapshotSize();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  }<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>  @Override<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  public long getCompactionCheckMultiplier() {<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    return this.compactionCheckMultiplier;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>  @Override<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  public long getBlockingFileCount() {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    return blockingFileCount;<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  }<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  /* End implementation of StoreConfigInformation */<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>  /**<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * Returns the configured bytesPerChecksum value.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * @param conf The configuration<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @return The bytesPerChecksum that is set in the configuration<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   */<a name="line.430"></a>
-<span class="sourceLineNo">431</span>  public static int getBytesPerChecksum(Configuration conf) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    return conf.getInt(HConstants.BYTES_PER_CHECKSUM,<a name="line.432"></a>
-<span class="sourceLineNo">433</span>                       HFile.DEFAULT_BYTES_PER_CHECKSUM);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
-<span class="sourceLineNo">435</span><a name="line.435"></a>
-<span class="sourceLineNo">436</span>  /**<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * Returns the configured checksum algorithm.<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   * @param conf The configuration<a name="line.438"></a>
-<span class="sourceLineNo">439</span>   * @return The checksum algorithm that is set in the configuration<a name="line.439"></a>
-<span class="sourceLineNo">440</span>   */<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  public static ChecksumType getChecksumType(Configuration conf) {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    String checksumName = conf.get(HConstants.CHECKSUM_TYPE_NAME);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    if (checksumName == null) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      return ChecksumType.getDefaultChecksumType();<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    } else {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      return ChecksumType.nameToType(checksumName);<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><a name="line.449"></a>
-<span class="sourceLineNo">450</span>  /**<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * @return how many bytes to write between status checks<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   */<a name="line.452"></a>
-<span class="sourceLineNo">453</span>  public static int getCloseCheckInterval() {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    return closeCheckInterval;<a name="line.454"></a>
-<span class="sourceLineNo">455</span>  }<a name="line.455"></a>
-<span class="sourceLineNo">456</span><a name="line.456"></a>
-<span class="sourceLineNo">457</span>  @Override<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  public HColumnDescriptor getFamily() {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    return this.family;<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>  /**<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * @return The maximum sequence id in all store files. Used for log replay.<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   */<a name="line.464"></a>
-<span class="sourceLineNo">465</span>  @Override<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  public long getMaxSequenceId() {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    return StoreUtils.getMaxSequenceIdInList(this.getStorefiles());<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  }<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>  @Override<a name="line.470"></a>
-<span class="sourceLineNo">471</span>  public long getMaxMemstoreTS() {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return StoreUtils.getMaxMemstoreTSInList(this.getStorefiles());<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * @param tabledir {@link Path} to where the table is being stored<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @param hri {@link HRegionInfo} for the region.<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * @param family {@link HColumnDescriptor} describing the column family<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * @return Path to family/Store home directory.<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   */<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  @Deprecated<a name="line.481"></a>
-<span class="sourceLineNo">482</span>  public static Path getStoreHomedir(final Path tabledir,<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      final HRegionInfo hri, final byte[] family) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    return getStoreHomedir(tabledir, hri.getEncodedName(), family);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  }<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>  /**<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * @param tabledir {@link Path} to where the table is being stored<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   * @param encodedName Encoded region name.<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * @param family {@link HColumnDescriptor} describing the column family<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * @return Path to family/Store home directory.<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   */<a name="line.492"></a>
-<span class="sourceLineNo">493</span>  @Deprecated<a name="line.493"></a>
-<span class="sourceLineNo">494</span>  public static Path getStoreHomedir(final Path tabledir,<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      final String encodedName, final byte[] family) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    return new Path(tabledir, new Path(encodedName, Bytes.toString(family)));<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  }<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>  @Override<a name="line.499"></a>
-<span class="sourceLineNo">500</span>  public HFileDataBlockEncoder getDataBlockEncoder() {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    return dataBlockEncoder;<a name="line.501"></a>
-<span class="sourceLineNo">502</span>  }<a name="line.502"></a>
-<span class="sourceLineNo">503</span><a name="line.503"></a>
-<span class="sourceLineNo">504</span>  /**<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * Should be used only in tests.<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @param blockEncoder the block delta encoder to use<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   */<a name="line.507"></a>
-<span class="sourceLineNo">508</span>  void setDataBlockEncoderInTest(HFileDataBlockEncoder blockEncoder) {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    this.dataBlockEncoder = blockEncoder;<a name="line.509"></a>
-<span class="sourceLineNo">510</span>  }<a name="line.510"></a>
-<span class="sourceLineNo">511</span><a name="line.511"></a>
-<span class="sourceLineNo">512</span>  /**<a name="line.512"></a>
-<span class="sourceLineNo">513</span>   * Creates an unsorted list of StoreFile loaded in parallel<a name="line.513"></a>
-<span class="sourceLineNo">514</span>   * from the given directory.<a name="line.514"></a>
-<span class="sourceLineNo">515</span>   * @throws IOException<a name="line.515"></a>
-<span class="sourceLineNo">516</span>   */<a name="line.516"></a>
-<span class="sourceLineNo">517</span>  private List&lt;StoreFile&gt; loadStoreFiles() throws IOException {<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    Collection&lt;StoreFileInfo&gt; files = fs.getStoreFiles(getColumnFamilyName());<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    return openStoreFiles(files);<a name="line.519"></a>
-<span class="sourceLineNo">520</span>  }<a name="line.520"></a>
-<span class="sourceLineNo">521</span><a name="line.521"></a>
-<span class="sourceLineNo">522</span>  private List&lt;StoreFile&gt; openStoreFiles(Collection&lt;StoreFileInfo&gt; files) throws IOException {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    if (files == null || files.isEmpty()) {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      return new ArrayList&lt;&gt;();<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    // initialize the thread pool for opening store files in parallel..<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    ThreadPoolExecutor storeFileOpenerThreadPool =<a name="line.527"></a>
-<span class="sourceLineNo">528</span>      this.region.getStoreFileOpenAndCloseThreadPool("StoreFileOpenerThread-" +<a name="line.528"></a>
-<span class="sourceLineNo">529</span>          this.getColumnFamilyName());<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    CompletionService&lt;StoreFile&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeFileOpenerThreadPool);<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>    int totalValidStoreFile = 0;<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    for (final StoreFileInfo storeFileInfo: files) {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      // open each store file in parallel<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      completionService.submit(new Callable&lt;StoreFile&gt;() {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        @Override<a name="line.536"></a>
-<span class="sourceLineNo">537</span>        public StoreFile call() throws IOException {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>          StoreFile storeFile = createStoreFileAndReader(storeFileInfo);<a name="line.538"></a>
-<span class="sourceLineNo">539</span>          return storeFile;<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>      totalValidStoreFile++;<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>    ArrayList&lt;StoreFile&gt; results = new ArrayList&lt;&gt;(files.size());<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    IOException ioe = null;<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    try {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      for (int i = 0; i &lt; totalValidStoreFile; i++) {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>        try {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>          Future&lt;StoreFile&gt; future = completionService.take();<a name="line.550"></a>
-<span class="sourceLineNo">551</span>          StoreFile storeFile = future.get();<a name="line.551"></a>
-<span class="sourceLineNo">552</span>          if (storeFile != null) {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>            long length = storeFile.getReader().length();<a name="line.553"></a>
-<span class="sourceLineNo">554</span>            this.storeSize += length;<a name="line.554"></a>
-<span class="sourceLineNo">555</span>            this.totalUncompressedBytes += storeFile.getReader().getTotalUncompressedBytes();<a name="line.555"></a>
-<span class="sourceLineNo">556</span>            if (LOG.isDebugEnabled()) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>              LOG.debug("loaded " + storeFile.toStringDetailed());<a name="line.557"></a>
-<span class="sourceLineNo">558</span>            }<a name="line.558"></a>
-<span class="sourceLineNo">559</span>            results.add(storeFile);<a name="line.559"></a>
-<span class="sourceLineNo">560</span>          }<a name="line.560"></a>
-<span class="sourceLineNo">561</span>        } catch (InterruptedException e) {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>          if (ioe == null) ioe = new InterruptedIOException(e.getMessage());<a name="line.562"></a>
-<span class="sourceLineNo">563</span>        } catch (ExecutionException e) {<a name="line.563"></a>
-<span class="sourceLineNo">564</span>          if (ioe == null) ioe = new IOException(e.getCause());<a name="line.564"></a>
-<span class="sourceLineNo">565</span>        }<a name="line.565"></a>
-<span class="sourceLineNo">566</span>      }<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    } finally {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      storeFileOpenerThreadPool.shutdownNow();<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    }<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    if (ioe != null) {<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      // close StoreFile readers<a name="line.571"></a>
-<span class="sourceLineNo">572</span>      boolean evictOnClose =<a name="line.572"></a>
-<span class="sourceLineNo">573</span>          cacheConf != null? cacheConf.shouldEvictOnClose(): true;<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      for (StoreFile file : results) {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>        try {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>          if (file != null) file.closeReader(evictOnClose);<a name="line.576"></a>
-<span class="sourceLineNo">577</span>        } catch (IOException e) {<a name="line.577"></a>
-<span class="sourceLineNo">578</span>          LOG.warn(e.getMessage());<a name="line.578"></a>
-<span class="sourceLineNo">579</span>        }<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      }<a name="line.580"></a>
-<span class="sourceLineNo">581</span>      throw ioe;<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>    return results;<a name="line.584"></a>
-<span class="sourceLineNo">585</span>  }<a name="line.585"></a>
-<span class="sourceLineNo">586</span><a name="line.586"></a>
-<span class="sourceLineNo">587</span>  /**<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * Checks the underlying store files, and opens the files that  have not<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * been opened, and removes the store file readers for store files no longer<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   * available. Mainly used by secondary region replicas to keep up to date with<a name="line.590"></a>
-<span class="sourceLineNo">591</span>   * the primary region files.<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   * @throws IOException<a name="line.592"></a>
-<span class="sourceLineNo">593</span>   */<a name="line.593"></a>
-<span class="sourceLineNo">594</span>  @Override<a name="line.594"></a>
-<span class="sourceLineNo">595</span>  public void refreshStoreFiles() throws IOException {<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    Collection&lt;StoreFileInfo&gt; newFiles = fs.getStoreFiles(getColumnFamilyName());<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    refreshStoreFilesInternal(newFiles);<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 void refreshStoreFiles(Collection&lt;String&gt; newFiles) throws IOException {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    List&lt;StoreFileInfo&gt; storeFiles = new ArrayList&lt;&gt;(newFiles.size());<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    for (String file : newFiles) {<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      storeFiles.add(fs.getStoreFileInfo(getColumnFamilyName(), file));<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    }<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    refreshStoreFilesInternal(storeFiles);<a name="line.606"></a>
-<span class="sourceLineNo">607</span>  }<a name="line.607"></a>
-<span class="sourceLineNo">608</span><a name="line.608"></a>
-<span class="sourceLineNo">609</span>  /**<a name="line.609"></a>
-<span class="sourceLineNo">610</span>   * Checks the underlying store files, and opens the files that  have not<a name="line.610"></a>
-<span class="sourceLineNo">611</span>   * been opened, and removes the store file readers for store files no longer<a name="line.611"></a>
-<span class="sourceLineNo">612</span>   * available. Mainly used by secondary region replicas to keep up to date with<a name="line.612"></a>
-<span class="sourceLineNo">613</span>   * the primary region files.<a name="line.613"></a>
-<span class="sourceLineNo">614</span>   * @throws IOException<a name="line.614"></a>
-<span class="sourceLineNo">615</span>   */<a name="line.615"></a>
-<span class="sourceLineNo">616</span>  private void refreshStoreFilesInternal(Collection&lt;StoreFileInfo&gt; newFiles) throws IOException {<a name="line.616"></a>
-<span class="sourceLineNo">617</span>    StoreFileManager sfm = storeEngine.getStoreFileManager();<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    Collection&lt;StoreFile&gt; currentFiles = sfm.getStorefiles();<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    if (currentFiles == null) currentFiles = new ArrayList&lt;&gt;(0);<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>    if (newFiles == null) newFiles = new ArrayList&lt;&gt;(0);<a name="line.621"></a>
-<span class="sourceLineNo">622</span><a name="line.622"></a>
-<span class="sourceLineNo">623</span>    HashMap&lt;StoreFileInfo, StoreFile&gt; currentFilesSet = new HashMap&lt;&gt;(currentFiles.size());<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    for (StoreFile sf : currentFiles) {<a name="line.624"></a>
-<span class="sourceLineNo">625</span>      currentFilesSet.put(sf.getFileInfo(), sf);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    }<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    HashSet&lt;StoreFileInfo&gt; newFilesSet = new HashSet&lt;&gt;(newFiles);<a name="line.627"></a>
-<span class="sourceLineNo">628</span><a name="line.628"></a>
-<span class="sourceLineNo">629</span>    Set&lt;StoreFileInfo&gt; toBeAddedFiles = Sets.difference(newFilesSet, currentFilesSet.keySet());<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    Set&lt;StoreFileInfo&gt; toBeRemovedFiles = Sets.difference(currentFilesSet.keySet(), newFilesSet);<a name="line.630"></a>
-<span class="sourceLineNo">631</span><a name="line.631"></a>
-<span class="sourceLineNo">632</span>    if (toBeAddedFiles.isEmpty() &amp;&amp; toBeRemovedFiles.isEmpty()) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>      return;<a name="line.633"></a>
-<span class="sourceLineNo">634</span>    }<a name="line.634"></a>
-<span class="sourceLineNo">635</span><a name="line.635"></a>
-<span class="sourceLineNo">636</span>    LOG.info("Refreshing store files for region " + this.getRegionInfo().getRegionNameAsString()<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      + " files to add: " + toBeAddedFiles + " files to remove: " + toBeRemovedFiles);<a name="line.637"></a>
-<span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>    Set&lt;StoreFile&gt; toBeRemovedStoreFiles = new HashSet&lt;&gt;(toBeRemovedFiles.size());<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    for (StoreFileInfo sfi : toBeRemovedFiles) {<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      toBeRemovedStoreFiles.add(currentFilesSet.get(sfi));<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    }<a name="line.642"></a>
-<span class="sourceLineNo">643</span><a name="line.643"></a>
-<span class="sourceLineNo">644</span>    // try to open the files<a name="line.644"></a>
-<span class="sourceLineNo">645</span>    List&lt;StoreFile&gt; openedFiles = openStoreFiles(toBeAddedFiles);<a name="line.645"></a>
-<span class="sourceLineNo">646</span><a name="line.646"></a>
-<span class="sourceLineNo">647</span>    // propogate the file changes to the underlying store file manager<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    replaceStoreFiles(toBeRemovedStoreFiles, openedFiles); //won't throw an exception<a name="line.648"></a>
-<span class="sourceLineNo">649</span><a name="line.649"></a>
-<span class="sourceLineNo">650</span>    // Advance the memstore read point to be at least the new store files seqIds so that<a name="line.650"></a>
-<span class="sourceLineNo">651</span>    // readers might pick it up. This assumes that the store is not getting any writes (otherwise<a name="line.651"></a>
-<span class="sourceLineNo">652</span>    // in-flight transactions might be made visible)<a name="line.652"></a>
-<span class="sourceLineNo">653</span>    if (!toBeAddedFiles.isEmpty()) {<a name="line.653"></a>
-<span class="sourceLineNo">654</span>      region.getMVCC().advanceTo(this.getMaxSequenceId());<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    }<a name="line.655"></a>
-<span class="sourceLineNo">656</span><a name="line.656"></a>
-<span class="sourceLineNo">657</span>    completeCompaction(toBeRemovedStoreFiles);<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>  private StoreFile createStoreFileAndReader(final Path p) throws IOException {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    StoreFileInfo info = new StoreFileInfo(conf, this.getFileSystem(), p);<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    return createStoreFileAndReader(info);<a name="line.662"></a>
-<span class="sourceLineNo">663</span>  }<a name="line.663"></a>
-<span class="sourceLineNo">664</span><a name="line.664"></a>
-<span class="sourceLineNo">665</span>  private StoreFile createStoreFileAndReader(final StoreFileInfo info) throws IOException {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    info.setRegionCoprocessorHost(this.region.getCoprocessorHost());<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    StoreFile storeFile = new HStoreFile(this.getFileSystem(), info, this.conf, this.cacheConf,<a name="line.667"></a>
-<span class="sourceLineNo">668</span>        this.family.getBloomFilterType(), isPrimaryReplicaStore());<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    storeFile.initReader();<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    return storeFile;<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>  /**<a name="line.673"></a>
-<span class="sourceLineNo">674</span>   * This message intends to inform the MemStore that next coming updates<a name="line.674"></a>
-<span class="sourceLineNo">675</span>   * are going to be part of the replaying edits from WAL<a name="line.675"></a>
-<span class="sourceLineNo">676</span>   */<a name="line.676"></a>
-<span class="sourceLineNo">677</span>  public void startReplayingFromWAL(){<a name="line.677"></a>
-<span class="sourceLineNo">678</span>    this.memstore.startReplayingFromWAL();<a name="line.678"></a>
-<span class="sourceLineNo">679</span>  }<a name="line.679"></a>
-<span class="sourceLineNo">680</span><a name="line.680"></a>
-<span class="sourceLineNo">681</span>  /**<a name="line.681"></a>
-<span class="sourceLineNo">682</span>   * This message intends to inform the MemStore that the replaying edits from WAL<a name="line.682"></a>
-<span class="sourceLineNo">683</span>   * are done<a name="line.683"></a>
-<span class="sourceLineNo">684</span>   */<a name="line.684"></a>
-<span class="sourceLineNo">685</span>  public void stopReplayingFromWAL(){<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    this.memstore.stopReplayingFromWAL();<a name="line.686"></a>
-<span class="sourceLineNo">687</span>  }<a name="line.687"></a>
-<span class="sourceLineNo">688</span><a name="line.688"></a>
-<span class="sourceLineNo">689</span>  /**<a name="line.689"></a>
-<span class="sourceLineNo">690</span>   * Adds a value to the memstore<a name="line.690"></a>
-<span class="sourceLineNo">691</span>   * @param cell<a name="line.691"></a>
-<span class="sourceLineNo">692</span>   * @param memstoreSize<a name="line.692"></a>
-<span class="sourceLineNo">693</span>   */<a name="line.693"></a>
-<span class="sourceLineNo">694</span>  public void add(final Cell cell, MemstoreSize memstoreSize) {<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    lock.readLock().lock();<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    try {<a name="line.696"></a>
-<span class="sourceLineNo">697</span>       this.memstore.add(cell, memstoreSize);<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    } finally {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>      lock.readLock().unlock();<a name="line.699"></a>
-<span class="sourceLineNo">700</span>    }<a name="line.700"></a>
-<span class="sourceLineNo">701</span>  }<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>  /**<a name="line.703"></a>
-<span class="sourceLineNo">704</span>   * Adds the specified value to the memstore<a name="line.704"></a>
-<span class="sourceLineNo">705</span>   * @param cells<a name="line.705"></a>
-<span class="sourceLineNo">706</span>   * @param memstoreSize<a name="line.706"></a>
-<span class="sourceLineNo">707</span>   */<a name="line.707"></a>
-<span class="sourceLineNo">708</span>  public void add(final Iterable&lt;Cell&gt; cells, MemstoreSize memstoreSize) {<a name="line.708"></a>
-<span class="sourceLineNo">709</span>    lock.readLock().lock();<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    try {<a name="line.710"></a>
-<span class="sourceLineNo">711</span>      memstore.add(cells, memstoreSize);<a name="line.711"></a>
-<span class="sourceLineNo">712</span>    } finally {<a name="line.712"></a>
-<span class="sourceLineNo">713</span>      lock.readLock().unlock();<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><a name="line.716"></a>
-<span class="sourceLineNo">717</span>  @Override<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  public long timeOfOldestEdit() {<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    return memstore.timeOfOldestEdit();<a name="line.719"></a>
-<span class="sourceLineNo">720</span>  }<a name="line.720"></a>
-<span class="sourceLineNo">721</span><a name="line.721"></a>
-<span class="sourceLineNo">722</span>  /**<a name="line.722"></a>
-<span class="sourceLineNo">723</span>   * @return All store files.<a name="line.723"></a>
-<span class="sourceLineNo">724</span>   */<a name="line.724"></a>
-<span class="sourceLineNo">725</span>  @Override<a name="line.725"></a>
-<span class="sourceLineNo">726</span>  public Collection&lt;StoreFile&gt; getStorefiles() {<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    return this.storeEngine.getStoreFileManager().getStorefiles();<a name="line.727"></a>
-<span class="sourceLineNo">728</span>  }<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>   * This throws a WrongRegionException if the HFile does not fit in this region, or an<a name="line.731"></a>
-<span class="sourceLineNo">732</span>   * InvalidHFileException if the HFile is not valid.<a name="line.732"></a>
-<span class="sourceLineNo">733</span>   */<a name="line.733"></a>
-<span class="sourceLineNo">734</span>  public void assertBulkLoadHFileOk(Path srcPath) throws IOException {<a name="line.734"></a>
-<span class="sourceLineNo">735</span>    HFile.Reader reader  = null;<a name="line.735"></a>
-<span class="sourceLineNo">736</span>    try {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>      LOG.info("Validating hfile at " + srcPath + " for inclusion in "<a name="line.737"></a>
-<span class="sourceLineNo">738</span>          + "store " + this + " region " + this.getRegionInfo().getRegionNameAsString());<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      reader = HFile.createReader(srcPath.getFileSystem(conf), srcPath, cacheConf,<a name="line.739"></a>
-<span class="sourceLineNo">740</span>        isPrimaryReplicaStore(), conf);<a name="line.740"></a>
-<span class="sourceLineNo">741</span>      reader.loadFileInfo();<a name="line.741"></a>
-<span class="sourceLineNo">742</span><a name="line.742"></a>
-<span class="sourceLineNo">743</span>      byte[] firstKey = reader.getFirstRowKey();<a name="line.743"></a>
-<span class="sourceLineNo">744</span>      Preconditions.checkState(firstKey != null, "First key can not be null");<a name="line.744"></a>
-<span class="sourceLineNo">745</span>      Cell lk = reader.getLastKey();<a name="line.745"></a>
-<span class="sourceLineNo">746</span>      Preconditions.checkState(lk != null, "Last key can not be null");<a name="line.746"></a>
-<span class="sourceLineNo">747</span>      byte[] lastKey =  CellUtil.cloneRow(lk);<a name="line.747"></a>
+<span class="sourceLineNo">031</span>import java.util.Map;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.NavigableSet;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.Set;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.concurrent.Callable;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.concurrent.CompletionService;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.concurrent.ConcurrentHashMap;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.concurrent.ExecutionException;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.concurrent.ExecutorCompletionService;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.concurrent.Future;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import java.util.concurrent.locks.ReentrantLock;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import java.util.concurrent.locks.ReentrantReadWriteLock;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.function.Predicate;<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.commons.logging.Log;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.commons.logging.LogFactory;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.conf.Configuration;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.fs.FileSystem;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.fs.Path;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.Cell;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.HConstants;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.TableName;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.backup.FailedArchiveException;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.io.crypto.Encryption;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoder;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoderImpl;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.io.hfile.HFileScanner;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.io.hfile.InvalidHFileException;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionProgress;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.regionserver.compactions.OffPeakHours;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.security.EncryptionUtil;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.security.User;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescriptor;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.util.ChecksumType;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.util.ReflectionUtils;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.util.StringUtils;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>import com.google.common.annotations.VisibleForTesting;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.google.common.base.Preconditions;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.google.common.collect.ImmutableCollection;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import com.google.common.collect.ImmutableList;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import com.google.common.collect.Lists;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import com.google.common.collect.Sets;<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>/**<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * A Store holds a column family in a Region.  Its a memstore and a set of zero<a name="line.104"></a>
+<span class="sourceLineNo">105</span> * or more StoreFiles, which stretch backwards over time.<a name="line.105"></a>
+<span class="sourceLineNo">106</span> *<a name="line.106"></a>
+<span class="sourceLineNo">107</span> * &lt;p&gt;There's no reason to consider append-logging at this level; all logging<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * and locking is handled at the HRegion level.  Store just provides<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * services to manage sets of StoreFiles.  One of the most important of those<a name="line.109"></a>
+<span class="sourceLineNo">110</span> * services is compaction services where files are aggregated once they pass<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * a configurable threshold.<a name="line.111"></a>
+<span class="sourceLineNo">112</span> *<a name="line.112"></a>
+<span class="sourceLineNo">113</span> * &lt;p&gt;Locking and transactions are handled at a higher level.  This API should<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * not be called directly but by an HRegion manager.<a name="line.114"></a>
+<span class="sourceLineNo">115</span> */<a name="line.115"></a>
+<span class="sourceLineNo">116</span>@InterfaceAudience.Private<a name="line.116"></a>
+<span class="sourceLineNo">117</span>public class HStore implements Store {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  public static final String MEMSTORE_CLASS_NAME = "hbase.regionserver.memstore.class";<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  public static final String COMPACTCHECKER_INTERVAL_MULTIPLIER_KEY =<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      "hbase.server.compactchecker.interval.multiplier";<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  public static final String BLOCKING_STOREFILES_KEY = "hbase.hstore.blockingStoreFiles";<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  public static final String BLOCK_STORAGE_POLICY_KEY = "hbase.hstore.block.storage.policy";<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  // keep in accordance with HDFS default storage policy<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  public static final String DEFAULT_BLOCK_STORAGE_POLICY = "HOT";<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  public static final int DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER = 1000;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  public static final int DEFAULT_BLOCKING_STOREFILE_COUNT = 7;<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private static final Log LOG = LogFactory.getLog(HStore.class);<a name="line.128"></a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span>  protected final MemStore memstore;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  // This stores directory in the filesystem.<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  protected final HRegion region;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private final HColumnDescriptor family;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  private final HRegionFileSystem fs;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  protected Configuration conf;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  protected CacheConfig cacheConf;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  private long lastCompactSize = 0;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  volatile boolean forceMajor = false;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  /* how many bytes to write between status checks */<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  static int closeCheckInterval = 0;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  private volatile long storeSize = 0L;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  private volatile long totalUncompressedBytes = 0L;<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>   * RWLock for store operations.<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   * Locked in shared mode when the list of component stores is looked at:<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   *   - all reads/writes to table data<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   *   - checking for split<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * Locked in exclusive mode when the list of component stores is modified:<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   *   - closing<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   *   - completing a compaction<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  /**<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   * Lock specific to archiving compacted store files.  This avoids races around<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   * the combination of retrieving the list of compacted files and moving them to<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   * the archive directory.  Since this is usually a background process (other than<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   * on close), we don't want to handle this with the store write lock, which would<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   * block readers and degrade performance.<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   *<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   * Locked by:<a name="line.161"></a>
+<span class="sourceLineNo">162</span>   *   - CompactedHFilesDispatchHandler via closeAndArchiveCompactedFiles()<a name="line.162"></a>
+<span class="sourceLineNo">163</span>   *   - close()<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   */<a name="line.164"></a>
+<span class="sourceLineNo">165</span>  final ReentrantLock archiveLock = new ReentrantLock();<a name="line.165"></a>
+<span class="sourceLineNo">166</span><a name="line.166"></a>
+<span class="sourceLineNo">167</span>  private final boolean verifyBulkLoads;<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>  private ScanInfo scanInfo;<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>  // TODO: ideally, this should be part of storeFileManager, as we keep passing this to it.<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  final List&lt;StoreFile&gt; filesCompacting = Lists.newArrayList();<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>  // All access must be synchronized.<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  private final Set&lt;ChangedReadersObserver&gt; changedReaderObservers =<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    Collections.newSetFromMap(new ConcurrentHashMap&lt;ChangedReadersObserver, Boolean&gt;());<a name="line.176"></a>
+<span class="sourceLineNo">177</span><a name="line.177"></a>
+<span class="sourceLineNo">178</span>  protected final int blocksize;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  private HFileDataBlockEncoder dataBlockEncoder;<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  /** Checksum configuration */<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  protected ChecksumType checksumType;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  protected int bytesPerChecksum;<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  // Comparing KeyValues<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  protected final CellComparator comparator;<a name="line.186"></a>
+<span class="sourceLineNo">187</span><a name="line.187"></a>
+<span class="sourceLineNo">188</span>  final StoreEngine&lt;?, ?, ?, ?&gt; storeEngine;<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>  private static final AtomicBoolean offPeakCompactionTracker = new AtomicBoolean();<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private volatile OffPeakHours offPeakHours;<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>  private static final int DEFAULT_FLUSH_RETRIES_NUMBER = 10;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  private int flushRetriesNumber;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>  private int pauseTime;<a name="line.195"></a>
+<span class="sourceLineNo">196</span><a name="line.196"></a>
+<span class="sourceLineNo">197</span>  private long blockingFileCount;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>  private int compactionCheckMultiplier;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  protected Encryption.Context cryptoContext = Encryption.Context.NONE;<a name="line.199"></a>
+<span class="sourceLineNo">200</span><a name="line.200"></a>
+<span class="sourceLineNo">201</span>  private

<TRUNCATED>

[20/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
index 910002d..eca504f 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
@@ -70,14 +70,14 @@
 <span class="sourceLineNo">062</span>    @org.jamon.annotations.Argument(name = "master", type = "HMaster")},<a name="line.62"></a>
 <span class="sourceLineNo">063</span>  optionalArguments = {<a name="line.63"></a>
 <span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.68"></a>
+<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;"),<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.68"></a>
 <span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;"),<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean")})<a name="line.72"></a>
+<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    @org.jamon.annotations.Argument(name = "filter", type = "String")})<a name="line.72"></a>
 <span class="sourceLineNo">073</span>public class MasterStatusTmpl<a name="line.73"></a>
 <span class="sourceLineNo">074</span>  extends org.jamon.AbstractTemplateProxy<a name="line.74"></a>
 <span class="sourceLineNo">075</span>{<a name="line.75"></a>
@@ -135,74 +135,74 @@
 <span class="sourceLineNo">127</span>      return m_deadServers__IsNotDefault;<a name="line.127"></a>
 <span class="sourceLineNo">128</span>    }<a name="line.128"></a>
 <span class="sourceLineNo">129</span>    private boolean m_deadServers__IsNotDefault;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    // 22, 1<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.131"></a>
+<span class="sourceLineNo">130</span>    // 28, 1<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    public void setServerManager(ServerManager serverManager)<a name="line.131"></a>
 <span class="sourceLineNo">132</span>    {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      // 22, 1<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      m_metaLocation = metaLocation;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      m_metaLocation__IsNotDefault = true;<a name="line.135"></a>
+<span class="sourceLineNo">133</span>      // 28, 1<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      m_serverManager = serverManager;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      m_serverManager__IsNotDefault = true;<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    public ServerName getMetaLocation()<a name="line.137"></a>
+<span class="sourceLineNo">137</span>    public ServerManager getServerManager()<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      return m_metaLocation;<a name="line.139"></a>
+<span class="sourceLineNo">139</span>      return m_serverManager;<a name="line.139"></a>
 <span class="sourceLineNo">140</span>    }<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    private ServerName m_metaLocation;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.142"></a>
+<span class="sourceLineNo">141</span>    private ServerManager m_serverManager;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    public boolean getServerManager__IsNotDefault()<a name="line.142"></a>
 <span class="sourceLineNo">143</span>    {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      return m_metaLocation__IsNotDefault;<a name="line.144"></a>
+<span class="sourceLineNo">144</span>      return m_serverManager__IsNotDefault;<a name="line.144"></a>
 <span class="sourceLineNo">145</span>    }<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    // 29, 1<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.148"></a>
+<span class="sourceLineNo">146</span>    private boolean m_serverManager__IsNotDefault;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    // 23, 1<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.148"></a>
 <span class="sourceLineNo">149</span>    {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      // 29, 1<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      m_assignmentManager = assignmentManager;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      m_assignmentManager__IsNotDefault = true;<a name="line.152"></a>
+<span class="sourceLineNo">150</span>      // 23, 1<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      m_servers = servers;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      m_servers__IsNotDefault = true;<a name="line.152"></a>
 <span class="sourceLineNo">153</span>    }<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    public AssignmentManager getAssignmentManager()<a name="line.154"></a>
+<span class="sourceLineNo">154</span>    public List&lt;ServerName&gt; getServers()<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      return m_assignmentManager;<a name="line.156"></a>
+<span class="sourceLineNo">156</span>      return m_servers;<a name="line.156"></a>
 <span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    private AssignmentManager m_assignmentManager;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.159"></a>
+<span class="sourceLineNo">158</span>    private List&lt;ServerName&gt; m_servers;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    public boolean getServers__IsNotDefault()<a name="line.159"></a>
 <span class="sourceLineNo">160</span>    {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      return m_assignmentManager__IsNotDefault;<a name="line.161"></a>
+<span class="sourceLineNo">161</span>      return m_servers__IsNotDefault;<a name="line.161"></a>
 <span class="sourceLineNo">162</span>    }<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    // 26, 1<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    public void setFilter(String filter)<a name="line.165"></a>
+<span class="sourceLineNo">163</span>    private boolean m_servers__IsNotDefault;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    // 29, 1<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.165"></a>
 <span class="sourceLineNo">166</span>    {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      // 26, 1<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      m_filter = filter;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      m_filter__IsNotDefault = true;<a name="line.169"></a>
+<span class="sourceLineNo">167</span>      // 29, 1<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      m_assignmentManager = assignmentManager;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      m_assignmentManager__IsNotDefault = true;<a name="line.169"></a>
 <span class="sourceLineNo">170</span>    }<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    public String getFilter()<a name="line.171"></a>
+<span class="sourceLineNo">171</span>    public AssignmentManager getAssignmentManager()<a name="line.171"></a>
 <span class="sourceLineNo">172</span>    {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      return m_filter;<a name="line.173"></a>
+<span class="sourceLineNo">173</span>      return m_assignmentManager;<a name="line.173"></a>
 <span class="sourceLineNo">174</span>    }<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    private String m_filter;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    public boolean getFilter__IsNotDefault()<a name="line.176"></a>
+<span class="sourceLineNo">175</span>    private AssignmentManager m_assignmentManager;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.176"></a>
 <span class="sourceLineNo">177</span>    {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      return m_filter__IsNotDefault;<a name="line.178"></a>
+<span class="sourceLineNo">178</span>      return m_assignmentManager__IsNotDefault;<a name="line.178"></a>
 <span class="sourceLineNo">179</span>    }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    private boolean m_filter__IsNotDefault;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    // 21, 1<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.182"></a>
+<span class="sourceLineNo">180</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    // 22, 1<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.182"></a>
 <span class="sourceLineNo">183</span>    {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      // 21, 1<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      m_frags = frags;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      m_frags__IsNotDefault = true;<a name="line.186"></a>
+<span class="sourceLineNo">184</span>      // 22, 1<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      m_metaLocation = metaLocation;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      m_metaLocation__IsNotDefault = true;<a name="line.186"></a>
 <span class="sourceLineNo">187</span>    }<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.188"></a>
+<span class="sourceLineNo">188</span>    public ServerName getMetaLocation()<a name="line.188"></a>
 <span class="sourceLineNo">189</span>    {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      return m_frags;<a name="line.190"></a>
+<span class="sourceLineNo">190</span>      return m_metaLocation;<a name="line.190"></a>
 <span class="sourceLineNo">191</span>    }<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    public boolean getFrags__IsNotDefault()<a name="line.193"></a>
+<span class="sourceLineNo">192</span>    private ServerName m_metaLocation;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.193"></a>
 <span class="sourceLineNo">194</span>    {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      return m_frags__IsNotDefault;<a name="line.195"></a>
+<span class="sourceLineNo">195</span>      return m_metaLocation__IsNotDefault;<a name="line.195"></a>
 <span class="sourceLineNo">196</span>    }<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    private boolean m_frags__IsNotDefault;<a name="line.197"></a>
+<span class="sourceLineNo">197</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.197"></a>
 <span class="sourceLineNo">198</span>    // 27, 1<a name="line.198"></a>
 <span class="sourceLineNo">199</span>    public void setFormat(String format)<a name="line.199"></a>
 <span class="sourceLineNo">200</span>    {<a name="line.200"></a>
@@ -220,57 +220,57 @@
 <span class="sourceLineNo">212</span>      return m_format__IsNotDefault;<a name="line.212"></a>
 <span class="sourceLineNo">213</span>    }<a name="line.213"></a>
 <span class="sourceLineNo">214</span>    private boolean m_format__IsNotDefault;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    // 28, 1<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    public void setServerManager(ServerManager serverManager)<a name="line.216"></a>
+<span class="sourceLineNo">215</span>    // 21, 1<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.216"></a>
 <span class="sourceLineNo">217</span>    {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      // 28, 1<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      m_serverManager = serverManager;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      m_serverManager__IsNotDefault = true;<a name="line.220"></a>
+<span class="sourceLineNo">218</span>      // 21, 1<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      m_frags = frags;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      m_frags__IsNotDefault = true;<a name="line.220"></a>
 <span class="sourceLineNo">221</span>    }<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    public ServerManager getServerManager()<a name="line.222"></a>
+<span class="sourceLineNo">222</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.222"></a>
 <span class="sourceLineNo">223</span>    {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      return m_serverManager;<a name="line.224"></a>
+<span class="sourceLineNo">224</span>      return m_frags;<a name="line.224"></a>
 <span class="sourceLineNo">225</span>    }<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    private ServerManager m_serverManager;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    public boolean getServerManager__IsNotDefault()<a name="line.227"></a>
+<span class="sourceLineNo">226</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    public boolean getFrags__IsNotDefault()<a name="line.227"></a>
 <span class="sourceLineNo">228</span>    {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      return m_serverManager__IsNotDefault;<a name="line.229"></a>
+<span class="sourceLineNo">229</span>      return m_frags__IsNotDefault;<a name="line.229"></a>
 <span class="sourceLineNo">230</span>    }<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    private boolean m_serverManager__IsNotDefault;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    // 23, 1<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.233"></a>
+<span class="sourceLineNo">231</span>    private boolean m_frags__IsNotDefault;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    // 25, 1<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.233"></a>
 <span class="sourceLineNo">234</span>    {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      // 23, 1<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      m_servers = servers;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      m_servers__IsNotDefault = true;<a name="line.237"></a>
+<span class="sourceLineNo">235</span>      // 25, 1<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.237"></a>
 <span class="sourceLineNo">238</span>    }<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    public List&lt;ServerName&gt; getServers()<a name="line.239"></a>
+<span class="sourceLineNo">239</span>    public boolean getCatalogJanitorEnabled()<a name="line.239"></a>
 <span class="sourceLineNo">240</span>    {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      return m_servers;<a name="line.241"></a>
+<span class="sourceLineNo">241</span>      return m_catalogJanitorEnabled;<a name="line.241"></a>
 <span class="sourceLineNo">242</span>    }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    private List&lt;ServerName&gt; m_servers;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    public boolean getServers__IsNotDefault()<a name="line.244"></a>
+<span class="sourceLineNo">243</span>    private boolean m_catalogJanitorEnabled;<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.244"></a>
 <span class="sourceLineNo">245</span>    {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      return m_servers__IsNotDefault;<a name="line.246"></a>
+<span class="sourceLineNo">246</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.246"></a>
 <span class="sourceLineNo">247</span>    }<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    private boolean m_servers__IsNotDefault;<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    // 25, 1<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.250"></a>
+<span class="sourceLineNo">248</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    // 26, 1<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    public void setFilter(String filter)<a name="line.250"></a>
 <span class="sourceLineNo">251</span>    {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      // 25, 1<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.254"></a>
+<span class="sourceLineNo">252</span>      // 26, 1<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      m_filter = filter;<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      m_filter__IsNotDefault = true;<a name="line.254"></a>
 <span class="sourceLineNo">255</span>    }<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    public boolean getCatalogJanitorEnabled()<a name="line.256"></a>
+<span class="sourceLineNo">256</span>    public String getFilter()<a name="line.256"></a>
 <span class="sourceLineNo">257</span>    {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      return m_catalogJanitorEnabled;<a name="line.258"></a>
+<span class="sourceLineNo">258</span>      return m_filter;<a name="line.258"></a>
 <span class="sourceLineNo">259</span>    }<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    private boolean m_catalogJanitorEnabled;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.261"></a>
+<span class="sourceLineNo">260</span>    private String m_filter;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    public boolean getFilter__IsNotDefault()<a name="line.261"></a>
 <span class="sourceLineNo">262</span>    {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.263"></a>
+<span class="sourceLineNo">263</span>      return m_filter__IsNotDefault;<a name="line.263"></a>
 <span class="sourceLineNo">264</span>    }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.265"></a>
+<span class="sourceLineNo">265</span>    private boolean m_filter__IsNotDefault;<a name="line.265"></a>
 <span class="sourceLineNo">266</span>  }<a name="line.266"></a>
 <span class="sourceLineNo">267</span>  @Override<a name="line.267"></a>
 <span class="sourceLineNo">268</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.268"></a>
@@ -289,31 +289,31 @@
 <span class="sourceLineNo">281</span>    return this;<a name="line.281"></a>
 <span class="sourceLineNo">282</span>  }<a name="line.282"></a>
 <span class="sourceLineNo">283</span>  <a name="line.283"></a>
-<span class="sourceLineNo">284</span>  protected ServerName metaLocation;<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.285"></a>
+<span class="sourceLineNo">284</span>  protected ServerManager serverManager;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.285"></a>
 <span class="sourceLineNo">286</span>  {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.287"></a>
+<span class="sourceLineNo">287</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.287"></a>
 <span class="sourceLineNo">288</span>    return this;<a name="line.288"></a>
 <span class="sourceLineNo">289</span>  }<a name="line.289"></a>
 <span class="sourceLineNo">290</span>  <a name="line.290"></a>
-<span class="sourceLineNo">291</span>  protected AssignmentManager assignmentManager;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.292"></a>
+<span class="sourceLineNo">291</span>  protected List&lt;ServerName&gt; servers;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.292"></a>
 <span class="sourceLineNo">293</span>  {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.294"></a>
+<span class="sourceLineNo">294</span>    (getImplData()).setServers(p_servers);<a name="line.294"></a>
 <span class="sourceLineNo">295</span>    return this;<a name="line.295"></a>
 <span class="sourceLineNo">296</span>  }<a name="line.296"></a>
 <span class="sourceLineNo">297</span>  <a name="line.297"></a>
-<span class="sourceLineNo">298</span>  protected String filter;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.299"></a>
+<span class="sourceLineNo">298</span>  protected AssignmentManager assignmentManager;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.299"></a>
 <span class="sourceLineNo">300</span>  {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    (getImplData()).setFilter(p_filter);<a name="line.301"></a>
+<span class="sourceLineNo">301</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.301"></a>
 <span class="sourceLineNo">302</span>    return this;<a name="line.302"></a>
 <span class="sourceLineNo">303</span>  }<a name="line.303"></a>
 <span class="sourceLineNo">304</span>  <a name="line.304"></a>
-<span class="sourceLineNo">305</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.306"></a>
+<span class="sourceLineNo">305</span>  protected ServerName metaLocation;<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.306"></a>
 <span class="sourceLineNo">307</span>  {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    (getImplData()).setFrags(p_frags);<a name="line.308"></a>
+<span class="sourceLineNo">308</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.308"></a>
 <span class="sourceLineNo">309</span>    return this;<a name="line.309"></a>
 <span class="sourceLineNo">310</span>  }<a name="line.310"></a>
 <span class="sourceLineNo">311</span>  <a name="line.311"></a>
@@ -324,24 +324,24 @@
 <span class="sourceLineNo">316</span>    return this;<a name="line.316"></a>
 <span class="sourceLineNo">317</span>  }<a name="line.317"></a>
 <span class="sourceLineNo">318</span>  <a name="line.318"></a>
-<span class="sourceLineNo">319</span>  protected ServerManager serverManager;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.320"></a>
+<span class="sourceLineNo">319</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.320"></a>
 <span class="sourceLineNo">321</span>  {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.322"></a>
+<span class="sourceLineNo">322</span>    (getImplData()).setFrags(p_frags);<a name="line.322"></a>
 <span class="sourceLineNo">323</span>    return this;<a name="line.323"></a>
 <span class="sourceLineNo">324</span>  }<a name="line.324"></a>
 <span class="sourceLineNo">325</span>  <a name="line.325"></a>
-<span class="sourceLineNo">326</span>  protected List&lt;ServerName&gt; servers;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.327"></a>
+<span class="sourceLineNo">326</span>  protected boolean catalogJanitorEnabled;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.327"></a>
 <span class="sourceLineNo">328</span>  {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    (getImplData()).setServers(p_servers);<a name="line.329"></a>
+<span class="sourceLineNo">329</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.329"></a>
 <span class="sourceLineNo">330</span>    return this;<a name="line.330"></a>
 <span class="sourceLineNo">331</span>  }<a name="line.331"></a>
 <span class="sourceLineNo">332</span>  <a name="line.332"></a>
-<span class="sourceLineNo">333</span>  protected boolean catalogJanitorEnabled;<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.334"></a>
+<span class="sourceLineNo">333</span>  protected String filter;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.334"></a>
 <span class="sourceLineNo">335</span>  {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.336"></a>
+<span class="sourceLineNo">336</span>    (getImplData()).setFilter(p_filter);<a name="line.336"></a>
 <span class="sourceLineNo">337</span>    return this;<a name="line.337"></a>
 <span class="sourceLineNo">338</span>  }<a name="line.338"></a>
 <span class="sourceLineNo">339</span>  <a name="line.339"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html
index 910002d..eca504f 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html
@@ -70,14 +70,14 @@
 <span class="sourceLineNo">062</span>    @org.jamon.annotations.Argument(name = "master", type = "HMaster")},<a name="line.62"></a>
 <span class="sourceLineNo">063</span>  optionalArguments = {<a name="line.63"></a>
 <span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.68"></a>
+<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;"),<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.68"></a>
 <span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;"),<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean")})<a name="line.72"></a>
+<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    @org.jamon.annotations.Argument(name = "filter", type = "String")})<a name="line.72"></a>
 <span class="sourceLineNo">073</span>public class MasterStatusTmpl<a name="line.73"></a>
 <span class="sourceLineNo">074</span>  extends org.jamon.AbstractTemplateProxy<a name="line.74"></a>
 <span class="sourceLineNo">075</span>{<a name="line.75"></a>
@@ -135,74 +135,74 @@
 <span class="sourceLineNo">127</span>      return m_deadServers__IsNotDefault;<a name="line.127"></a>
 <span class="sourceLineNo">128</span>    }<a name="line.128"></a>
 <span class="sourceLineNo">129</span>    private boolean m_deadServers__IsNotDefault;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    // 22, 1<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.131"></a>
+<span class="sourceLineNo">130</span>    // 28, 1<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    public void setServerManager(ServerManager serverManager)<a name="line.131"></a>
 <span class="sourceLineNo">132</span>    {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      // 22, 1<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      m_metaLocation = metaLocation;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      m_metaLocation__IsNotDefault = true;<a name="line.135"></a>
+<span class="sourceLineNo">133</span>      // 28, 1<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      m_serverManager = serverManager;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      m_serverManager__IsNotDefault = true;<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    public ServerName getMetaLocation()<a name="line.137"></a>
+<span class="sourceLineNo">137</span>    public ServerManager getServerManager()<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      return m_metaLocation;<a name="line.139"></a>
+<span class="sourceLineNo">139</span>      return m_serverManager;<a name="line.139"></a>
 <span class="sourceLineNo">140</span>    }<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    private ServerName m_metaLocation;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.142"></a>
+<span class="sourceLineNo">141</span>    private ServerManager m_serverManager;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    public boolean getServerManager__IsNotDefault()<a name="line.142"></a>
 <span class="sourceLineNo">143</span>    {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      return m_metaLocation__IsNotDefault;<a name="line.144"></a>
+<span class="sourceLineNo">144</span>      return m_serverManager__IsNotDefault;<a name="line.144"></a>
 <span class="sourceLineNo">145</span>    }<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    // 29, 1<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.148"></a>
+<span class="sourceLineNo">146</span>    private boolean m_serverManager__IsNotDefault;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    // 23, 1<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.148"></a>
 <span class="sourceLineNo">149</span>    {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      // 29, 1<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      m_assignmentManager = assignmentManager;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      m_assignmentManager__IsNotDefault = true;<a name="line.152"></a>
+<span class="sourceLineNo">150</span>      // 23, 1<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      m_servers = servers;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      m_servers__IsNotDefault = true;<a name="line.152"></a>
 <span class="sourceLineNo">153</span>    }<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    public AssignmentManager getAssignmentManager()<a name="line.154"></a>
+<span class="sourceLineNo">154</span>    public List&lt;ServerName&gt; getServers()<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      return m_assignmentManager;<a name="line.156"></a>
+<span class="sourceLineNo">156</span>      return m_servers;<a name="line.156"></a>
 <span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    private AssignmentManager m_assignmentManager;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.159"></a>
+<span class="sourceLineNo">158</span>    private List&lt;ServerName&gt; m_servers;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    public boolean getServers__IsNotDefault()<a name="line.159"></a>
 <span class="sourceLineNo">160</span>    {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      return m_assignmentManager__IsNotDefault;<a name="line.161"></a>
+<span class="sourceLineNo">161</span>      return m_servers__IsNotDefault;<a name="line.161"></a>
 <span class="sourceLineNo">162</span>    }<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    // 26, 1<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    public void setFilter(String filter)<a name="line.165"></a>
+<span class="sourceLineNo">163</span>    private boolean m_servers__IsNotDefault;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    // 29, 1<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.165"></a>
 <span class="sourceLineNo">166</span>    {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      // 26, 1<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      m_filter = filter;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      m_filter__IsNotDefault = true;<a name="line.169"></a>
+<span class="sourceLineNo">167</span>      // 29, 1<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      m_assignmentManager = assignmentManager;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      m_assignmentManager__IsNotDefault = true;<a name="line.169"></a>
 <span class="sourceLineNo">170</span>    }<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    public String getFilter()<a name="line.171"></a>
+<span class="sourceLineNo">171</span>    public AssignmentManager getAssignmentManager()<a name="line.171"></a>
 <span class="sourceLineNo">172</span>    {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      return m_filter;<a name="line.173"></a>
+<span class="sourceLineNo">173</span>      return m_assignmentManager;<a name="line.173"></a>
 <span class="sourceLineNo">174</span>    }<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    private String m_filter;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    public boolean getFilter__IsNotDefault()<a name="line.176"></a>
+<span class="sourceLineNo">175</span>    private AssignmentManager m_assignmentManager;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.176"></a>
 <span class="sourceLineNo">177</span>    {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      return m_filter__IsNotDefault;<a name="line.178"></a>
+<span class="sourceLineNo">178</span>      return m_assignmentManager__IsNotDefault;<a name="line.178"></a>
 <span class="sourceLineNo">179</span>    }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    private boolean m_filter__IsNotDefault;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    // 21, 1<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.182"></a>
+<span class="sourceLineNo">180</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    // 22, 1<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.182"></a>
 <span class="sourceLineNo">183</span>    {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      // 21, 1<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      m_frags = frags;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      m_frags__IsNotDefault = true;<a name="line.186"></a>
+<span class="sourceLineNo">184</span>      // 22, 1<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      m_metaLocation = metaLocation;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      m_metaLocation__IsNotDefault = true;<a name="line.186"></a>
 <span class="sourceLineNo">187</span>    }<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.188"></a>
+<span class="sourceLineNo">188</span>    public ServerName getMetaLocation()<a name="line.188"></a>
 <span class="sourceLineNo">189</span>    {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      return m_frags;<a name="line.190"></a>
+<span class="sourceLineNo">190</span>      return m_metaLocation;<a name="line.190"></a>
 <span class="sourceLineNo">191</span>    }<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    public boolean getFrags__IsNotDefault()<a name="line.193"></a>
+<span class="sourceLineNo">192</span>    private ServerName m_metaLocation;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.193"></a>
 <span class="sourceLineNo">194</span>    {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      return m_frags__IsNotDefault;<a name="line.195"></a>
+<span class="sourceLineNo">195</span>      return m_metaLocation__IsNotDefault;<a name="line.195"></a>
 <span class="sourceLineNo">196</span>    }<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    private boolean m_frags__IsNotDefault;<a name="line.197"></a>
+<span class="sourceLineNo">197</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.197"></a>
 <span class="sourceLineNo">198</span>    // 27, 1<a name="line.198"></a>
 <span class="sourceLineNo">199</span>    public void setFormat(String format)<a name="line.199"></a>
 <span class="sourceLineNo">200</span>    {<a name="line.200"></a>
@@ -220,57 +220,57 @@
 <span class="sourceLineNo">212</span>      return m_format__IsNotDefault;<a name="line.212"></a>
 <span class="sourceLineNo">213</span>    }<a name="line.213"></a>
 <span class="sourceLineNo">214</span>    private boolean m_format__IsNotDefault;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    // 28, 1<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    public void setServerManager(ServerManager serverManager)<a name="line.216"></a>
+<span class="sourceLineNo">215</span>    // 21, 1<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.216"></a>
 <span class="sourceLineNo">217</span>    {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      // 28, 1<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      m_serverManager = serverManager;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      m_serverManager__IsNotDefault = true;<a name="line.220"></a>
+<span class="sourceLineNo">218</span>      // 21, 1<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      m_frags = frags;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      m_frags__IsNotDefault = true;<a name="line.220"></a>
 <span class="sourceLineNo">221</span>    }<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    public ServerManager getServerManager()<a name="line.222"></a>
+<span class="sourceLineNo">222</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.222"></a>
 <span class="sourceLineNo">223</span>    {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      return m_serverManager;<a name="line.224"></a>
+<span class="sourceLineNo">224</span>      return m_frags;<a name="line.224"></a>
 <span class="sourceLineNo">225</span>    }<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    private ServerManager m_serverManager;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    public boolean getServerManager__IsNotDefault()<a name="line.227"></a>
+<span class="sourceLineNo">226</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    public boolean getFrags__IsNotDefault()<a name="line.227"></a>
 <span class="sourceLineNo">228</span>    {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      return m_serverManager__IsNotDefault;<a name="line.229"></a>
+<span class="sourceLineNo">229</span>      return m_frags__IsNotDefault;<a name="line.229"></a>
 <span class="sourceLineNo">230</span>    }<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    private boolean m_serverManager__IsNotDefault;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    // 23, 1<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.233"></a>
+<span class="sourceLineNo">231</span>    private boolean m_frags__IsNotDefault;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    // 25, 1<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.233"></a>
 <span class="sourceLineNo">234</span>    {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      // 23, 1<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      m_servers = servers;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      m_servers__IsNotDefault = true;<a name="line.237"></a>
+<span class="sourceLineNo">235</span>      // 25, 1<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.237"></a>
 <span class="sourceLineNo">238</span>    }<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    public List&lt;ServerName&gt; getServers()<a name="line.239"></a>
+<span class="sourceLineNo">239</span>    public boolean getCatalogJanitorEnabled()<a name="line.239"></a>
 <span class="sourceLineNo">240</span>    {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      return m_servers;<a name="line.241"></a>
+<span class="sourceLineNo">241</span>      return m_catalogJanitorEnabled;<a name="line.241"></a>
 <span class="sourceLineNo">242</span>    }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    private List&lt;ServerName&gt; m_servers;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    public boolean getServers__IsNotDefault()<a name="line.244"></a>
+<span class="sourceLineNo">243</span>    private boolean m_catalogJanitorEnabled;<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.244"></a>
 <span class="sourceLineNo">245</span>    {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      return m_servers__IsNotDefault;<a name="line.246"></a>
+<span class="sourceLineNo">246</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.246"></a>
 <span class="sourceLineNo">247</span>    }<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    private boolean m_servers__IsNotDefault;<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    // 25, 1<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.250"></a>
+<span class="sourceLineNo">248</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    // 26, 1<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    public void setFilter(String filter)<a name="line.250"></a>
 <span class="sourceLineNo">251</span>    {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      // 25, 1<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.254"></a>
+<span class="sourceLineNo">252</span>      // 26, 1<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      m_filter = filter;<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      m_filter__IsNotDefault = true;<a name="line.254"></a>
 <span class="sourceLineNo">255</span>    }<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    public boolean getCatalogJanitorEnabled()<a name="line.256"></a>
+<span class="sourceLineNo">256</span>    public String getFilter()<a name="line.256"></a>
 <span class="sourceLineNo">257</span>    {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      return m_catalogJanitorEnabled;<a name="line.258"></a>
+<span class="sourceLineNo">258</span>      return m_filter;<a name="line.258"></a>
 <span class="sourceLineNo">259</span>    }<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    private boolean m_catalogJanitorEnabled;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.261"></a>
+<span class="sourceLineNo">260</span>    private String m_filter;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    public boolean getFilter__IsNotDefault()<a name="line.261"></a>
 <span class="sourceLineNo">262</span>    {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.263"></a>
+<span class="sourceLineNo">263</span>      return m_filter__IsNotDefault;<a name="line.263"></a>
 <span class="sourceLineNo">264</span>    }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.265"></a>
+<span class="sourceLineNo">265</span>    private boolean m_filter__IsNotDefault;<a name="line.265"></a>
 <span class="sourceLineNo">266</span>  }<a name="line.266"></a>
 <span class="sourceLineNo">267</span>  @Override<a name="line.267"></a>
 <span class="sourceLineNo">268</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.268"></a>
@@ -289,31 +289,31 @@
 <span class="sourceLineNo">281</span>    return this;<a name="line.281"></a>
 <span class="sourceLineNo">282</span>  }<a name="line.282"></a>
 <span class="sourceLineNo">283</span>  <a name="line.283"></a>
-<span class="sourceLineNo">284</span>  protected ServerName metaLocation;<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.285"></a>
+<span class="sourceLineNo">284</span>  protected ServerManager serverManager;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.285"></a>
 <span class="sourceLineNo">286</span>  {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.287"></a>
+<span class="sourceLineNo">287</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.287"></a>
 <span class="sourceLineNo">288</span>    return this;<a name="line.288"></a>
 <span class="sourceLineNo">289</span>  }<a name="line.289"></a>
 <span class="sourceLineNo">290</span>  <a name="line.290"></a>
-<span class="sourceLineNo">291</span>  protected AssignmentManager assignmentManager;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.292"></a>
+<span class="sourceLineNo">291</span>  protected List&lt;ServerName&gt; servers;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.292"></a>
 <span class="sourceLineNo">293</span>  {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.294"></a>
+<span class="sourceLineNo">294</span>    (getImplData()).setServers(p_servers);<a name="line.294"></a>
 <span class="sourceLineNo">295</span>    return this;<a name="line.295"></a>
 <span class="sourceLineNo">296</span>  }<a name="line.296"></a>
 <span class="sourceLineNo">297</span>  <a name="line.297"></a>
-<span class="sourceLineNo">298</span>  protected String filter;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.299"></a>
+<span class="sourceLineNo">298</span>  protected AssignmentManager assignmentManager;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.299"></a>
 <span class="sourceLineNo">300</span>  {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    (getImplData()).setFilter(p_filter);<a name="line.301"></a>
+<span class="sourceLineNo">301</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.301"></a>
 <span class="sourceLineNo">302</span>    return this;<a name="line.302"></a>
 <span class="sourceLineNo">303</span>  }<a name="line.303"></a>
 <span class="sourceLineNo">304</span>  <a name="line.304"></a>
-<span class="sourceLineNo">305</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.306"></a>
+<span class="sourceLineNo">305</span>  protected ServerName metaLocation;<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.306"></a>
 <span class="sourceLineNo">307</span>  {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    (getImplData()).setFrags(p_frags);<a name="line.308"></a>
+<span class="sourceLineNo">308</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.308"></a>
 <span class="sourceLineNo">309</span>    return this;<a name="line.309"></a>
 <span class="sourceLineNo">310</span>  }<a name="line.310"></a>
 <span class="sourceLineNo">311</span>  <a name="line.311"></a>
@@ -324,24 +324,24 @@
 <span class="sourceLineNo">316</span>    return this;<a name="line.316"></a>
 <span class="sourceLineNo">317</span>  }<a name="line.317"></a>
 <span class="sourceLineNo">318</span>  <a name="line.318"></a>
-<span class="sourceLineNo">319</span>  protected ServerManager serverManager;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.320"></a>
+<span class="sourceLineNo">319</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.320"></a>
 <span class="sourceLineNo">321</span>  {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.322"></a>
+<span class="sourceLineNo">322</span>    (getImplData()).setFrags(p_frags);<a name="line.322"></a>
 <span class="sourceLineNo">323</span>    return this;<a name="line.323"></a>
 <span class="sourceLineNo">324</span>  }<a name="line.324"></a>
 <span class="sourceLineNo">325</span>  <a name="line.325"></a>
-<span class="sourceLineNo">326</span>  protected List&lt;ServerName&gt; servers;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.327"></a>
+<span class="sourceLineNo">326</span>  protected boolean catalogJanitorEnabled;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.327"></a>
 <span class="sourceLineNo">328</span>  {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    (getImplData()).setServers(p_servers);<a name="line.329"></a>
+<span class="sourceLineNo">329</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.329"></a>
 <span class="sourceLineNo">330</span>    return this;<a name="line.330"></a>
 <span class="sourceLineNo">331</span>  }<a name="line.331"></a>
 <span class="sourceLineNo">332</span>  <a name="line.332"></a>
-<span class="sourceLineNo">333</span>  protected boolean catalogJanitorEnabled;<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.334"></a>
+<span class="sourceLineNo">333</span>  protected String filter;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.334"></a>
 <span class="sourceLineNo">335</span>  {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.336"></a>
+<span class="sourceLineNo">336</span>    (getImplData()).setFilter(p_filter);<a name="line.336"></a>
 <span class="sourceLineNo">337</span>    return this;<a name="line.337"></a>
 <span class="sourceLineNo">338</span>  }<a name="line.338"></a>
 <span class="sourceLineNo">339</span>  <a name="line.339"></a>


[02/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html
new file mode 100644
index 0000000..9ce2441
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html
@@ -0,0 +1,1644 @@
+<!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><a name="line.19"></a>
+<span class="sourceLineNo">020</span>package org.apache.hadoop.hbase.regionserver;<a name="line.20"></a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.junit.Assert.assertEquals;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertFalse;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.junit.Assert.assertNull;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.junit.Assert.assertTrue;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import static org.mockito.Matchers.any;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import static org.mockito.Mockito.spy;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import static org.mockito.Mockito.times;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import static org.mockito.Mockito.verify;<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.io.IOException;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.lang.ref.SoftReference;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.security.PrivilegedExceptionAction;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.ArrayList;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.Arrays;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Collection;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.Collections;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.Iterator;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.List;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import java.util.ListIterator;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import java.util.NavigableSet;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import java.util.TreeSet;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import java.util.concurrent.ConcurrentSkipListSet;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.concurrent.CountDownLatch;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.ExecutorService;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import java.util.concurrent.Executors;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import java.util.concurrent.TimeUnit;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import java.util.function.Consumer;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.commons.logging.Log;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.commons.logging.LogFactory;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.conf.Configuration;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FileStatus;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.FileSystem;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.FilterFileSystem;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.LocalFileSystem;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.Path;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.fs.permission.FsPermission;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.Cell;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HConstants;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.TableName;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Get;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.security.User;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.util.Progressable;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.junit.After;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.junit.Assert;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.junit.Before;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.junit.Rule;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.junit.Test;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.junit.experimental.categories.Category;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.junit.rules.TestName;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.mockito.Mockito;<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>import com.google.common.collect.Lists;<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> * Test class for the Store<a name="line.111"></a>
+<span class="sourceLineNo">112</span> */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.113"></a>
+<span class="sourceLineNo">114</span>public class TestStore {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static final Log LOG = LogFactory.getLog(TestStore.class);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  @Rule public TestName name = new TestName();<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  HStore store;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  byte [] table = Bytes.toBytes("table");<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  byte [] family = Bytes.toBytes("family");<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>  byte [] row = Bytes.toBytes("row");<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  byte [] row2 = Bytes.toBytes("row2");<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  byte [] qf1 = Bytes.toBytes("qf1");<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  byte [] qf2 = Bytes.toBytes("qf2");<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  byte [] qf3 = Bytes.toBytes("qf3");<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  byte [] qf4 = Bytes.toBytes("qf4");<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  byte [] qf5 = Bytes.toBytes("qf5");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  byte [] qf6 = Bytes.toBytes("qf6");<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  NavigableSet&lt;byte[]&gt; qualifiers = new ConcurrentSkipListSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  List&lt;Cell&gt; expected = new ArrayList&lt;&gt;();<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  List&lt;Cell&gt; result = new ArrayList&lt;&gt;();<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  long id = System.currentTimeMillis();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  Get get = new Get(row);<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private final String DIR = TEST_UTIL.getDataTestDir("TestStore").toString();<a name="line.140"></a>
+<span class="sourceLineNo">141</span><a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  /**<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * Setup<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * @throws IOException<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   */<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  @Before<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  public void setUp() throws IOException {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    qualifiers.add(qf1);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    qualifiers.add(qf3);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    qualifiers.add(qf5);<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    Iterator&lt;byte[]&gt; iter = qualifiers.iterator();<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    while(iter.hasNext()){<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      byte [] next = iter.next();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      expected.add(new KeyValue(row, family, next, 1, (byte[])null));<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      get.addColumn(family, next);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>  private void init(String methodName) throws IOException {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    init(methodName, TEST_UTIL.getConfiguration());<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  private Store init(String methodName, Configuration conf)<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  throws IOException {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    // some of the tests write 4 versions and then flush<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    // (with HBASE-4241, lower versions are collected on flush)<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    hcd.setMaxVersions(4);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    return init(methodName, conf, hcd);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>  private Store init(String methodName, Configuration conf,<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      HColumnDescriptor hcd) throws IOException {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(table));<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    return init(methodName, conf, htd, hcd);<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>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      HColumnDescriptor hcd) throws IOException {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    return init(methodName, conf, htd, hcd, null);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @SuppressWarnings("deprecation")<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      HColumnDescriptor hcd, MyScannerHook hook) throws IOException {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    return init(methodName, conf, htd, hcd, hook, false);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  @SuppressWarnings("deprecation")<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      HColumnDescriptor hcd, MyScannerHook hook, boolean switchToPread) throws IOException {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    //Setting up a Store<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    Path basedir = new Path(DIR+methodName);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    Path tableDir = FSUtils.getTableDir(basedir, htd.getTableName());<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    final Path logdir = new Path(basedir, AbstractFSWALProvider.getWALDirectoryName(methodName));<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>    FileSystem fs = FileSystem.get(conf);<a name="line.198"></a>
+<span class="sourceLineNo">199</span><a name="line.199"></a>
+<span class="sourceLineNo">200</span>    fs.delete(logdir, true);<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    if (htd.hasFamily(hcd.getName())) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      htd.modifyFamily(hcd);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    } else {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      htd.addFamily(hcd);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false,<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      MemStoreLABImpl.CHUNK_SIZE_DEFAULT, 1, 0, null);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    final Configuration walConf = new Configuration(conf);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    FSUtils.setRootDir(walConf, basedir);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    final WALFactory wals = new WALFactory(walConf, null, methodName);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    HRegion region = new HRegion(tableDir, wals.getWAL(info.getEncodedNameAsBytes(),<a name="line.213"></a>
+<span class="sourceLineNo">214</span>            info.getTable().getNamespace()), fs, conf, info, htd, null);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    if (hook == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      store = new HStore(region, hcd, conf);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    } else {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      store = new MyStore(region, hcd, conf, hook, switchToPread);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    return store;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  /**<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * Test we do not lose data if we fail a flush and then close.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * Part of HBase-10466<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   * @throws Exception<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   */<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  @Test<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  public void testFlushSizeAccounting() throws Exception {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    LOG.info("Setting up a faulty file system that cannot write in " +<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      this.name.getMethodName());<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    // Only retry once.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    conf.setInt("hbase.hstore.flush.retries.number", 1);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    User user = User.createUserForTesting(conf, this.name.getMethodName(),<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      new String[]{"foo"});<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    // Inject our faulty LocalFileSystem<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    conf.setClass("fs.file.impl", FaultyFileSystem.class, FileSystem.class);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    user.runAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      @Override<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      public Object run() throws Exception {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        // Make sure it worked (above is sensitive to caching details in hadoop core)<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        FileSystem fs = FileSystem.get(conf);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        Assert.assertEquals(FaultyFileSystem.class, fs.getClass());<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        FaultyFileSystem ffs = (FaultyFileSystem)fs;<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>        // Initialize region<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        init(name.getMethodName(), conf);<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>        MemstoreSize size = store.memstore.getFlushableSize();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        Assert.assertEquals(0, size.getDataSize());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        LOG.info("Adding some data");<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        MemstoreSize kvSize = new MemstoreSize();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        store.add(new KeyValue(row, family, qf1, 1, (byte[])null), kvSize);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        size = store.memstore.getFlushableSize();<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        Assert.assertEquals(kvSize, size);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        // Flush.  Bug #1 from HBASE-10466.  Make sure size calculation on failed flush is right.<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        try {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          LOG.info("Flushing");<a name="line.259"></a>
+<span class="sourceLineNo">260</span>          flushStore(store, id++);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>          Assert.fail("Didn't bubble up IOE!");<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        } catch (IOException ioe) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          Assert.assertTrue(ioe.getMessage().contains("Fault injected"));<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        size = store.memstore.getFlushableSize();<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        Assert.assertEquals(kvSize, size);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        MemstoreSize kvSize2 = new MemstoreSize();<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        store.add(new KeyValue(row, family, qf2, 2, (byte[])null), kvSize2);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        // Even though we add a new kv, we expect the flushable size to be 'same' since we have<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        // not yet cleared the snapshot -- the above flush failed.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        Assert.assertEquals(kvSize, size);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        ffs.fault.set(false);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        flushStore(store, id++);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        size = store.memstore.getFlushableSize();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        // Size should be the foreground kv size.<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        Assert.assertEquals(kvSize2, size);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        flushStore(store, id++);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        size = store.memstore.getFlushableSize();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        assertEquals(0, size.getDataSize());<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        assertEquals(0, size.getHeapSize());<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        return null;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    });<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  }<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>  /**<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * Verify that compression and data block encoding are respected by the<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * Store.createWriterInTmp() method, used on store flush.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   */<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  @Test<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  public void testCreateWriter() throws Exception {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    Configuration conf = HBaseConfiguration.create();<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    FileSystem fs = FileSystem.get(conf);<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    hcd.setCompressionType(Compression.Algorithm.GZ);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    hcd.setDataBlockEncoding(DataBlockEncoding.DIFF);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    init(name.getMethodName(), conf, hcd);<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // Test createWriterInTmp()<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    StoreFileWriter writer = store.createWriterInTmp(4, hcd.getCompressionType(), false, true, false);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    Path path = writer.getPath();<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    writer.append(new KeyValue(row, family, qf1, Bytes.toBytes(1)));<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    writer.append(new KeyValue(row, family, qf2, Bytes.toBytes(2)));<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    writer.append(new KeyValue(row2, family, qf1, Bytes.toBytes(3)));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    writer.append(new KeyValue(row2, family, qf2, Bytes.toBytes(4)));<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    writer.close();<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>    // Verify that compression and encoding settings are respected<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    HFile.Reader reader = HFile.createReader(fs, path, new CacheConfig(conf), true, conf);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    Assert.assertEquals(hcd.getCompressionType(), reader.getCompressionAlgorithm());<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    Assert.assertEquals(hcd.getDataBlockEncoding(), reader.getDataBlockEncoding());<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    reader.close();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  @Test<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public void testDeleteExpiredStoreFiles() throws Exception {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    testDeleteExpiredStoreFiles(0);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    testDeleteExpiredStoreFiles(1);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  /*<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   * @param minVersions the MIN_VERSIONS for the column family<a name="line.323"></a>
+<span class="sourceLineNo">324</span>   */<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public void testDeleteExpiredStoreFiles(int minVersions) throws Exception {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    int storeFileNum = 4;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    int ttl = 4;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    IncrementingEnvironmentEdge edge = new IncrementingEnvironmentEdge();<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    EnvironmentEdgeManagerTestHelper.injectEdge(edge);<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>    Configuration conf = HBaseConfiguration.create();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    // Enable the expired store file deletion<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    conf.setBoolean("hbase.store.delete.expired.storefile", true);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    // Set the compaction threshold higher to avoid normal compactions.<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY, 5);<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    hcd.setMinVersions(minVersions);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    hcd.setTimeToLive(ttl);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    init(name.getMethodName() + "-" + minVersions, conf, hcd);<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    long storeTtl = this.store.getScanInfo().getTtl();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    long sleepTime = storeTtl / storeFileNum;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    long timeStamp;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    // There are 4 store files and the max time stamp difference among these<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // store files will be (this.store.ttl / storeFileNum)<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      LOG.info("Adding some data for the store file #" + i);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      timeStamp = EnvironmentEdgeManager.currentTime();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      this.store.add(new KeyValue(row, family, qf1, timeStamp, (byte[]) null), null);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      this.store.add(new KeyValue(row, family, qf2, timeStamp, (byte[]) null), null);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      this.store.add(new KeyValue(row, family, qf3, timeStamp, (byte[]) null), null);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      flush(i);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      edge.incrementTime(sleepTime);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>    // Verify the total number of store files<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    Assert.assertEquals(storeFileNum, this.store.getStorefiles().size());<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>     // Each call will find one expired store file and delete it before compaction happens.<a name="line.360"></a>
+<span class="sourceLineNo">361</span>     // There will be no compaction due to threshold above. Last file will not be replaced.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    for (int i = 1; i &lt;= storeFileNum - 1; i++) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      // verify the expired store file.<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      assertNull(this.store.requestCompaction());<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      // Ensure i files are gone.<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      if (minVersions == 0) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        assertEquals(storeFileNum - i, sfs.size());<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        // Ensure only non-expired files remain.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        for (StoreFile sf : sfs) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>          assertTrue(sf.getReader().getMaxTimestamp() &gt;= (edge.currentTime() - storeTtl));<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        }<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      } else {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        assertEquals(storeFileNum, sfs.size());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      // Let the next store file expired.<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      edge.incrementTime(sleepTime);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    }<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    assertNull(this.store.requestCompaction());<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>    Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    // Assert the last expired file is not removed.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    if (minVersions == 0) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      assertEquals(1, sfs.size());<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    }<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    long ts = sfs.iterator().next().getReader().getMaxTimestamp();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    assertTrue(ts &lt; (edge.currentTime() - storeTtl));<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>    for (StoreFile sf : sfs) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      sf.closeReader(true);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    }<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  }<a name="line.392"></a>
+<span class="sourceLineNo">393</span><a name="line.393"></a>
+<span class="sourceLineNo">394</span>  @Test<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  public void testLowestModificationTime() throws Exception {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    Configuration conf = HBaseConfiguration.create();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    FileSystem fs = FileSystem.get(conf);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Initialize region<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    init(name.getMethodName(), conf);<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    int storeFileNum = 4;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      LOG.info("Adding some data for the store file #"+i);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      this.store.add(new KeyValue(row, family, qf1, i, (byte[])null), null);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      this.store.add(new KeyValue(row, family, qf2, i, (byte[])null), null);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      this.store.add(new KeyValue(row, family, qf3, i, (byte[])null), null);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      flush(i);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    // after flush; check the lowest time stamp<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    long lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    long lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    Assert.assertEquals(lowestTimeStampFromManager,lowestTimeStampFromFS);<a name="line.412"></a>
+<span class="sourceLineNo">413</span><a name="line.413"></a>
+<span class="sourceLineNo">414</span>    // after compact; check the lowest time stamp<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    store.compact(store.requestCompaction(), NoLimitThroughputController.INSTANCE, null);<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    Assert.assertEquals(lowestTimeStampFromManager, lowestTimeStampFromFS);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>  }<a name="line.419"></a>
+<span class="sourceLineNo">420</span><a name="line.420"></a>
+<span class="sourceLineNo">421</span>  private static long getLowestTimeStampFromFS(FileSystem fs,<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      final Collection&lt;StoreFile&gt; candidates) throws IOException {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    long minTs = Long.MAX_VALUE;<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    if (candidates.isEmpty()) {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      return minTs;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    }<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    Path[] p = new Path[candidates.size()];<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    int i = 0;<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    for (StoreFile sf : candidates) {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      p[i] = sf.getPath();<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      ++i;<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    }<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>    FileStatus[] stats = fs.listStatus(p);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    if (stats == null || stats.length == 0) {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      return minTs;<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    }<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    for (FileStatus s : stats) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      minTs = Math.min(minTs, s.getModificationTime());<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    return minTs;<a name="line.441"></a>
+<span class="sourceLineNo">442</span>  }<a name="line.442"></a>
+<span class="sourceLineNo">443</span><a name="line.443"></a>
+<span class="sourceLineNo">444</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.444"></a>
+<span class="sourceLineNo">445</span>  // Get tests<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>  private static final int BLOCKSIZE_SMALL = 8192;<a name="line.448"></a>
+<span class="sourceLineNo">449</span>  /**<a name="line.449"></a>
+<span class="sourceLineNo">450</span>   * Test for hbase-1686.<a name="line.450"></a>
+<span class="sourceLineNo">451</span>   * @throws IOException<a name="line.451"></a>
+<span class="sourceLineNo">452</span>   */<a name="line.452"></a>
+<span class="sourceLineNo">453</span>  @Test<a name="line.453"></a>
+<span class="sourceLineNo">454</span>  public void testEmptyStoreFile() throws IOException {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    init(this.name.getMethodName());<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    // Write a store file.<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    flush(1);<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    // Now put in place an empty store file.  Its a little tricky.  Have to<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    // do manually with hacked in sequence id.<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    StoreFile f = this.store.getStorefiles().iterator().next();<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    Path storedir = f.getPath().getParent();<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    long seqid = f.getMaxSequenceId();<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    Configuration c = HBaseConfiguration.create();<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    FileSystem fs = FileSystem.get(c);<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    HFileContext meta = new HFileContextBuilder().withBlockSize(BLOCKSIZE_SMALL).build();<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    StoreFileWriter w = new StoreFileWriter.Builder(c, new CacheConfig(c),<a name="line.468"></a>
+<span class="sourceLineNo">469</span>        fs)<a name="line.469"></a>
+<span class="sourceLineNo">470</span>            .withOutputDir(storedir)<a name="line.470"></a>
+<span class="sourceLineNo">471</span>            .withFileContext(meta)<a name="line.471"></a>
+<span class="sourceLineNo">472</span>            .build();<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    w.appendMetadata(seqid + 1, false);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    w.close();<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    this.store.close();<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    // Reopen it... should pick up two files<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    this.store = new HStore(this.store.getHRegion(), this.store.getFamily(), c);<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    Assert.assertEquals(2, this.store.getStorefilesCount());<a name="line.478"></a>
+<span class="sourceLineNo">479</span><a name="line.479"></a>
+<span class="sourceLineNo">480</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.480"></a>
+<span class="sourceLineNo">481</span>        get.getRow(),<a name="line.481"></a>
+<span class="sourceLineNo">482</span>        qualifiers);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    Assert.assertEquals(1, result.size());<a name="line.483"></a>
+<span class="sourceLineNo">484</span>  }<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span>  /**<a name="line.486"></a>
+<span class="sourceLineNo">487</span>   * Getting data from memstore only<a name="line.487"></a>
+<span class="sourceLineNo">488</span>   * @throws IOException<a name="line.488"></a>
+<span class="sourceLineNo">489</span>   */<a name="line.489"></a>
+<span class="sourceLineNo">490</span>  @Test<a name="line.490"></a>
+<span class="sourceLineNo">491</span>  public void testGet_FromMemStoreOnly() throws IOException {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    init(this.name.getMethodName());<a name="line.492"></a>
+<span class="sourceLineNo">493</span><a name="line.493"></a>
+<span class="sourceLineNo">494</span>    //Put data in memstore<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.496"></a>
+<span class="sourceLineNo">497</span>    this.store.add(new KeyValue(row, family, qf3, 1, (byte[])null), null);<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    this.store.add(new KeyValue(row, family, qf4, 1, (byte[])null), null);<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    this.store.add(new KeyValue(row, family, qf5, 1, (byte[])null), null);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    this.store.add(new KeyValue(row, family, qf6, 1, (byte[])null), null);<a name="line.500"></a>
+<span class="sourceLineNo">501</span><a name="line.501"></a>
+<span class="sourceLineNo">502</span>    //Get<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.503"></a>
+<span class="sourceLineNo">504</span>        get.getRow(), qualifiers);<a name="line.504"></a>
+<span class="sourceLineNo">505</span><a name="line.505"></a>
+<span class="sourceLineNo">506</span>    //Compare<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    assertCheck();<a name="line.507"></a>
+<span class="sourceLineNo">508</span>  }<a name="line.508"></a>
+<span class="sourceLineNo">509</span><a name="line.509"></a>
+<span class="sourceLineNo">510</span>  /**<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   * Getting data from files only<a name="line.511"></a>
+<span class="sourceLineNo">512</span>   * @throws IOException<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   */<a name="line.513"></a>
+<span class="sourceLineNo">514</span>  @Test<a name="line.514"></a>
+<span class="sourceLineNo">515</span>  public void testGet_FromFilesOnly() throws IOException {<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    init(this.name.getMethodName());<a name="line.516"></a>
+<span class="sourceLineNo">517</span><a name="line.517"></a>
+<span class="sourceLineNo">518</span>    //Put data in memstore<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.520"></a>
+<span class="sourceLineNo">521</span>    //flush<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    flush(1);<a name="line.522"></a>
+<span class="sourceLineNo">523</span><a name="line.523"></a>
+<span class="sourceLineNo">524</span>    //Add more data<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    this.store.add(new KeyValue(row, family, qf3, 1, (byte[])null), null);<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    this.store.add(new KeyValue(row, family, qf4, 1, (byte[])null), null);<a name="line.526"></a>
+<span class="sourceLineNo">527</span>    //flush<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    flush(2);<a name="line.528"></a>
+<span class="sourceLineNo">529</span><a name="line.529"></a>
+<span class="sourceLineNo">530</span>    //Add more data<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    this.store.add(new KeyValue(row, family, qf5, 1, (byte[])null), null);<a name="line.531"></a>
+<span class="sourceLineNo">532</span>    this.store.add(new KeyValue(row, family, qf6, 1, (byte[])null), null);<a name="line.532"></a>
+<span class="sourceLineNo">533</span>    //flush<a name="line.533"></a>
+<span class="sourceLineNo">534</span>    flush(3);<a name="line.534"></a>
+<span class="sourceLineNo">535</span><a name="line.535"></a>
+<span class="sourceLineNo">536</span>    //Get<a name="line.536"></a>
+<span class="sourceLineNo">537</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.537"></a>
+<span class="sourceLineNo">538</span>        get.getRow(),<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        qualifiers);<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    //this.store.get(get, qualifiers, result);<a name="line.540"></a>
+<span class="sourceLineNo">541</span><a name="line.541"></a>
+<span class="sourceLineNo">542</span>    //Need to sort the result since multiple files<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    Collections.sort(result, CellComparator.COMPARATOR);<a name="line.543"></a>
+<span class="sourceLineNo">544</span><a name="line.544"></a>
+<span class="sourceLineNo">545</span>    //Compare<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    assertCheck();<a name="line.546"></a>
+<span class="sourceLineNo">547</span>  }<a name="line.547"></a>
+<span class="sourceLineNo">548</span><a name="line.548"></a>
+<span class="sourceLineNo">549</span>  /**<a name="line.549"></a>
+<span class="sourceLineNo">550</span>   * Getting data from memstore and files<a name="line.550"></a>
+<span class="sourceLineNo">551</span>   * @throws IOException<a name="line.551"></a>
+<span class="sourceLineNo">552</span>   */<a name="line.552"></a>
+<span class="sourceLineNo">553</span>  @Test<a name="line.553"></a>
+<span class="sourceLineNo">554</span>  public void testGet_FromMemStoreAndFiles() throws IOException {<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    init(this.name.getMethodName());<a name="line.555"></a>
+<span class="sourceLineNo">556</span><a name="line.556"></a>
+<span class="sourceLineNo">557</span>    //Put data in memstore<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    //flush<a name="line.560"></a>
+<span class="sourceLineNo">561</span>    flush(1);<a name="line.561"></a>
+<span class="sourceLineNo">562</span><a name="line.562"></a>
+<span class="sourceLineNo">563</span>    //Add more data<a name="line.563"></a>
+<span class="sourceLineNo">564</span>    this.store.add(new KeyValue(row, family, qf3, 1, (byte[])null), null);<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    this.store.add(new KeyValue(row, family, qf4, 1, (byte[])null), null);<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    //flush<a name="line.566"></a>
+<span class="sourceLineNo">567</span>    flush(2);<a name="line.567"></a>
+<span class="sourceLineNo">568</span><a name="line.568"></a>
+<span class="sourceLineNo">569</span>    //Add more data<a name="line.569"></a>
+<span class="sourceLineNo">570</span>    this.store.add(new KeyValue(row, family, qf5, 1, (byte[])null), null);<a name="line.570"></a>
+<span class="sourceLineNo">571</span>    this.store.add(new KeyValue(row, family, qf6, 1, (byte[])null), null);<a name="line.571"></a>
+<span class="sourceLineNo">572</span><a name="line.572"></a>
+<span class="sourceLineNo">573</span>    //Get<a name="line.573"></a>
+<span class="sourceLineNo">574</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.574"></a>
+<span class="sourceLineNo">575</span>        get.getRow(), qualifiers);<a name="line.575"></a>
+<span class="sourceLineNo">576</span><a name="line.576"></a>
+<span class="sourceLineNo">577</span>    //Need to sort the result since multiple files<a name="line.577"></a>
+<span class="sourceLineNo">578</span>    Collections.sort(result, CellComparator.COMPARATOR);<a name="line.578"></a>
+<span class="sourceLineNo">579</span><a name="line.579"></a>
+<span class="sourceLineNo">580</span>    //Compare<a name="line.580"></a>
+<span class="sourceLineNo">581</span>    assertCheck();<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>  private void flush(int storeFilessize) throws IOException{<a name="line.584"></a>
+<span class="sourceLineNo">585</span>    this.store.snapshot();<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    flushStore(store, id++);<a name="line.586"></a>
+<span class="sourceLineNo">587</span>    Assert.assertEquals(storeFilessize, this.store.getStorefiles().size());<a name="line.587"></a>
+<span class="sourceLineNo">588</span>    Assert.assertEquals(0, ((AbstractMemStore)this.store.memstore).getActive().getCellsCount());<a name="line.588"></a>
+<span class="sourceLineNo">589</span>  }<a name="line.589"></a>
+<span class="sourceLineNo">590</span><a name="line.590"></a>
+<span class="sourceLineNo">591</span>  private void assertCheck() {<a name="line.591"></a>
+<span class="sourceLineNo">592</span>    Assert.assertEquals(expected.size(), result.size());<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    for(int i=0; i&lt;expected.size(); i++) {<a name="line.593"></a>
+<span class="sourceLineNo">594</span>      Assert.assertEquals(expected.get(i), result.get(i));<a name="line.594"></a>
+<span class="sourceLineNo">595</span>    }<a name="line.595"></a>
+<span class="sourceLineNo">596</span>  }<a name="line.596"></a>
+<span class="sourceLineNo">597</span><a name="line.597"></a>
+<span class="sourceLineNo">598</span>  @After<a name="line.598"></a>
+<span class="sourceLineNo">599</span>  public void tearDown() throws Exception {<a name="line.599"></a>
+<span class="sourceLineNo">600</span>    EnvironmentEdgeManagerTestHelper.reset();<a name="line.600"></a>
+<span class="sourceLineNo">601</span>  }<a name="line.601"></a>
+<span class="sourceLineNo">602</span><a name="line.602"></a>
+<span class="sourceLineNo">603</span>  @Test<a name="line.603"></a>
+<span class="sourceLineNo">604</span>  public void testHandleErrorsInFlush() throws Exception {<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    LOG.info("Setting up a faulty file system that cannot write");<a name="line.605"></a>
+<span class="sourceLineNo">606</span><a name="line.606"></a>
+<span class="sourceLineNo">607</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.607"></a>
+<span class="sourceLineNo">608</span>    User user = User.createUserForTesting(conf,<a name="line.608"></a>
+<span class="sourceLineNo">609</span>        "testhandleerrorsinflush", new String[]{"foo"});<a name="line.609"></a>
+<span class="sourceLineNo">610</span>    // Inject our faulty LocalFileSystem<a name="line.610"></a>
+<span class="sourceLineNo">611</span>    conf.setClass("fs.file.impl", FaultyFileSystem.class,<a name="line.611"></a>
+<span class="sourceLineNo">612</span>        FileSystem.class);<a name="line.612"></a>
+<span class="sourceLineNo">613</span>    user.runAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.613"></a>
+<span class="sourceLineNo">614</span>      @Override<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      public Object run() throws Exception {<a name="line.615"></a>
+<span class="sourceLineNo">616</span>        // Make sure it worked (above is sensitive to caching details in hadoop core)<a name="line.616"></a>
+<span class="sourceLineNo">617</span>        FileSystem fs = FileSystem.get(conf);<a name="line.617"></a>
+<span class="sourceLineNo">618</span>        Assert.assertEquals(FaultyFileSystem.class, fs.getClass());<a name="line.618"></a>
+<span class="sourceLineNo">619</span><a name="line.619"></a>
+<span class="sourceLineNo">620</span>        // Initialize region<a name="line.620"></a>
+<span class="sourceLineNo">621</span>        init(name.getMethodName(), conf);<a name="line.621"></a>
+<span class="sourceLineNo">622</span><a name="line.622"></a>
+<span class="sourceLineNo">623</span>        LOG.info("Adding some data");<a name="line.623"></a>
+<span class="sourceLineNo">624</span>        store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.624"></a>
+<span class="sourceLineNo">625</span>        store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.625"></a>
+<span class="sourceLineNo">626</span>        store.add(new KeyValue(row, family, qf3, 1, (byte[])null), null);<a name="line.626"></a>
+<span class="sourceLineNo">627</span><a name="line.627"></a>
+<span class="sourceLineNo">628</span>        LOG.info("Before flush, we should have no files");<a name="line.628"></a>
+<span class="sourceLineNo">629</span><a name="line.629"></a>
+<span class="sourceLineNo">630</span>        Collection&lt;StoreFileInfo&gt; files =<a name="line.630"></a>
+<span class="sourceLineNo">631</span>          store.getRegionFileSystem().getStoreFiles(store.getColumnFamilyName());<a name="line.631"></a>
+<span class="sourceLineNo">632</span>        Assert.assertEquals(0, files != null ? files.size() : 0);<a name="line.632"></a>
+<span class="sourceLineNo">633</span><a name="line.633"></a>
+<span class="sourceLineNo">634</span>        //flush<a name="line.634"></a>
+<span class="sourceLineNo">635</span>        try {<a name="line.635"></a>
+<span class="sourceLineNo">636</span>          LOG.info("Flushing");<a name="line.636"></a>
+<span class="sourceLineNo">637</span>          flush(1);<a name="line.637"></a>
+<span class="sourceLineNo">638</span>          Assert.fail("Didn't bubble up IOE!");<a name="line.638"></a>
+<span class="sourceLineNo">639</span>        } catch (IOException ioe) {<a name="line.639"></a>
+<span class="sourceLineNo">640</span>          Assert.assertTrue(ioe.getMessage().contains("Fault injected"));<a name="line.640"></a>
+<span class="sourceLineNo">641</span>        }<a name="line.641"></a>
+<span class="sourceLineNo">642</span><a name="line.642"></a>
+<span class="sourceLineNo">643</span>        LOG.info("After failed flush, we should still have no files!");<a name="line.643"></a>
+<span class="sourceLineNo">644</span>        files = store.getRegionFileSystem().getStoreFiles(store.getColumnFamilyName());<a name="line.644"></a>
+<span class="sourceLineNo">645</span>        Assert.assertEquals(0, files != null ? files.size() : 0);<a name="line.645"></a>
+<span class="sourceLineNo">646</span>        store.getHRegion().getWAL().close();<a name="line.646"></a>
+<span class="sourceLineNo">647</span>        return null;<a name="line.647"></a>
+<span class="sourceLineNo">648</span>      }<a name="line.648"></a>
+<span class="sourceLineNo">649</span>    });<a name="line.649"></a>
+<span class="sourceLineNo">650</span>    FileSystem.closeAllForUGI(user.getUGI());<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>  /**<a name="line.653"></a>
+<span class="sourceLineNo">654</span>   * Faulty file system that will fail if you write past its fault position the FIRST TIME<a name="line.654"></a>
+<span class="sourceLineNo">655</span>   * only; thereafter it will succeed.  Used by {@link TestHRegion} too.<a name="line.655"></a>
+<span class="sourceLineNo">656</span>   */<a name="line.656"></a>
+<span class="sourceLineNo">657</span>  static class FaultyFileSystem extends FilterFileSystem {<a name="line.657"></a>
+<span class="sourceLineNo">658</span>    List&lt;SoftReference&lt;FaultyOutputStream&gt;&gt; outStreams = new ArrayList&lt;&gt;();<a name="line.658"></a>
+<span class="sourceLineNo">659</span>    private long faultPos = 200;<a name="line.659"></a>
+<span class="sourceLineNo">660</span>    AtomicBoolean fault = new AtomicBoolean(true);<a name="line.660"></a>
+<span class="sourceLineNo">661</span><a name="line.661"></a>
+<span class="sourceLineNo">662</span>    public FaultyFileSystem() {<a name="line.662"></a>
+<span class="sourceLineNo">663</span>      super(new LocalFileSystem());<a name="line.663"></a>
+<span class="sourceLineNo">664</span>      System.err.println("Creating faulty!");<a name="line.664"></a>
+<span class="sourceLineNo">665</span>    }<a name="line.665"></a>
+<span class="sourceLineNo">666</span><a name="line.666"></a>
+<span class="sourceLineNo">667</span>    @Override<a name="line.667"></a>
+<span class="sourceLineNo">668</span>    public FSDataOutputStream create(Path p) throws IOException {<a name="line.668"></a>
+<span class="sourceLineNo">669</span>      return new FaultyOutputStream(super.create(p), faultPos, fault);<a name="line.669"></a>
+<span class="sourceLineNo">670</span>    }<a name="line.670"></a>
+<span class="sourceLineNo">671</span><a name="line.671"></a>
+<span class="sourceLineNo">672</span>    @Override<a name="line.672"></a>
+<span class="sourceLineNo">673</span>    public FSDataOutputStream create(Path f, FsPermission permission,<a name="line.673"></a>
+<span class="sourceLineNo">674</span>        boolean overwrite, int bufferSize, short replication, long blockSize,<a name="line.674"></a>
+<span class="sourceLineNo">675</span>        Progressable progress) throws IOException {<a name="line.675"></a>
+<span class="sourceLineNo">676</span>      return new FaultyOutputStream(super.create(f, permission,<a name="line.676"></a>
+<span class="sourceLineNo">677</span>          overwrite, bufferSize, replication, blockSize, progress), faultPos, fault);<a name="line.677"></a>
+<span class="sourceLineNo">678</span>    }<a name="line.678"></a>
+<span class="sourceLineNo">679</span><a name="line.679"></a>
+<span class="sourceLineNo">680</span>    @Override<a name="line.680"></a>
+<span class="sourceLineNo">681</span>    public FSDataOutputStream createNonRecursive(Path f, boolean overwrite,<a name="line.681"></a>
+<span class="sourceLineNo">682</span>        int bufferSize, short replication, long blockSize, Progressable progress)<a name="line.682"></a>
+<span class="sourceLineNo">683</span>    throws IOException {<a name="line.683"></a>
+<span class="sourceLineNo">684</span>      // Fake it.  Call create instead.  The default implementation throws an IOE<a name="line.684"></a>
+<span class="sourceLineNo">685</span>      // that this is not supported.<a name="line.685"></a>
+<span class="sourceLineNo">686</span>      return create(f, overwrite, bufferSize, replication, blockSize, progress);<a name="line.686"></a>
+<span class="sourceLineNo">687</span>    }<a name="line.687"></a>
+<span class="sourceLineNo">688</span>  }<a name="line.688"></a>
+<span class="sourceLineNo">689</span><a name="line.689"></a>
+<span class="sourceLineNo">690</span>  static class FaultyOutputStream extends FSDataOutputStream {<a name="line.690"></a>
+<span class="sourceLineNo">691</span>    volatile long faultPos = Long.MAX_VALUE;<a name="line.691"></a>
+<span class="sourceLineNo">692</span>    private final AtomicBoolean fault;<a name="line.692"></a>
+<span class="sourceLineNo">693</span><a name="line.693"></a>
+<span class="sourceLineNo">694</span>    public FaultyOutputStream(FSDataOutputStream out, long faultPos, final AtomicBoolean fault)<a name="line.694"></a>
+<span class="sourceLineNo">695</span>    throws IOException {<a name="line.695"></a>
+<span class="sourceLineNo">696</span>      super(out, null);<a name="line.696"></a>
+<span class="sourceLineNo">697</span>      this.faultPos = faultPos;<a name="line.697"></a>
+<span class="sourceLineNo">698</span>      this.fault = fault;<a name="line.698"></a>
+<span class="sourceLineNo">699</span>    }<a name="line.699"></a>
+<span class="sourceLineNo">700</span><a name="line.700"></a>
+<span class="sourceLineNo">701</span>    @Override<a name="line.701"></a>
+<span class="sourceLineNo">702</span>    public void write(byte[] buf, int offset, int length) throws IOException {<a name="line.702"></a>
+<span class="sourceLineNo">703</span>      System.err.println("faulty stream write at pos " + getPos());<a name="line.703"></a>
+<span class="sourceLineNo">704</span>      injectFault();<a name="line.704"></a>
+<span class="sourceLineNo">705</span>      super.write(buf, offset, length);<a name="line.705"></a>
+<span class="sourceLineNo">706</span>    }<a name="line.706"></a>
+<span class="sourceLineNo">707</span><a name="line.707"></a>
+<span class="sourceLineNo">708</span>    private void injectFault() throws IOException {<a name="line.708"></a>
+<span class="sourceLineNo">709</span>      if (this.fault.get() &amp;&amp; getPos() &gt;= faultPos) {<a name="line.709"></a>
+<span class="sourceLineNo">710</span>        throw new IOException("Fault injected");<a name="line.710"></a>
+<span class="sourceLineNo">711</span>      }<a name="line.711"></a>
+<span class="sourceLineNo">712</span>    }<a name="line.712"></a>
+<span class="sourceLineNo">713</span>  }<a name="line.713"></a>
+<span class="sourceLineNo">714</span><a name="line.714"></a>
+<span class="sourceLineNo">715</span>  private static void flushStore(HStore store, long id) throws IOException {<a name="line.715"></a>
+<span class="sourceLineNo">716</span>    StoreFlushContext storeFlushCtx = store.createFlushContext(id);<a name="line.716"></a>
+<span class="sourceLineNo">717</span>    storeFlushCtx.prepare();<a name="line.717"></a>
+<span class="sourceLineNo">718</span>    storeFlushCtx.flushCache(Mockito.mock(MonitoredTask.class));<a name="line.718"></a>
+<span class="sourceLineNo">719</span>    storeFlushCtx.commit(Mockito.mock(MonitoredTask.class));<a name="line.719"></a>
+<span class="sourceLineNo">720</span>  }<a name="line.720"></a>
+<span class="sourceLineNo">721</span><a name="line.721"></a>
+<span class="sourceLineNo">722</span>  /**<a name="line.722"></a>
+<span class="sourceLineNo">723</span>   * Generate a list of KeyValues for testing based on given parameters<a name="line.723"></a>
+<span class="sourceLineNo">724</span>   * @param timestamps<a name="line.724"></a>
+<span class="sourceLineNo">725</span>   * @param numRows<a name="line.725"></a>
+<span class="sourceLineNo">726</span>   * @param qualifier<a name="line.726"></a>
+<span class="sourceLineNo">727</span>   * @param family<a name="line.727"></a>
+<span class="sourceLineNo">728</span>   * @return<a name="line.728"></a>
+<span class="sourceLineNo">729</span>   */<a name="line.729"></a>
+<span class="sourceLineNo">730</span>  List&lt;Cell&gt; getKeyValueSet(long[] timestamps, int numRows,<a name="line.730"></a>
+<span class="sourceLineNo">731</span>      byte[] qualifier, byte[] family) {<a name="line.731"></a>
+<span class="sourceLineNo">732</span>    List&lt;Cell&gt; kvList = new ArrayList&lt;&gt;();<a name="line.732"></a>
+<span class="sourceLineNo">733</span>    for (int i=1;i&lt;=numRows;i++) {<a name="line.733"></a>
+<span class="sourceLineNo">734</span>      byte[] b = Bytes.toBytes(i);<a name="line.734"></a>
+<span class="sourceLineNo">735</span>      for (long timestamp: timestamps) {<a name="line.735"></a>
+<span class="sourceLineNo">736</span>        kvList.add(new KeyValue(b, family, qualifier, timestamp, b));<a name="line.736"></a>
+<span class="sourceLineNo">737</span>      }<a name="line.737"></a>
+<span class="sourceLineNo">738</span>    }<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    return kvList;<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>  /**<a name="line.742"></a>
+<span class="sourceLineNo">743</span>   * Test to ensure correctness when using Stores with multiple timestamps<a name="line.743"></a>
+<span class="sourceLineNo">744</span>   * @throws IOException<a name="line.744"></a>
+<span class="sourceLineNo">745</span>   */<a name="line.745"></a>
+<span class="sourceLineNo">746</span>  @Test<a name="line.746"></a>
+<span class="sourceLineNo">747</span>  public void testMultipleTimestamps() throws IOException {<a name="line.747"></a>
+<span class="sourceLineNo">748</span>    int numRows = 1;<a name="line.748"></a>
+<span class="sourceLineNo">749</span>    long[] timestamps1 = new long[] {1,5,10,20};<a name="line.749"></a>
+<span class="sourceLineNo">750</span>    long[] timestamps2 = new long[] {30,80};<a name="line.750"></a>
+<span class="sourceLineNo">751</span><a name="line.751"></a>
+<span class="sourceLineNo">752</span>    init(this.name.getMethodName());<a name="line.752"></a>
+<span class="sourceLineNo">753</span><a name="line.753"></a>
+<span class="sourceLineNo">754</span>    List&lt;Cell&gt; kvList1 = getKeyValueSet(timestamps1,numRows, qf1, family);<a name="line.754"></a>
+<span class="sourceLineNo">755</span>    for (Cell kv : kvList1) {<a name="line.755"></a>
+<span class="sourceLineNo">756</span>      this.store.add(kv, null);<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>    this.store.snapshot();<a name="line.759"></a>
+<span class="sourceLineNo">760</span>    flushStore(store, id++);<a name="line.760"></a>
+<span class="sourceLineNo">761</span><a name="line.761"></a>
+<span class="sourceLineNo">762</span>    List&lt;Cell&gt; kvList2 = getKeyValueSet(timestamps2,numRows, qf1, family);<a name="line.762"></a>
+<span class="sourceLineNo">763</span>    for(Cell kv : kvList2) {<a name="line.763"></a>
+<span class="sourceLineNo">764</span>      this.store.add(kv, null);<a name="line.764"></a>
+<span class="sourceLineNo">765</span>    }<a name="line.765"></a>
+<span class="sourceLineNo">766</span><a name="line.766"></a>
+<span class="sourceLineNo">767</span>    List&lt;Cell&gt; result;<a name="line.767"></a>
+<span class="sourceLineNo">768</span>    Get get = new Get(Bytes.toBytes(1));<a name="line.768"></a>
+<span class="sourceLineNo">769</span>    get.addColumn(family,qf1);<a name="line.769"></a>
+<span class="sourceLineNo">770</span><a name="line.770"></a>
+<span class="sourceLineNo">771</span>    get.setTimeRange(0,15);<a name="line.771"></a>
+<span class="sourceLineNo">772</span>    result = HBaseTestingUtility.getFromStoreFile(store, get);<a name="line.772"></a>
+<span class="sourceLineNo">773</span>    Assert.assertTrue(result.size()&gt;0);<a name="line.773"></a>
+<span class="sourceLineNo">774</span><a name="line.774"></a>
+<span class="sourceLineNo">775</span>    get.setTimeRange(40,90);<a name="line.775"></a>
+<span class="sourceLineNo">776</span>    result = HBaseTestingUtility.getFromStoreFile(store, get);<a name="line.776"></a>
+<span class="sourceLineNo">777</span>    Assert.assertTrue(result.size()&gt;0);<a name="line.777"></a>
+<span class="sourceLineNo">778</span><a name="line.778"></a>
+<span class="sourceLineNo">779</span>    get.setTimeRange(10,45);<a name="line.779"></a>
+<span class="sourceLineNo">780</span>    result = HBaseTestingUtility.getFromStoreFile(store, get);<a name="line.780"></a>
+<span class="sourceLineNo">781</span>    Assert.assertTrue(result.size()&gt;0);<a name="line.781"></a>
+<span class="sourceLineNo">782</span><a name="line.782"></a>
+<span class="sourceLineNo">783</span>    get.setTimeRange(80,145);<a name="line.783"></a>
+<span class="sourceLineNo">784</span>    result = HBaseTestingUtility.getFromStoreFile(store, get);<a name="line.784"></a>
+<span class="sourceLineNo">785</span>    Assert.assertTrue(result.size()&gt;0);<a name="line.785"></a>
+<span class="sourceLineNo">786</span><a name="line.786"></a>
+<span class="sourceLineNo">787</span>    get.setTimeRange(1,2);<a name="line.787"></a>
+<span class="sourceLineNo">788</span>    result = HBaseTestingUtility.getFromStoreFile(store, get);<a name="line.788"></a>
+<span class="sourceLineNo">789</span>    Assert.assertTrue(result.size()&gt;0);<a name="line.789"></a>
+<span class="sourceLineNo">790</span><a name="line.790"></a>
+<span class="sourceLineNo">791</span>    get.setTimeRange(90,200);<a name="line.791"></a>
+<span class="sourceLineNo">792</span>    result = HBaseTestingUtility.getFromStoreFile(store, get);<a name="line.792"></a>
+<span class="sourceLineNo">793</span>    Assert.assertTrue(result.size()==0);<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>  /**<a name="line.796"></a>
+<span class="sourceLineNo">797</span>   * Test for HBASE-3492 - Test split on empty colfam (no store files).<a name="line.797"></a>
+<span class="sourceLineNo">798</span>   *<a name="line.798"></a>
+<span class="sourceLineNo">799</span>   * @throws IOException When the IO operations fail.<a name="line.799"></a>
+<span class="sourceLineNo">800</span>   */<a name="line.800"></a>
+<span class="sourceLineNo">801</span>  @Test<a name="line.801"></a>
+<span class="sourceLineNo">802</span>  public void testSplitWithEmptyColFam() throws IOException {<a name="line.802"></a>
+<span class="sourceLineNo">803</span>    init(this.name.getMethodName());<a name="line.803"></a>
+<span class="sourceLineNo">804</span>    Assert.assertNull(store.getSplitPoint());<a name="line.804"></a>
+<span class="sourceLineNo">805</span>    store.getHRegion().forceSplit(null);<a name="line.805"></a>
+<span class="sourceLineNo">806</span>    Assert.assertNull(store.getSplitPoint());<a name="line.806"></a>
+<span class="sourceLineNo">807</span>    store.getHRegion().clearSplit();<a name="line.807"></a>
+<span class="sourceLineNo">808</span>  }<a name="line.808"></a>
+<span class="sourceLineNo">809</span><a name="line.809"></a>
+<span class="sourceLineNo">810</span>  @Test<a name="line.810"></a>
+<span class="sourceLineNo">811</span>  public void testStoreUsesConfigurationFromHcdAndHtd() throws Exception {<a name="line.811"></a>
+<span class="sourceLineNo">812</span>    final String CONFIG_KEY = "hbase.regionserver.thread.compaction.throttle";<a name="line.812"></a>
+<span class="sourceLineNo">813</span>    long anyValue = 10;<a name="line.813"></a>
+<span class="sourceLineNo">814</span><a name="line.814"></a>
+<span class="sourceLineNo">815</span>    // We'll check that it uses correct config and propagates it appropriately by going thru<a name="line.815"></a>
+<span class="sourceLineNo">816</span>    // the simplest "real" path I can find - "throttleCompaction", which just checks whether<a name="line.816"></a>
+<span class="sourceLineNo">817</span>    // a number we pass in is higher than some config value, inside compactionPolicy.<a name="line.817"></a>
+<span class="sourceLineNo">818</span>    Configuration conf = HBaseConfiguration.create();<a name="line.818"></a>
+<span class="sourceLineNo">819</span>    conf.setLong(CONFIG_KEY, anyValue);<a name="line.819"></a>
+<span class="sourceLineNo">820</span>    init(name.getMethodName() + "-xml", conf);<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    Assert.assertTrue(store.throttleCompaction(anyValue + 1));<a name="line.821"></a>
+<span class="sourceLineNo">822</span>    Assert.assertFalse(store.throttleCompaction(anyValue));<a name="line.822"></a>
+<span class="sourceLineNo">823</span><a name="line.823"></a>
+<span class="sourceLineNo">824</span>    // HTD overrides XML.<a name="line.824"></a>
+<span class="sourceLineNo">825</span>    --anyValue;<a name="line.825"></a>
+<span class="sourceLineNo">826</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(table));<a name="line.826"></a>
+<span class="sourceLineNo">827</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.827"></a>
+<span class="sourceLineNo">828</span>    htd.setConfiguration(CONFIG_KEY, Long.toString(anyValue));<a name="line.828"></a>
+<span class="sourceLineNo">829</span>    init(name.getMethodName() + "-htd", conf, htd, hcd);<a name="line.829"></a>
+<span class="sourceLineNo">830</span>    Assert.assertTrue(store.throttleCompaction(anyValue + 1));<a name="line.830"></a>
+<span class="sourceLineNo">831</span>    Assert.assertFalse(store.throttleCompaction(anyValue));<a name="line.831"></a>
+<span class="sourceLineNo">832</span><a name="line.832"></a>
+<span class="sourceLineNo">833</span>    // HCD overrides them both.<a name="line.833"></a>
+<span class="sourceLineNo">834</span>    --anyValue;<a name="line.834"></a>
+<span class="sourceLineNo">835</span>    hcd.setConfiguration(CONFIG_KEY, Long.toString(anyValue));<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    init(name.getMethodName() + "-hcd", conf, htd, hcd);<a name="line.836"></a>
+<span class="sourceLineNo">837</span>    Assert.assertTrue(store.throttleCompaction(anyValue + 1));<a name="line.837"></a>
+<span class="sourceLineNo">838</span>    Assert.assertFalse(store.throttleCompaction(anyValue));<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>  public static class DummyStoreEngine extends DefaultStoreEngine {<a name="line.841"></a>
+<span class="sourceLineNo">842</span>    public static DefaultCompactor lastCreatedCompactor = null;<a name="line.842"></a>
+<span class="sourceLineNo">843</span><a name="line.843"></a>
+<span class="sourceLineNo">844</span>    @Override<a name="line.844"></a>
+<span class="sourceLineNo">845</span>    protected void createComponents(Configuration conf, Store store, CellComparator comparator)<a name="line.845"></a>
+<span class="sourceLineNo">846</span>        throws IOException {<a name="line.846"></a>
+<span class="sourceLineNo">847</span>      super.createComponents(conf, store, comparator);<a name="line.847"></a>
+<span class="sourceLineNo">848</span>      lastCreatedCompactor = this.compactor;<a name="line.848"></a>
+<span class="sourceLineNo">849</span>    }<a name="line.849"></a>
+<span class="sourceLineNo">850</span>  }<a name="line.850"></a>
+<span class="sourceLineNo">851</span><a name="line.851"></a>
+<span class="sourceLineNo">852</span>  @Test<a name="line.852"></a>
+<span class="sourceLineNo">853</span>  public void testStoreUsesSearchEngineOverride() throws Exception {<a name="line.853"></a>
+<span class="sourceLineNo">854</span>    Configuration conf = HBaseConfiguration.create();<a name="line.854"></a>
+<span class="sourceLineNo">855</span>    conf.set(StoreEngine.STORE_ENGINE_CLASS_KEY, DummyStoreEngine.class.getName());<a name="line.855"></a>
+<span class="sourceLineNo">856</span>    init(this.name.getMethodName(), conf);<a name="line.856"></a>
+<span class="sourceLineNo">857</span>    Assert.assertEquals(DummyStoreEngine.lastCreatedCompactor,<a name="line.857"></a>
+<span class="sourceLineNo">858</span>      this.store.storeEngine.getCompactor());<a name="line.858"></a>
+<span class="sourceLineNo">859</span>  }<a name="line.859"></a>
+<span class="sourceLineNo">860</span><a name="line.860"></a>
+<span class="sourceLineNo">861</span>  private void addStoreFile() throws IOException {<a name="line.861"></a>
+<span class="sourceLineNo">862</span>    StoreFile f = this.store.getStorefiles().iterator().next();<a name="line.862"></a>
+<span class="sourceLineNo">863</span>    Path storedir = f.getPath().getParent();<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    long seqid = this.store.getMaxSequenceId();<a name="line.864"></a>
+<span class="sourceLineNo">865</span>    Configuration c = TEST_UTIL.getConfiguration();<a name="line.865"></a>
+<span class="sourceLineNo">866</span>    FileSystem fs = FileSystem.get(c);<a name="line.866"></a>
+<span class="sourceLineNo">867</span>    HFileContext fileContext = new HFileContextBuilder().withBlockSize(BLOCKSIZE_SMALL).build();<a name="line.867"></a>
+<span class="sourceLineNo">868</span>    StoreFileWriter w = new StoreFileWriter.Builder(c, new CacheConfig(c),<a name="line.868"></a>
+<span class="sourceLineNo">869</span>        fs)<a name="line.869"></a>
+<span class="sourceLineNo">870</span>            .withOutputDir(storedir)<a name="line.870"></a>
+<span class="sourceLineNo">871</span>            .withFileContext(fileContext)<a name="line.871"></a>
+<span class="sourceLineNo">872</span>            .build();<a name="line.872"></a>
+<span class="sourceLineNo">873</span>    w.appendMetadata(seqid + 1, false);<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    w.close();<a name="line.874"></a>
+<span class="sourceLineNo">875</span>    LOG.info("Added store file:" + w.getPath());<a name="line.875"></a>
+<span class="sourceLineNo">876</span>  }<a name="line.876"></a>
+<span class="sourceLineNo">877</span><a name="line.877"></a>
+<span class="sourceLineNo">878</span>  private void archiveStoreFile(int index) throws IOException {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>    Collection&lt;StoreFile&gt; files = this.store.getStorefiles();<a name="line.879"></a>
+<span class="sourceLineNo">880</span>    StoreFile sf = null;<a name="line.880"></a>
+<span class="sourceLineNo">881</span>    Iterator&lt;StoreFile&gt; it = files.iterator();<a name="line.881"></a>
+<span class="sourceLineNo">882</span>    for (int i = 0; i &lt;= index; i++) {<a name="line.882"></a>
+<span class="sourceLineNo">883</span>      sf = it.next();<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    }<a name="line.884"></a>
+<span class="sourceLineNo">885</span>    store.getRegionFileSystem().removeStoreFiles(store.getColumnFamilyName(), Lists.newArrayList(sf));<a name="line.885"></a>
+<span class="sourceLineNo">886</span>  }<a name="line.886"></a>
+<span class="sourceLineNo">887</span><a name="line.887"></a>
+<span class="sourceLineNo">888</span>  private void closeCompactedFile(int index) throws IOException {<a name="line.888"></a>
+<span class="sourceLineNo">889</span>    Collection&lt;StoreFile&gt; files =<a name="line.889"></a>
+<span class="sourceLineNo">890</span>        this.store.getStoreEngine().getStoreFileManager().getCompactedfiles();<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    StoreFile sf = null;<a name="line.891"></a>
+<span class="sourceLineNo">892</span>    Iterator&lt;StoreFile&gt; it = files.iterator();<a name="line.892"></a>
+<span class="sourceLineNo">893</span>    for (int i = 0; i &lt;= index; i++) {<a name="line.893"></a>
+<span class="sourceLineNo">894</span>      sf = it.next();<a name="line.894"></a>
+<span class="sourceLineNo">895</span>    }<a name="line.895"></a>
+<span class="sourceLineNo">896</span>    sf.closeReader(true);<a name="line.896"></a>
+<span class="sourceLineNo">897</span>    store.getStoreEngine().getStoreFileManager().removeCompactedFiles(Lists.newArrayList(sf));<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>  @Test<a name="line.900"></a>
+<span class="sourceLineNo">901</span>  public void testRefreshStoreFiles() throws Exception {<a name="line.901"></a>
+<span class="sourceLineNo">902</span>    init(name.getMethodName());<a name="line.902"></a>
+

<TRUNCATED>

[11/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.DummyStoreEngine.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.DummyStoreEngine.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.DummyStoreEngine.html
index a1d9f98..9ce2441 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.DummyStoreEngine.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.DummyStoreEngine.html
@@ -28,1446 +28,1556 @@
 <span class="sourceLineNo">020</span>package org.apache.hadoop.hbase.regionserver;<a name="line.20"></a>
 <span class="sourceLineNo">021</span><a name="line.21"></a>
 <span class="sourceLineNo">022</span>import static org.junit.Assert.assertEquals;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.junit.Assert.assertNull;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.junit.Assert.assertTrue;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import static org.mockito.Matchers.any;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import static org.mockito.Mockito.spy;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import static org.mockito.Mockito.times;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import static org.mockito.Mockito.verify;<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.io.IOException;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.lang.ref.SoftReference;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.security.PrivilegedExceptionAction;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.ArrayList;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.Arrays;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.Collection;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.Collections;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.Iterator;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.List;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.ListIterator;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import java.util.NavigableSet;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import java.util.TreeSet;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import java.util.concurrent.ConcurrentSkipListSet;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.concurrent.CountDownLatch;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import java.util.concurrent.ExecutorService;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import java.util.concurrent.Executors;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import java.util.concurrent.TimeUnit;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.util.function.Consumer;<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.commons.logging.Log;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.commons.logging.LogFactory;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.fs.FileStatus;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FileSystem;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FilterFileSystem;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.LocalFileSystem;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.Path;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.permission.FsPermission;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.Cell;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HConstants;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.TableName;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Get;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.security.User;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.util.Progressable;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.junit.After;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.junit.Assert;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.junit.Before;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.junit.Rule;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.junit.Test;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.junit.experimental.categories.Category;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.junit.rules.TestName;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.mockito.Mockito;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>import com.google.common.collect.Lists;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>/**<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * Test class for the Store<a name="line.110"></a>
-<span class="sourceLineNo">111</span> */<a name="line.111"></a>
-<span class="sourceLineNo">112</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.112"></a>
-<span class="sourceLineNo">113</span>public class TestStore {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private static final Log LOG = LogFactory.getLog(TestStore.class);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  @Rule public TestName name = new TestName();<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  HStore store;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  byte [] table = Bytes.toBytes("table");<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  byte [] family = Bytes.toBytes("family");<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  byte [] row = Bytes.toBytes("row");<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  byte [] row2 = Bytes.toBytes("row2");<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  byte [] qf1 = Bytes.toBytes("qf1");<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  byte [] qf2 = Bytes.toBytes("qf2");<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  byte [] qf3 = Bytes.toBytes("qf3");<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  byte [] qf4 = Bytes.toBytes("qf4");<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  byte [] qf5 = Bytes.toBytes("qf5");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  byte [] qf6 = Bytes.toBytes("qf6");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  NavigableSet&lt;byte[]&gt; qualifiers = new ConcurrentSkipListSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  List&lt;Cell&gt; expected = new ArrayList&lt;&gt;();<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  List&lt;Cell&gt; result = new ArrayList&lt;&gt;();<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  long id = System.currentTimeMillis();<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  Get get = new Get(row);<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private final String DIR = TEST_UTIL.getDataTestDir("TestStore").toString();<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertFalse;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.junit.Assert.assertNull;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.junit.Assert.assertTrue;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import static org.mockito.Matchers.any;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import static org.mockito.Mockito.spy;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import static org.mockito.Mockito.times;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import static org.mockito.Mockito.verify;<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.io.IOException;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.lang.ref.SoftReference;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.security.PrivilegedExceptionAction;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.ArrayList;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.Arrays;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Collection;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.Collections;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.Iterator;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.List;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import java.util.ListIterator;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import java.util.NavigableSet;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import java.util.TreeSet;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import java.util.concurrent.ConcurrentSkipListSet;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.concurrent.CountDownLatch;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.ExecutorService;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import java.util.concurrent.Executors;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import java.util.concurrent.TimeUnit;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import java.util.function.Consumer;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.commons.logging.Log;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.commons.logging.LogFactory;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.conf.Configuration;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FileStatus;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.FileSystem;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.FilterFileSystem;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.LocalFileSystem;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.Path;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.fs.permission.FsPermission;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.Cell;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HConstants;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.TableName;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Get;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.security.User;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.util.Progressable;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.junit.After;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.junit.Assert;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.junit.Before;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.junit.Rule;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.junit.Test;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.junit.experimental.categories.Category;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.junit.rules.TestName;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.mockito.Mockito;<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>import com.google.common.collect.Lists;<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> * Test class for the Store<a name="line.111"></a>
+<span class="sourceLineNo">112</span> */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.113"></a>
+<span class="sourceLineNo">114</span>public class TestStore {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static final Log LOG = LogFactory.getLog(TestStore.class);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  @Rule public TestName name = new TestName();<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  HStore store;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  byte [] table = Bytes.toBytes("table");<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  byte [] family = Bytes.toBytes("family");<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>  byte [] row = Bytes.toBytes("row");<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  byte [] row2 = Bytes.toBytes("row2");<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  byte [] qf1 = Bytes.toBytes("qf1");<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  byte [] qf2 = Bytes.toBytes("qf2");<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  byte [] qf3 = Bytes.toBytes("qf3");<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  byte [] qf4 = Bytes.toBytes("qf4");<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  byte [] qf5 = Bytes.toBytes("qf5");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  byte [] qf6 = Bytes.toBytes("qf6");<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  NavigableSet&lt;byte[]&gt; qualifiers = new ConcurrentSkipListSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  List&lt;Cell&gt; expected = new ArrayList&lt;&gt;();<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  List&lt;Cell&gt; result = new ArrayList&lt;&gt;();<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  long id = System.currentTimeMillis();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  Get get = new Get(row);<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private final String DIR = TEST_UTIL.getDataTestDir("TestStore").toString();<a name="line.140"></a>
 <span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  /**<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * Setup<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * @throws IOException<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  @Before<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  public void setUp() throws IOException {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    qualifiers.add(qf1);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    qualifiers.add(qf3);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    qualifiers.add(qf5);<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>    Iterator&lt;byte[]&gt; iter = qualifiers.iterator();<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    while(iter.hasNext()){<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      byte [] next = iter.next();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      expected.add(new KeyValue(row, family, next, 1, (byte[])null));<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      get.addColumn(family, next);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>  private void init(String methodName) throws IOException {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    init(methodName, TEST_UTIL.getConfiguration());<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  private void init(String methodName, Configuration conf)<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  throws IOException {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    // some of the tests write 4 versions and then flush<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    // (with HBASE-4241, lower versions are collected on flush)<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    hcd.setMaxVersions(4);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    init(methodName, conf, hcd);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  private void init(String methodName, Configuration conf,<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      HColumnDescriptor hcd) throws IOException {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(table));<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    init(methodName, conf, htd, hcd);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  }<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      HColumnDescriptor hcd) throws IOException {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    return init(methodName, conf, htd, hcd, null);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  @SuppressWarnings("deprecation")<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      HColumnDescriptor hcd, MyScannerHook hook) throws IOException {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    //Setting up a Store<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    Path basedir = new Path(DIR+methodName);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    Path tableDir = FSUtils.getTableDir(basedir, htd.getTableName());<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    final Path logdir = new Path(basedir, AbstractFSWALProvider.getWALDirectoryName(methodName));<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>    FileSystem fs = FileSystem.get(conf);<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>    fs.delete(logdir, true);<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>    if (htd.hasFamily(hcd.getName())) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      htd.modifyFamily(hcd);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    } else {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      htd.addFamily(hcd);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false, MemStoreLABImpl.CHUNK_SIZE_DEFAULT, 1, 0, null);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    final Configuration walConf = new Configuration(conf);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    FSUtils.setRootDir(walConf, basedir);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    final WALFactory wals = new WALFactory(walConf, null, methodName);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    HRegion region = new HRegion(tableDir, wals.getWAL(info.getEncodedNameAsBytes(),<a name="line.206"></a>
-<span class="sourceLineNo">207</span>            info.getTable().getNamespace()), fs, conf, info, htd, null);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    if (hook == null) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      store = new HStore(region, hcd, conf);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    } else {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      store = new MyStore(region, hcd, conf, hook);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    return store;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  }<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  /**<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * Test we do not lose data if we fail a flush and then close.<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * Part of HBase-10466<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * @throws Exception<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   */<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  @Test<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  public void testFlushSizeAccounting() throws Exception {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    LOG.info("Setting up a faulty file system that cannot write in " +<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      this.name.getMethodName());<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    // Only retry once.<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    conf.setInt("hbase.hstore.flush.retries.number", 1);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    User user = User.createUserForTesting(conf, this.name.getMethodName(),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      new String[]{"foo"});<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // Inject our faulty LocalFileSystem<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    conf.setClass("fs.file.impl", FaultyFileSystem.class, FileSystem.class);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    user.runAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      public Object run() throws Exception {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        // Make sure it worked (above is sensitive to caching details in hadoop core)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        FileSystem fs = FileSystem.get(conf);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        Assert.assertEquals(FaultyFileSystem.class, fs.getClass());<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        FaultyFileSystem ffs = (FaultyFileSystem)fs;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>        // Initialize region<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        init(name.getMethodName(), conf);<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span>        MemstoreSize size = store.memstore.getFlushableSize();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        Assert.assertEquals(0, size.getDataSize());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        LOG.info("Adding some data");<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        MemstoreSize kvSize = new MemstoreSize();<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        store.add(new KeyValue(row, family, qf1, 1, (byte[])null), kvSize);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        size = store.memstore.getFlushableSize();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        Assert.assertEquals(kvSize, size);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        // Flush.  Bug #1 from HBASE-10466.  Make sure size calculation on failed flush is right.<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        try {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          LOG.info("Flushing");<a name="line.252"></a>
-<span class="sourceLineNo">253</span>          flushStore(store, id++);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          Assert.fail("Didn't bubble up IOE!");<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        } catch (IOException ioe) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>          Assert.assertTrue(ioe.getMessage().contains("Fault injected"));<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        size = store.memstore.getFlushableSize();<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        Assert.assertEquals(kvSize, size);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        MemstoreSize kvSize2 = new MemstoreSize();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        store.add(new KeyValue(row, family, qf2, 2, (byte[])null), kvSize2);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        // Even though we add a new kv, we expect the flushable size to be 'same' since we have<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        // not yet cleared the snapshot -- the above flush failed.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        Assert.assertEquals(kvSize, size);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        ffs.fault.set(false);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        flushStore(store, id++);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        size = store.memstore.getFlushableSize();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        // Size should be the foreground kv size.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        Assert.assertEquals(kvSize2, size);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        flushStore(store, id++);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        size = store.memstore.getFlushableSize();<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        assertEquals(0, size.getDataSize());<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        assertEquals(0, size.getHeapSize());<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        return null;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    });<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  }<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  /**<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   * Verify that compression and data block encoding are respected by the<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * Store.createWriterInTmp() method, used on store flush.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   */<a name="line.282"></a>
-<span class="sourceLineNo">283</span>  @Test<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  public void testCreateWriter() throws Exception {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    Configuration conf = HBaseConfiguration.create();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    FileSystem fs = FileSystem.get(conf);<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    hcd.setCompressionType(Compression.Algorithm.GZ);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    hcd.setDataBlockEncoding(DataBlockEncoding.DIFF);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    init(name.getMethodName(), conf, hcd);<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>    // Test createWriterInTmp()<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    StoreFileWriter writer = store.createWriterInTmp(4, hcd.getCompressionType(), false, true, false);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    Path path = writer.getPath();<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    writer.append(new KeyValue(row, family, qf1, Bytes.toBytes(1)));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    writer.append(new KeyValue(row, family, qf2, Bytes.toBytes(2)));<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    writer.append(new KeyValue(row2, family, qf1, Bytes.toBytes(3)));<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    writer.append(new KeyValue(row2, family, qf2, Bytes.toBytes(4)));<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    writer.close();<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>    // Verify that compression and encoding settings are respected<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    HFile.Reader reader = HFile.createReader(fs, path, new CacheConfig(conf), true, conf);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    Assert.assertEquals(hcd.getCompressionType(), reader.getCompressionAlgorithm());<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    Assert.assertEquals(hcd.getDataBlockEncoding(), reader.getDataBlockEncoding());<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    reader.close();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  /**<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * Setup<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * @throws IOException<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   */<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  @Before<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  public void setUp() throws IOException {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    qualifiers.add(qf1);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    qualifiers.add(qf3);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    qualifiers.add(qf5);<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    Iterator&lt;byte[]&gt; iter = qualifiers.iterator();<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    while(iter.hasNext()){<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      byte [] next = iter.next();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      expected.add(new KeyValue(row, family, next, 1, (byte[])null));<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      get.addColumn(family, next);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>  private void init(String methodName) throws IOException {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    init(methodName, TEST_UTIL.getConfiguration());<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  private Store init(String methodName, Configuration conf)<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  throws IOException {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    // some of the tests write 4 versions and then flush<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    // (with HBASE-4241, lower versions are collected on flush)<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    hcd.setMaxVersions(4);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    return init(methodName, conf, hcd);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>  private Store init(String methodName, Configuration conf,<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      HColumnDescriptor hcd) throws IOException {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(table));<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    return init(methodName, conf, htd, hcd);<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>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      HColumnDescriptor hcd) throws IOException {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    return init(methodName, conf, htd, hcd, null);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @SuppressWarnings("deprecation")<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      HColumnDescriptor hcd, MyScannerHook hook) throws IOException {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    return init(methodName, conf, htd, hcd, hook, false);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  @SuppressWarnings("deprecation")<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      HColumnDescriptor hcd, MyScannerHook hook, boolean switchToPread) throws IOException {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    //Setting up a Store<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    Path basedir = new Path(DIR+methodName);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    Path tableDir = FSUtils.getTableDir(basedir, htd.getTableName());<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    final Path logdir = new Path(basedir, AbstractFSWALProvider.getWALDirectoryName(methodName));<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>    FileSystem fs = FileSystem.get(conf);<a name="line.198"></a>
+<span class="sourceLineNo">199</span><a name="line.199"></a>
+<span class="sourceLineNo">200</span>    fs.delete(logdir, true);<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    if (htd.hasFamily(hcd.getName())) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      htd.modifyFamily(hcd);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    } else {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      htd.addFamily(hcd);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false,<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      MemStoreLABImpl.CHUNK_SIZE_DEFAULT, 1, 0, null);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    final Configuration walConf = new Configuration(conf);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    FSUtils.setRootDir(walConf, basedir);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    final WALFactory wals = new WALFactory(walConf, null, methodName);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    HRegion region = new HRegion(tableDir, wals.getWAL(info.getEncodedNameAsBytes(),<a name="line.213"></a>
+<span class="sourceLineNo">214</span>            info.getTable().getNamespace()), fs, conf, info, htd, null);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    if (hook == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      store = new HStore(region, hcd, conf);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    } else {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      store = new MyStore(region, hcd, conf, hook, switchToPread);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    return store;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  /**<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * Test we do not lose data if we fail a flush and then close.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * Part of HBase-10466<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   * @throws Exception<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   */<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  @Test<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  public void testFlushSizeAccounting() throws Exception {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    LOG.info("Setting up a faulty file system that cannot write in " +<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      this.name.getMethodName());<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    // Only retry once.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    conf.setInt("hbase.hstore.flush.retries.number", 1);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    User user = User.createUserForTesting(conf, this.name.getMethodName(),<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      new String[]{"foo"});<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    // Inject our faulty LocalFileSystem<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    conf.setClass("fs.file.impl", FaultyFileSystem.class, FileSystem.class);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    user.runAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      @Override<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      public Object run() throws Exception {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        // Make sure it worked (above is sensitive to caching details in hadoop core)<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        FileSystem fs = FileSystem.get(conf);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        Assert.assertEquals(FaultyFileSystem.class, fs.getClass());<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        FaultyFileSystem ffs = (FaultyFileSystem)fs;<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>        // Initialize region<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        init(name.getMethodName(), conf);<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>        MemstoreSize size = store.memstore.getFlushableSize();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        Assert.assertEquals(0, size.getDataSize());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        LOG.info("Adding some data");<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        MemstoreSize kvSize = new MemstoreSize();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        store.add(new KeyValue(row, family, qf1, 1, (byte[])null), kvSize);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        size = store.memstore.getFlushableSize();<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        Assert.assertEquals(kvSize, size);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        // Flush.  Bug #1 from HBASE-10466.  Make sure size calculation on failed flush is right.<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        try {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          LOG.info("Flushing");<a name="line.259"></a>
+<span class="sourceLineNo">260</span>          flushStore(store, id++);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>          Assert.fail("Didn't bubble up IOE!");<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        } catch (IOException ioe) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          Assert.assertTrue(ioe.getMessage().contains("Fault injected"));<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        size = store.memstore.getFlushableSize();<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        Assert.assertEquals(kvSize, size);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        MemstoreSize kvSize2 = new MemstoreSize();<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        store.add(new KeyValue(row, family, qf2, 2, (byte[])null), kvSize2);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        // Even though we add a new kv, we expect the flushable size to be 'same' since we have<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        // not yet cleared the snapshot -- the above flush failed.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        Assert.assertEquals(kvSize, size);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        ffs.fault.set(false);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        flushStore(store, id++);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        size = store.memstore.getFlushableSize();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        // Size should be the foreground kv size.<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        Assert.assertEquals(kvSize2, size);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        flushStore(store, id++);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        size = store.memstore.getFlushableSize();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        assertEquals(0, size.getDataSize());<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        assertEquals(0, size.getHeapSize());<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        return null;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    });<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  }<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>  /**<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * Verify that compression and data block encoding are respected by the<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * Store.createWriterInTmp() method, used on store flush.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   */<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  @Test<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  public void testCreateWriter() throws Exception {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    Configuration conf = HBaseConfiguration.create();<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    FileSystem fs = FileSystem.get(conf);<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    hcd.setCompressionType(Compression.Algorithm.GZ);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    hcd.setDataBlockEncoding(DataBlockEncoding.DIFF);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    init(name.getMethodName(), conf, hcd);<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // Test createWriterInTmp()<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    StoreFileWriter writer = store.createWriterInTmp(4, hcd.getCompressionType(), false, true, false);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    Path path = writer.getPath();<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    writer.append(new KeyValue(row, family, qf1, Bytes.toBytes(1)));<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    writer.append(new KeyValue(row, family, qf2, Bytes.toBytes(2)));<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    writer.append(new KeyValue(row2, family, qf1, Bytes.toBytes(3)));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    writer.append(new KeyValue(row2, family, qf2, Bytes.toBytes(4)));<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    writer.close();<a name="line.307"></a>
 <span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  @Test<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  public void testDeleteExpiredStoreFiles() throws Exception {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    testDeleteExpiredStoreFiles(0);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    testDeleteExpiredStoreFiles(1);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  /*<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * @param minVersions the MIN_VERSIONS for the column family<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   */<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public void testDeleteExpiredStoreFiles(int minVersions) throws Exception {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    int storeFileNum = 4;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    int ttl = 4;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    IncrementingEnvironmentEdge edge = new IncrementingEnvironmentEdge();<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    EnvironmentEdgeManagerTestHelper.injectEdge(edge);<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    Configuration conf = HBaseConfiguration.create();<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    // Enable the expired store file deletion<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    conf.setBoolean("hbase.store.delete.expired.storefile", true);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    // Set the compaction threshold higher to avoid normal compactions.<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY, 5);<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    hcd.setMinVersions(minVersions);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    hcd.setTimeToLive(ttl);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    init(name.getMethodName() + "-" + minVersions, conf, hcd);<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>    long storeTtl = this.store.getScanInfo().getTtl();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    long sleepTime = storeTtl / storeFileNum;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    long timeStamp;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    // There are 4 store files and the max time stamp difference among these<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    // store files will be (this.store.ttl / storeFileNum)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      LOG.info("Adding some data for the store file #" + i);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      timeStamp = EnvironmentEdgeManager.currentTime();<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      this.store.add(new KeyValue(row, family, qf1, timeStamp, (byte[]) null), null);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      this.store.add(new KeyValue(row, family, qf2, timeStamp, (byte[]) null), null);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      this.store.add(new KeyValue(row, family, qf3, timeStamp, (byte[]) null), null);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      flush(i);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      edge.incrementTime(sleepTime);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    }<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>    // Verify the total number of store files<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    Assert.assertEquals(storeFileNum, this.store.getStorefiles().size());<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>     // Each call will find one expired store file and delete it before compaction happens.<a name="line.353"></a>
-<span class="sourceLineNo">354</span>     // There will be no compaction due to threshold above. Last file will not be replaced.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    for (int i = 1; i &lt;= storeFileNum - 1; i++) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      // verify the expired store file.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      assertNull(this.store.requestCompaction());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      // Ensure i files are gone.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      if (minVersions == 0) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        assertEquals(storeFileNum - i, sfs.size());<a name="line.361"></a>
-<span class="sourceLineNo">362</span>        // Ensure only non-expired files remain.<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        for (StoreFile sf : sfs) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>          assertTrue(sf.getReader().getMaxTimestamp() &gt;= (edge.currentTime() - storeTtl));<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      } else {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        assertEquals(storeFileNum, sfs.size());<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      // Let the next store file expired.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      edge.incrementTime(sleepTime);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    }<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    assertNull(this.store.requestCompaction());<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>    Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    // Assert the last expired file is not removed.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    if (minVersions == 0) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      assertEquals(1, sfs.size());<a name="line.377"></a>
+<span class="sourceLineNo">309</span>    // Verify that compression and encoding settings are respected<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    HFile.Reader reader = HFile.createReader(fs, path, new CacheConfig(conf), true, conf);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    Assert.assertEquals(hcd.getCompressionType(), reader.getCompressionAlgorithm());<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    Assert.assertEquals(hcd.getDataBlockEncoding(), reader.getDataBlockEncoding());<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    reader.close();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  @Test<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public void testDeleteExpiredStoreFiles() throws Exception {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    testDeleteExpiredStoreFiles(0);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    testDeleteExpiredStoreFiles(1);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  /*<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   * @param minVersions the MIN_VERSIONS for the column family<a name="line.323"></a>
+<span class="sourceLineNo">324</span>   */<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public void testDeleteExpiredStoreFiles(int minVersions) throws Exception {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    int storeFileNum = 4;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    int ttl = 4;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    IncrementingEnvironmentEdge edge = new IncrementingEnvironmentEdge();<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    EnvironmentEdgeManagerTestHelper.injectEdge(edge);<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>    Configuration conf = HBaseConfiguration.create();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    // Enable the expired store file deletion<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    conf.setBoolean("hbase.store.delete.expired.storefile", true);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    // Set the compaction threshold higher to avoid normal compactions.<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY, 5);<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    hcd.setMinVersions(minVersions);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    hcd.setTimeToLive(ttl);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    init(name.getMethodName() + "-" + minVersions, conf, hcd);<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    long storeTtl = this.store.getScanInfo().getTtl();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    long sleepTime = storeTtl / storeFileNum;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    long timeStamp;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    // There are 4 store files and the max time stamp difference among these<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // store files will be (this.store.ttl / storeFileNum)<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      LOG.info("Adding some data for the store file #" + i);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      timeStamp = EnvironmentEdgeManager.currentTime();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      this.store.add(new KeyValue(row, family, qf1, timeStamp, (byte[]) null), null);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      this.store.add(new KeyValue(row, family, qf2, timeStamp, (byte[]) null), null);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      this.store.add(new KeyValue(row, family, qf3, timeStamp, (byte[]) null), null);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      flush(i);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      edge.incrementTime(sleepTime);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>    // Verify the total number of store files<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    Assert.assertEquals(storeFileNum, this.store.getStorefiles().size());<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>     // Each call will find one expired store file and delete it before compaction happens.<a name="line.360"></a>
+<span class="sourceLineNo">361</span>     // There will be no compaction due to threshold above. Last file will not be replaced.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    for (int i = 1; i &lt;= storeFileNum - 1; i++) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      // verify the expired store file.<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      assertNull(this.store.requestCompaction());<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      // Ensure i files are gone.<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      if (minVersions == 0) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        assertEquals(storeFileNum - i, sfs.size());<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        // Ensure only non-expired files remain.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        for (StoreFile sf : sfs) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>          assertTrue(sf.getReader().getMaxTimestamp() &gt;= (edge.currentTime() - storeTtl));<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        }<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      } else {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        assertEquals(storeFileNum, sfs.size());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      // Let the next store file expired.<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      edge.incrementTime(sleepTime);<a name="line.377"></a>
 <span class="sourceLineNo">378</span>    }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    long ts = sfs.iterator().next().getReader().getMaxTimestamp();<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    assertTrue(ts &lt; (edge.currentTime() - storeTtl));<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    for (StoreFile sf : sfs) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      sf.closeReader(true);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  @Test<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public void testLowestModificationTime() throws Exception {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    Configuration conf = HBaseConfiguration.create();<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    FileSystem fs = FileSystem.get(conf);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    // Initialize region<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    init(name.getMethodName(), conf);<a name="line.392"></a>
+<span class="sourceLineNo">379</span>    assertNull(this.store.requestCompaction());<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>    Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    // Assert the last expired file is not removed.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    if (minVersions == 0) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      assertEquals(1, sfs.size());<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    }<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    long ts = sfs.iterator().next().getReader().getMaxTimestamp();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    assertTrue(ts &lt; (edge.currentTime() - storeTtl));<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>    for (StoreFile sf : sfs) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      sf.closeReader(true);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    }<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  }<a name="line.392"></a>
 <span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    int storeFileNum = 4;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      LOG.info("Adding some data for the store file #"+i);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      this.store.add(new KeyValue(row, family, qf1, i, (byte[])null), null);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      this.store.add(new KeyValue(row, family, qf2, i, (byte[])null), null);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      this.store.add(new KeyValue(row, family, qf3, i, (byte[])null), null);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      flush(i);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    // after flush; check the lowest time stamp<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    long lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    long lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    Assert.assertEquals(lowestTimeStampFromManager,lowestTimeStampFromFS);<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>    // after compact; check the lowest time stamp<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    store.compact(store.requestCompaction(), NoLimitThroughputController.INSTANCE, null);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    Assert.assertEquals(lowestTimeStampFromManager, lowestTimeStampFromFS);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
+<span class="sourceLineNo">394</span>  @Test<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  public void testLowestModificationTime() throws Exception {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    Configuration conf = HBaseConfiguration.create();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    FileSystem fs = FileSystem.get(conf);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Initialize region<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    init(name.getMethodName(), conf);<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    int storeFileNum = 4;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      LOG.info("Adding some data for the store file #"+i);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      this.store.add(new KeyValue(row, family, qf1, i, (byte[])null), null);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      this.store.add(new KeyValue(row, family, qf2, i, (byte[])null), null);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      this.store.add(new KeyValue(row, family, qf3, i, (byte[])null), null);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      flush(i);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    // after flush; check the lowest time stamp<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    long lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    long lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    Assert.assertEquals(lowestTimeStampFromManager,lowestTimeStampFromFS);<a name="line.412"></a>
 <span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  private static long getLowestTimeStampFromFS(FileSystem fs,<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      final Collection&lt;StoreFile&gt; candidates) throws IOException {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    long minTs = Long.MAX_VALUE;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    if (candidates.isEmpty()) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      return minTs;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    }<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    Path[] p = new Path[candidates.size()];<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    int i = 0;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    for (StoreFile sf : candidates) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      p[i] = sf.getPath();<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      ++i;<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    }<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>    FileStatus[] stats = fs.listStatus(p);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    if (stats == null || stats.length == 0) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      return minTs;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    for (FileStatus s : stats) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      minTs = Math.min(minTs, s.getModificationTime());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    return minTs;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  // Get tests<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>  private static final int BLOCKSIZE_SMALL = 8192;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Test for hbase-1686.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @throws IOException<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  @Test<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  public void testEmptyStoreFile() throws IOException {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    init(this.name.getMethodName());<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    // Write a store file.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    flush(1);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    // Now put in place an empty store file.  Its a little tricky.  Have to<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // do manually with hacked in sequence id.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    StoreFile f = this.store.getStorefiles().iterator().next();<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    Path storedir = f.getPath().getParent();<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    long seqid = f.getMaxSequenceId();<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    Configuration c = HBaseConfiguration.create();<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    FileSystem fs = FileSystem.get(c);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    HFileContext meta = new HFileContextBuilder().withBlockSize(BLOCKSIZE_SMALL).build();<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    StoreFileWriter w = new StoreFileWriter.Builder(c, new CacheConfig(c),<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        fs)<a name="line.462"></a>
-<span class="sourceLineNo">463</span>            .withOutputDir(storedir)<a name="line.463"></a>
-<span class="sourceLineNo">464</span>            .withFileContext(meta)<a name="line.464"></a>
-<span class="sourceLineNo">465</span>            .build();<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    w.appendMetadata(seqid + 1, false);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    w.close();<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    this.store.close();<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    // Reopen it... should pick up two files<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    this.store = new HStore(this.store.getHRegion(), this.store.getFamily(), c);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    Assert.assertEquals(2, this.store.getStorefilesCount());<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        get.getRow(),<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        qualifiers);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    Assert.assertEquals(1, result.size());<a name="line.476"></a>
-<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>  /**<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * Getting data from memstore only<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @throws IOException<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   */<a name="line.482"></a>
-<span class="sourceLineNo">483</span>  @Test<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  public void testGet_FromMemStoreOnly() throws IOException {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    init(this.name.getMethodName());<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>    //Put data in memstore<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    this.store.add(new KeyValue(row, family, qf3, 1, (byte[])null), null);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    this.store.add(new KeyValue(row, family, qf4, 1, (byte[])null), null);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    this.store.add(new KeyValue(row, family, qf5, 1, (byte[])null), null);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    this.store.add(new KeyValue(row, family, qf6, 1, (byte[])null), null);<a name="line.493"></a>
-<span class="sourceLineNo">494</span><a name="line.494"></a>
-<span class="sourceLineNo">495</span>    //Get<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        get.getRow(), qualifiers);<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    //Compare<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    assertCheck();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  }<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>   * Getting data from files only<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @throws IOException<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   */<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  @Test<a name="line.507"></a>
-<span class="sourceLineNo">508</span>  public void testGet_FromFilesOnly() throws IOException {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    init(this.name.getMethodName());<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>    //Put data in memstore<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    //flush<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    flush(1);<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>    //Add more data<a name="line.517"></a>
-

<TRUNCATED>

[39/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 1299ac3..2535db3 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -289,7 +289,7 @@
 <td>2235</td>
 <td>0</td>
 <td>0</td>
-<td>14598</td></tr></table></div>
+<td>14601</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -4512,7 +4512,7 @@
 <td><a href="#org.apache.hadoop.hbase.regionserver.Store.java">org/apache/hadoop/hbase/regionserver/Store.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>15</td></tr>
+<td>16</td></tr>
 <tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreEngine.java">org/apache/hadoop/hbase/regionserver/StoreEngine.java</a></td>
 <td>0</td>
@@ -4567,7 +4567,7 @@
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreScanner.java">org/apache/hadoop/hbase/regionserver/StoreScanner.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>26</td></tr>
+<td>28</td></tr>
 <tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreUtils.java">org/apache/hadoop/hbase/regionserver/StoreUtils.java</a></td>
 <td>0</td>
@@ -7308,7 +7308,7 @@
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_imports.html#UnusedImports">UnusedImports</a>
 <ul>
 <li>processJavadoc: <tt>&quot;true&quot;</tt></li></ul></td>
-<td>87</td>
+<td>89</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td>indentation</td>
@@ -7331,7 +7331,7 @@
 <tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#NonEmptyAtclauseDescription">NonEmptyAtclauseDescription</a></td>
-<td>3213</td>
+<td>3214</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td>misc</td>
@@ -56014,7 +56014,7 @@
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'com.google.common.collect.ImmutableCollection' import.</td>
-<td>30</td></tr></table></div>
+<td>39</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.DefaultStoreFlusher.java">org/apache/hadoop/hbase/regionserver/DefaultStoreFlusher.java</h3>
 <table border="0" class="table table-striped">
@@ -58645,313 +58645,313 @@
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'com.google.common.annotations.VisibleForTesting' import.</td>
-<td>95</td></tr>
+<td>96</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>210</td></tr>
+<td>211</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>213</td></tr>
+<td>214</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>214</td></tr>
+<td>215</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child have incorrect indentation level 8, expected level should be 10.</td>
-<td>276</td></tr>
+<td>277</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>341</td></tr>
+<td>342</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>391</td></tr>
+<td>392</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>403</td></tr>
+<td>404</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>481</td></tr>
+<td>482</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>493</td></tr>
+<td>494</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>515</td></tr>
+<td>516</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 112).</td>
-<td>530</td></tr>
+<td>531</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>562</td></tr>
+<td>563</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>564</td></tr>
+<td>565</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>576</td></tr>
+<td>577</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>592</td></tr>
+<td>593</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>614</td></tr>
+<td>615</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>619</td></tr>
+<td>620</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>621</td></tr>
+<td>622</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>691</td></tr>
+<td>692</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>692</td></tr>
+<td>693</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'try' child have incorrect indentation level 7, expected level should be 6.</td>
-<td>697</td></tr>
+<td>698</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>705</td></tr>
+<td>706</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>706</td></tr>
+<td>707</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 have incorrect indentation level 6, expected level should be 8.</td>
-<td>795</td></tr>
+<td>801</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 call' child have incorrect indentation level 9, expected level should be 10.</td>
-<td>796</td></tr>
+<td>802</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 call' child have incorrect indentation level 9, expected level should be 10.</td>
-<td>797</td></tr>
+<td>803</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>800</td></tr>
+<td>806</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>808</td></tr>
+<td>814</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>915</td></tr>
+<td>921</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>921</td></tr>
+<td>927</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>948</td></tr>
+<td>954</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>949</td></tr>
+<td>955</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>950</td></tr>
+<td>956</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1288</td></tr>
+<td>1294</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>1405</td></tr>
+<td>1411</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1482</td></tr>
+<td>1488</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>1723</td></tr>
+<td>1729</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>1733</td></tr>
+<td>1739</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>1753</td></tr>
+<td>1759</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' have incorrect indentation level 10, expected level should be 8.</td>
-<td>1852</td></tr>
+<td>1858</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child have incorrect indentation level 12, expected level should be 10.</td>
-<td>1853</td></tr>
+<td>1859</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if rcurly' have incorrect indentation level 10, expected level should be 8.</td>
-<td>1854</td></tr>
+<td>1860</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>2095</td></tr>
+<td>2141</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2153</td></tr>
+<td>2199</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2155</td></tr>
+<td>2201</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2156</td></tr>
+<td>2202</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2266</td></tr>
+<td>2312</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2296</td></tr>
+<td>2342</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 11, expected level should be 4.</td>
-<td>2439</td></tr>
+<td>2485</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>FileTabCharacter</td>
 <td>File contains tab characters (this is the first instance).</td>
-<td>2439</td></tr>
+<td>2485</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2475</td></tr></table></div>
+<td>2521</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.HStoreFile.java">org/apache/hadoop/hbase/regionserver/HStoreFile.java</h3>
 <table border="0" class="table table-striped">
@@ -63817,101 +63817,107 @@
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>172</td></tr>
+<td>134</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>187</td></tr>
+<td>195</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>204</td></tr>
+<td>210</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
-<td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>295</td></tr>
+<td>NonEmptyAtclauseDescription</td>
+<td>At-clause should have a non-empty description.</td>
+<td>227</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>296</td></tr>
+<td>318</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>309</td></tr>
+<td>319</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>312</td></tr>
+<td>332</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>313</td></tr>
+<td>335</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>321</td></tr>
+<td>336</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>330</td></tr>
+<td>344</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>331</td></tr>
+<td>353</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>448</td></tr>
+<td>354</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>449</td></tr>
+<td>476</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
+<td>JavadocTagContinuationIndentation</td>
+<td>Line continuation have incorrect indentation level, expected level should be 2.</td>
+<td>477</td></tr>
+<tr class="a">
+<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
+<td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>512</td></tr>
-<tr class="a">
+<td>540</td></tr>
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>537</td></tr></table></div>
+<td>565</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreEngine.java">org/apache/hadoop/hbase/regionserver/StoreEngine.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>
@@ -63920,19 +63926,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreFile.java">org/apache/hadoop/hbase/regionserver/StoreFile.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>193</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>
@@ -63941,13 +63947,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreFileComparators.java">org/apache/hadoop/hbase/regionserver/StoreFileComparators.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>
@@ -63956,139 +63962,139 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreFileInfo.java">org/apache/hadoop/hbase/regionserver/StoreFileInfo.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>124</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>135</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>178</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>179</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>180</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>181</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>182</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>197</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>471</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>485</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>534</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>535</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>537</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>540</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>541</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>542</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>545</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>546</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>547</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>550</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>551</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>
@@ -64097,19 +64103,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreFileManager.java">org/apache/hadoop/hbase/regionserver/StoreFileManager.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 'com.google.common.collect.ImmutableCollection' 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>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -64118,25 +64124,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreFileReader.java">org/apache/hadoop/hbase/regionserver/StoreFileReader.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>463</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>483</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>
@@ -64145,61 +64151,61 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreFileScanner.java">org/apache/hadoop/hbase/regionserver/StoreFileScanner.java</h3>
 <table border="0" class="table table-striped">
-<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>205</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>232</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>288</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>299</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>300</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>302</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>443</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>492</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>
@@ -64208,97 +64214,97 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreFileWriter.java">org/apache/hadoop/hbase/regionserver/StoreFileWriter.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>
 <td>'member def modifier' have incorrect indentation level 3, expected level should be 2.</td>
 <td>74</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>'member def modifier' have incorrect indentation level 3, expected level should be 2.</td>
 <td>75</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>'ctor def rcurly' have incorrect indentation level 4, expected level should be 2.</td>
 <td>98</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>109</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>'ctor def modifier' have incorrect indentation level 4, expected level should be 2.</td>
 <td>115</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 have incorrect indentation level 6, expected level should be 8.</td>
 <td>148</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 8, expected level should be 10.</td>
 <td>149</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 8, expected level should be 10.</td>
 <td>150</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 have incorrect indentation level 6, expected level should be 8.</td>
 <td>151</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 8, expected level should be 10.</td>
 <td>152</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 8, expected level should be 10.</td>
 <td>153</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 have incorrect indentation level 6, expected level should be 8.</td>
 <td>154</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 8, expected level should be 10.</td>
 <td>155</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>362</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>
@@ -64307,31 +64313,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreFlushContext.java">org/apache/hadoop/hbase/regionserver/StoreFlushContext.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>62</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>63</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>73</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>
@@ -64340,25 +64346,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreFlusher.java">org/apache/hadoop/hbase/regionserver/StoreFlusher.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>UnusedImports</td>
 <td>Unused import - java.util.Collections.</td>
 <td>24</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>77</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>
@@ -64367,190 +64373,202 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreScanner.java">org/apache/hadoop/hbase/regionserver/StoreScanner.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="b">
+<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
+<td>imports</td>
+<td>UnusedImports</td>
+<td>Unused import - java.util.HashMap.</td>
+<td>25</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
+<td>UnusedImports</td>
+<td>Unused import - java.util.Map.</td>
+<td>27</td></tr>
+<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 'com.google.common.annotations.VisibleForTesting' import.</td>
 <td>56</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>'ctor def' child have incorrect indentation level 5, expected level should be 4.</td>
 <td>187</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>'ctor def' child have incorrect indentation level 5, expected level should be 4.</td>
 <td>189</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>231</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 109).</td>
 <td>356</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>399</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>400</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>403</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>543</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>544</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 179 lines (max allowed is 150).</td>
 <td>547</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
 <td>Inner assignments should be avoided.</td>
 <td>717</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
 <td>Inner assignments should be avoided.</td>
 <td>806</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
 <td>Inner assignments should be avoided.</td>
 <td>827</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 109).</td>
 <td>845</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 120).</td>
 <td>875</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>930</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>931</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>932</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>933</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>949</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>951</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>1058</td></tr>
-<tr class="b">
+<td>1052</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>1062</td></tr>
-<tr class="a">
+<td>1056</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>1099</td></tr>
-<tr class="b">
+<td>1093</td></tr>
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
-<td>1101</td></tr></table></div>
+<td>1095</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreUtils.java">org/apache/hadoop/hbase/regionserver/StoreUtils.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>
 <td>Utility classes should not have a public or default constructor.</td>
 <td>36</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>105</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
@@ -64559,19 +64577,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StorefileRefresherChore.java">org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.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>94</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>
@@ -64580,13 +64598,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StripeMultiFileWriter.java">org/apache/hadoop/hbase/regionserver/StripeMultiFileWriter.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -64595,13 +64613,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StripeStoreConfig.java">org/apache/hadoop/hbase/regionserver/StripeStoreConfig.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>
@@ -64610,13 +64628,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StripeStoreEngine.java">org/apache/hadoop/hbase/regionserver/StripeStoreEngine.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>
@@ -64625,148 +64643,148 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StripeStoreFileManager.java">org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.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 'com.google.common.collect.ImmutableCollection' import.</td>
 <td>48</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'stripeEndRows' must be private and have accessor methods.</td>
 <td>96</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'stripeFiles' must be private and have accessor methods.</td>
 <td>103</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'level0Files' must be private and have accessor methods.</td>
 <td>105</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'allFilesCached' must be private and have accessor methods.</td>
 <td>108</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>234</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>263</td></tr>
+<td>239</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>276</td></tr>
+<td>268</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>507</td></tr>
+<td>281</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>508</td></tr>
+<td>512</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>512</td></tr>
+<td>513</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>582</td></tr>
+<td>517</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>590</td></tr>
+<td>587</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>731</td></tr>
+<td>595</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>736</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 107).</td>
-<td>896</td></tr>
-<tr class="b">
+<td>901</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>913</td></tr>
-<tr class="a">
+<td>918</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>917</td></tr>
-<tr class="b">
+<td>922</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>959</td></tr>
-<tr class="a">
+<td>964</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>994</td></tr></table></div>
+<td>999</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StripeStoreFlusher.java">org/apache/hadoop/hbase/regionserver/StripeStoreFlusher.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.conf.Configuration' 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 'com.google.common.annotations.VisibleForTesting' import.</td>
 <td>37</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>
@@ -64775,37 +64793,37 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.TimeRangeTracker.java">org/apache/hadoop/hbase/regionserver/TimeRangeTracker.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
 <td>143</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>178</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>179</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>183</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>
@@ -64814,13 +64832,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.compactions.CompactionContext.java">org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.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>
@@ -64829,13 +64847,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.compactions.CompactionPolicy.java">org/apache/hadoop/hbase/regionserver/compactions/CompactionPolicy.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>
@@ -64844,31 +64862,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.compactions.CompactionProgress.java">org/apache/hadoop/hbase/regionserver/compactions/CompactionProgress.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'totalCompactingKVs' must be private and have accessor methods.</td>
 <td>37</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'currentCompactedKVs' must be private and have accessor methods.</td>
 <td>39</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'totalCompactedSize' must be private and have accessor methods.</td>
 <td>41</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
@@ -64877,19 +64895,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest.java">org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.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 'com.google.common.base.Preconditions' import.</td>
 <td>33</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>EqualsHashCode</td>
@@ -64898,61 +64916,61 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.compactions.Compactor.java">org/apache/hadoop/hbase/regionserver/compactions/Compactor.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 'com.google.common.io.Closeables' import.</td>
 <td>61</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'maxKeyCount' must be private and have accessor methods.</td>
 <td>118</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'earliestPutTs' must be private and have accessor methods.</td>
 <td>120</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'latestPutTs' must be private and have accessor methods.</td>
 <td>122</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'maxSeqId' must be private and have accessor methods.</td>
 <td>124</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'maxMVCCReadpoint' must be private and have accessor methods.</td>
 <td>126</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'maxTagsLength' must be private and have accessor methods.</td>
 <td>128</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'minSeqIdToKeep' must be private and have accessor methods.</td>
 <td>130</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
@@ -64961,25 +64979,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.compactions.CurrentHourProvider.java">org/apache/hadoop/hbase/regionserver/compactions/CurrentHourProvider.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>FinalClass</td>
 <td>Class CurrentHourProvider should be declared as final.</td>
 <td>25</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 33 should have line break after.</td>
 <td>27</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
@@ -64988,13 +65006,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.compactions.DateTieredCompactionPolicy.java">org/apache/hadoop/hbase/regionserver/compactions/DateTieredCompactionPolicy.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>
@@ -65003,43 +65021,43 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor.java">org/apache/hadoop/hbase/regionserver/compactions/DefaultCompactor.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 'com.google.common.collect.Lists' import.</td>
 <td>37</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 8, expected level should be one of the following: 4, 6.</td>
 <td>53</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 10, expected level should be one of the following: 6, 8.</td>
 <td>57</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' have incorrect indentation level 8, expected level should be one of the following: 4, 6.</td>
 <td>58</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>'object def rcurly' have incorrect indentation level 6, expected level should be one of the following: 2, 4.</td>
 <td>59</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -65048,25 +65066,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.compactions.OffPeakHours.java">org/apache/hadoop/hbase/regionserver/compactions/OffPeakHours.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.conf.Configuration' 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>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 46 should have line break after.</td>
 <td>30</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
@@ -65075,13 +65093,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.compactions.RatioBasedCompactionPolicy.java">org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.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>
@@ -65090,19 +65108,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.compactions.SortedCompactionPolicy.java">org/apache/hadoop/hbase/regionserver/compactions/SortedCompactionPolicy.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 'com.google.common.base.Preconditions' import.</td>
 <td>28</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>
@@ -65111,73 +65129,73 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.compactions.StripeCompactionPolicy.java">org/apache/hadoop/hbase/regionserver/compactions/StripeCompactionPolicy.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 'com.google.common.collect.ImmutableList' import.</td>
 <td>46</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>135</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>145</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>153</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>186</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>204</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>318</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>337</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>343</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>386</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
@@ -65186,13 +65204,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.handler.CloseMetaHandler.java">org/apache/hadoop/hbase/regionserver/handler/CloseMetaHandler.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>
@@ -65201,43 +65219,43 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.handler.CloseRegionHandler.java">org/apache/hadoop/hbase/regionserver/handler/CloseRegionHandler.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.HRegionInfo' import.</td>
 <td>26</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.regionserver.HRegion' import.</td>
 <td>32</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>57</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>58</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>59</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -65246,13 +65264,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.handler.OpenMetaHandler.java">org/apache/hadoop/hbase/regionserver/handler/OpenMetaHandler.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>
@@ -65261,19 +65279,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.handler.OpenPriorityRegionHandler.java">org/apache/hadoop/hbase/regionserver/handler/OpenPriorityRegionHandler.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>RedundantImport</td>
 <td>Redundant import from the same package - org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.</td>
 <td>26</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>
@@ -65282,25 +65300,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.java">org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.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.HRegionInfo' 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 'org.apache.hadoop.hbase.regionserver.HRegion' import.</td>
 <td>33</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>
@@ -65309,13 +65327,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.handler.ParallelSeekHandler.java">org/apache/hadoop/hbase/regionserver/handler/ParallelSeekHandler.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>
@@ -65324,25 +65342,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.handler.RegionReplicaFlushHandler.java">org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.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.regionserver.HRegion' import.</td>
 <td>39</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method call' child have incorrect indentation level 7, expected level should be 8.</td>
 <td>115</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>
@@ -65351,151 +65369,151 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.handler.WALSplitterHandler.java">org/apache/hadoop/hbase/regionserver/handler/WALSplitterHandler.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.Server' 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 'org.apache.hadoop.hbase.regionserver.SplitLogWorker.TaskExecutor' import.</td>
 <td>35</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>MissingSwitchDefault</td>
 <td>switch without &quot;default&quot; clause.</td>
 <td>73</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 have incorrect indentation level 6, expected level should be 8.</td>
 <td>74</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 8, expected level should be 10.</td>
 <td>75</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method call' child have incorrect indentation level 10, expected level should be 12.</td>
 <td>76</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 8, expected level should be 10.</td>
 <td>77</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 have incorrect indentation level 6, expected level should be 8.</td>
 <td>78</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 8, expected level should be 10.</td>
 <td>79</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 8, expected level should be 10.</td>
 <td>80</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 8, expected level should be 10.</td>
 <td>81</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 have incorrect indentation level 6, expected level should be 8.</td>
 <td>82</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' have incorrect indentation level 8, expected level should be 10.</td>
 <td>83</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 have incorrect indentation level 10, expected level should be 12.</td>
 <td>84</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 have incorrect indentation level 12, expected level should be 14.</td>
 <td>85</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 have incorrect indentation level 10, expected level should be 12.</td>
 <td>86</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' have incorrect indentation level 8, expected level should be 10.</td>
 <td>87</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 have incorrect indentation level 6, expected level should be 8.</td>
 <td>91</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' have incorrect indentation level 8, expected level should be 10.</td>
 <td>92</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 have incorrect indentation level 10, expected level should be 12.</td>
 <td>93</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' have incorrect indentation level 8, expected level should be 10.</td>
 <td>95</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 8, expected level should be 10.</td>
 <td>96</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 have incorrect indentation level 10, expected level should be 12.</td>
 <td>97</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>
@@ -65504,19 +65522,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.querymatcher.ColumnTracker.java">org/apache/hadoop/hbase/regionserver/querymatcher/ColumnTracker.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>117</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>
@@ -65525,13 +65543,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.querymatcher.DeleteTracker.java">org/apache/hadoop/hbase/regionserver/querymatcher/DeleteTracker.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>
@@ -65540,13 +65558,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.querymatcher.ExplicitColumnTracker.java">org/apache/hadoop/hbase/regionserver/querymatcher/ExplicitColumnTracker.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>
@@ -65555,85 +65573,85 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.querymatcher.LegacyScanQueryMatcher.java">org/apache/hadoop/hbase/regionserver/querymatcher/LegacyScanQueryMatcher.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>FinalClass</td>
 <td>Class LegacyScanQueryMatcher should be declared as final.</td>
 <td>47</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>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
 <td>47</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' have incorrect indentation level 8, expected level should be 6.</td>
 <td>233</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 have incorrect indentation level 8, expected level should be 10.</td>
 <td>252</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 10, expected level should be 12.</td>
 <td>253</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 have incorrect indentation level 8, expected level should be 10.</td>
 <td>254</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 10, expected level should be 12.</td>
 <td>255</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 have incorrect indentation level 8, expected level should be 10.</td>
 <td>256</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 10, expected level should be 12.</td>
 <td>257</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 have incorrect indentation level 8, expected level should be 10.</td>
 <td>258</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 10, expected level should be 12.</td>
 <td>259</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 have incorrect indentation level 8, expected level should be 10.</td>
 <td>260</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>
@@ -65642,13 +65660,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.querymatcher.ScanDeleteTracker.java">org/apache/hadoop/hbase/regionserver/querymatcher/ScanDeleteTracker.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>
@@ -65657,31 +65675,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher.java">org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>UnusedImports</td>
 <td>Unused import - org.apache.hadoop.hbase.regionserver.KeyValueScanner.</td>
 <td>35</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>138</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>139</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>
@@ -65690,109 +65708,109 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.snapshot.RegionServerSnapshotManager.java">org/apache/hadoop/hbase/regionserver/snapshot/RegionServerSnapshotManager.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 101).</td>
 <td>81</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>95</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>'ctor def modifier' have incorrect indentation level 3, expected level should be 2.</td>
 <td>110</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>131</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>indentation</td>
 <td>Indentation</td>
 <td>'case' child have incorrect indentation level 4, expected level should be 6.</td>
 <td>187</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>188</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>190</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 have incorrect indentation level 4, expected level should be 6.</td>
 <td>192</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 have incorrect indentation level 4, expected level should be 6.</td>
 <td>205</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>206</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>220</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>
 <

<TRUNCATED>

[08/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStore.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStore.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStore.html
index a1d9f98..9ce2441 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStore.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStore.html
@@ -28,1446 +28,1556 @@
 <span class="sourceLineNo">020</span>package org.apache.hadoop.hbase.regionserver;<a name="line.20"></a>
 <span class="sourceLineNo">021</span><a name="line.21"></a>
 <span class="sourceLineNo">022</span>import static org.junit.Assert.assertEquals;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.junit.Assert.assertNull;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.junit.Assert.assertTrue;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import static org.mockito.Matchers.any;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import static org.mockito.Mockito.spy;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import static org.mockito.Mockito.times;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import static org.mockito.Mockito.verify;<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.io.IOException;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.lang.ref.SoftReference;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.security.PrivilegedExceptionAction;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.ArrayList;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.Arrays;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.Collection;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.Collections;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.Iterator;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.List;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.ListIterator;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import java.util.NavigableSet;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import java.util.TreeSet;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import java.util.concurrent.ConcurrentSkipListSet;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.concurrent.CountDownLatch;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import java.util.concurrent.ExecutorService;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import java.util.concurrent.Executors;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import java.util.concurrent.TimeUnit;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.util.function.Consumer;<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.commons.logging.Log;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.commons.logging.LogFactory;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.fs.FileStatus;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FileSystem;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FilterFileSystem;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.LocalFileSystem;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.Path;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.permission.FsPermission;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.Cell;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HConstants;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.TableName;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Get;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.security.User;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.util.Progressable;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.junit.After;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.junit.Assert;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.junit.Before;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.junit.Rule;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.junit.Test;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.junit.experimental.categories.Category;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.junit.rules.TestName;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.mockito.Mockito;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>import com.google.common.collect.Lists;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>/**<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * Test class for the Store<a name="line.110"></a>
-<span class="sourceLineNo">111</span> */<a name="line.111"></a>
-<span class="sourceLineNo">112</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.112"></a>
-<span class="sourceLineNo">113</span>public class TestStore {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private static final Log LOG = LogFactory.getLog(TestStore.class);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  @Rule public TestName name = new TestName();<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  HStore store;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  byte [] table = Bytes.toBytes("table");<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  byte [] family = Bytes.toBytes("family");<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  byte [] row = Bytes.toBytes("row");<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  byte [] row2 = Bytes.toBytes("row2");<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  byte [] qf1 = Bytes.toBytes("qf1");<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  byte [] qf2 = Bytes.toBytes("qf2");<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  byte [] qf3 = Bytes.toBytes("qf3");<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  byte [] qf4 = Bytes.toBytes("qf4");<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  byte [] qf5 = Bytes.toBytes("qf5");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  byte [] qf6 = Bytes.toBytes("qf6");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  NavigableSet&lt;byte[]&gt; qualifiers = new ConcurrentSkipListSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  List&lt;Cell&gt; expected = new ArrayList&lt;&gt;();<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  List&lt;Cell&gt; result = new ArrayList&lt;&gt;();<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  long id = System.currentTimeMillis();<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  Get get = new Get(row);<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private final String DIR = TEST_UTIL.getDataTestDir("TestStore").toString();<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertFalse;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.junit.Assert.assertNull;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.junit.Assert.assertTrue;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import static org.mockito.Matchers.any;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import static org.mockito.Mockito.spy;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import static org.mockito.Mockito.times;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import static org.mockito.Mockito.verify;<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.io.IOException;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.lang.ref.SoftReference;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.security.PrivilegedExceptionAction;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.ArrayList;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.Arrays;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Collection;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.Collections;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.Iterator;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.List;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import java.util.ListIterator;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import java.util.NavigableSet;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import java.util.TreeSet;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import java.util.concurrent.ConcurrentSkipListSet;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.concurrent.CountDownLatch;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.ExecutorService;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import java.util.concurrent.Executors;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import java.util.concurrent.TimeUnit;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import java.util.function.Consumer;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.commons.logging.Log;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.commons.logging.LogFactory;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.conf.Configuration;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FileStatus;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.FileSystem;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.FilterFileSystem;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.LocalFileSystem;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.Path;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.fs.permission.FsPermission;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.Cell;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HConstants;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.TableName;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Get;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.security.User;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.util.Progressable;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.junit.After;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.junit.Assert;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.junit.Before;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.junit.Rule;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.junit.Test;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.junit.experimental.categories.Category;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.junit.rules.TestName;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.mockito.Mockito;<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>import com.google.common.collect.Lists;<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> * Test class for the Store<a name="line.111"></a>
+<span class="sourceLineNo">112</span> */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.113"></a>
+<span class="sourceLineNo">114</span>public class TestStore {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static final Log LOG = LogFactory.getLog(TestStore.class);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  @Rule public TestName name = new TestName();<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  HStore store;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  byte [] table = Bytes.toBytes("table");<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  byte [] family = Bytes.toBytes("family");<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>  byte [] row = Bytes.toBytes("row");<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  byte [] row2 = Bytes.toBytes("row2");<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  byte [] qf1 = Bytes.toBytes("qf1");<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  byte [] qf2 = Bytes.toBytes("qf2");<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  byte [] qf3 = Bytes.toBytes("qf3");<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  byte [] qf4 = Bytes.toBytes("qf4");<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  byte [] qf5 = Bytes.toBytes("qf5");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  byte [] qf6 = Bytes.toBytes("qf6");<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  NavigableSet&lt;byte[]&gt; qualifiers = new ConcurrentSkipListSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  List&lt;Cell&gt; expected = new ArrayList&lt;&gt;();<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  List&lt;Cell&gt; result = new ArrayList&lt;&gt;();<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  long id = System.currentTimeMillis();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  Get get = new Get(row);<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private final String DIR = TEST_UTIL.getDataTestDir("TestStore").toString();<a name="line.140"></a>
 <span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  /**<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * Setup<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * @throws IOException<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  @Before<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  public void setUp() throws IOException {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    qualifiers.add(qf1);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    qualifiers.add(qf3);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    qualifiers.add(qf5);<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>    Iterator&lt;byte[]&gt; iter = qualifiers.iterator();<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    while(iter.hasNext()){<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      byte [] next = iter.next();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      expected.add(new KeyValue(row, family, next, 1, (byte[])null));<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      get.addColumn(family, next);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>  private void init(String methodName) throws IOException {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    init(methodName, TEST_UTIL.getConfiguration());<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  private void init(String methodName, Configuration conf)<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  throws IOException {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    // some of the tests write 4 versions and then flush<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    // (with HBASE-4241, lower versions are collected on flush)<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    hcd.setMaxVersions(4);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    init(methodName, conf, hcd);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  private void init(String methodName, Configuration conf,<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      HColumnDescriptor hcd) throws IOException {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(table));<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    init(methodName, conf, htd, hcd);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  }<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      HColumnDescriptor hcd) throws IOException {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    return init(methodName, conf, htd, hcd, null);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  @SuppressWarnings("deprecation")<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      HColumnDescriptor hcd, MyScannerHook hook) throws IOException {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    //Setting up a Store<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    Path basedir = new Path(DIR+methodName);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    Path tableDir = FSUtils.getTableDir(basedir, htd.getTableName());<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    final Path logdir = new Path(basedir, AbstractFSWALProvider.getWALDirectoryName(methodName));<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>    FileSystem fs = FileSystem.get(conf);<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>    fs.delete(logdir, true);<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>    if (htd.hasFamily(hcd.getName())) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      htd.modifyFamily(hcd);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    } else {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      htd.addFamily(hcd);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false, MemStoreLABImpl.CHUNK_SIZE_DEFAULT, 1, 0, null);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    final Configuration walConf = new Configuration(conf);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    FSUtils.setRootDir(walConf, basedir);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    final WALFactory wals = new WALFactory(walConf, null, methodName);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    HRegion region = new HRegion(tableDir, wals.getWAL(info.getEncodedNameAsBytes(),<a name="line.206"></a>
-<span class="sourceLineNo">207</span>            info.getTable().getNamespace()), fs, conf, info, htd, null);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    if (hook == null) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      store = new HStore(region, hcd, conf);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    } else {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      store = new MyStore(region, hcd, conf, hook);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    return store;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  }<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  /**<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * Test we do not lose data if we fail a flush and then close.<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * Part of HBase-10466<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * @throws Exception<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   */<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  @Test<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  public void testFlushSizeAccounting() throws Exception {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    LOG.info("Setting up a faulty file system that cannot write in " +<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      this.name.getMethodName());<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    // Only retry once.<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    conf.setInt("hbase.hstore.flush.retries.number", 1);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    User user = User.createUserForTesting(conf, this.name.getMethodName(),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      new String[]{"foo"});<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // Inject our faulty LocalFileSystem<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    conf.setClass("fs.file.impl", FaultyFileSystem.class, FileSystem.class);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    user.runAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      public Object run() throws Exception {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        // Make sure it worked (above is sensitive to caching details in hadoop core)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        FileSystem fs = FileSystem.get(conf);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        Assert.assertEquals(FaultyFileSystem.class, fs.getClass());<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        FaultyFileSystem ffs = (FaultyFileSystem)fs;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>        // Initialize region<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        init(name.getMethodName(), conf);<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span>        MemstoreSize size = store.memstore.getFlushableSize();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        Assert.assertEquals(0, size.getDataSize());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        LOG.info("Adding some data");<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        MemstoreSize kvSize = new MemstoreSize();<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        store.add(new KeyValue(row, family, qf1, 1, (byte[])null), kvSize);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        size = store.memstore.getFlushableSize();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        Assert.assertEquals(kvSize, size);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        // Flush.  Bug #1 from HBASE-10466.  Make sure size calculation on failed flush is right.<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        try {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          LOG.info("Flushing");<a name="line.252"></a>
-<span class="sourceLineNo">253</span>          flushStore(store, id++);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          Assert.fail("Didn't bubble up IOE!");<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        } catch (IOException ioe) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>          Assert.assertTrue(ioe.getMessage().contains("Fault injected"));<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        size = store.memstore.getFlushableSize();<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        Assert.assertEquals(kvSize, size);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        MemstoreSize kvSize2 = new MemstoreSize();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        store.add(new KeyValue(row, family, qf2, 2, (byte[])null), kvSize2);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        // Even though we add a new kv, we expect the flushable size to be 'same' since we have<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        // not yet cleared the snapshot -- the above flush failed.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        Assert.assertEquals(kvSize, size);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        ffs.fault.set(false);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        flushStore(store, id++);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        size = store.memstore.getFlushableSize();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        // Size should be the foreground kv size.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        Assert.assertEquals(kvSize2, size);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        flushStore(store, id++);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        size = store.memstore.getFlushableSize();<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        assertEquals(0, size.getDataSize());<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        assertEquals(0, size.getHeapSize());<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        return null;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    });<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  }<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  /**<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   * Verify that compression and data block encoding are respected by the<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * Store.createWriterInTmp() method, used on store flush.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   */<a name="line.282"></a>
-<span class="sourceLineNo">283</span>  @Test<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  public void testCreateWriter() throws Exception {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    Configuration conf = HBaseConfiguration.create();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    FileSystem fs = FileSystem.get(conf);<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    hcd.setCompressionType(Compression.Algorithm.GZ);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    hcd.setDataBlockEncoding(DataBlockEncoding.DIFF);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    init(name.getMethodName(), conf, hcd);<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>    // Test createWriterInTmp()<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    StoreFileWriter writer = store.createWriterInTmp(4, hcd.getCompressionType(), false, true, false);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    Path path = writer.getPath();<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    writer.append(new KeyValue(row, family, qf1, Bytes.toBytes(1)));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    writer.append(new KeyValue(row, family, qf2, Bytes.toBytes(2)));<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    writer.append(new KeyValue(row2, family, qf1, Bytes.toBytes(3)));<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    writer.append(new KeyValue(row2, family, qf2, Bytes.toBytes(4)));<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    writer.close();<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>    // Verify that compression and encoding settings are respected<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    HFile.Reader reader = HFile.createReader(fs, path, new CacheConfig(conf), true, conf);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    Assert.assertEquals(hcd.getCompressionType(), reader.getCompressionAlgorithm());<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    Assert.assertEquals(hcd.getDataBlockEncoding(), reader.getDataBlockEncoding());<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    reader.close();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  /**<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * Setup<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * @throws IOException<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   */<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  @Before<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  public void setUp() throws IOException {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    qualifiers.add(qf1);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    qualifiers.add(qf3);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    qualifiers.add(qf5);<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    Iterator&lt;byte[]&gt; iter = qualifiers.iterator();<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    while(iter.hasNext()){<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      byte [] next = iter.next();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      expected.add(new KeyValue(row, family, next, 1, (byte[])null));<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      get.addColumn(family, next);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>  private void init(String methodName) throws IOException {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    init(methodName, TEST_UTIL.getConfiguration());<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  private Store init(String methodName, Configuration conf)<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  throws IOException {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    // some of the tests write 4 versions and then flush<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    // (with HBASE-4241, lower versions are collected on flush)<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    hcd.setMaxVersions(4);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    return init(methodName, conf, hcd);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>  private Store init(String methodName, Configuration conf,<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      HColumnDescriptor hcd) throws IOException {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(table));<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    return init(methodName, conf, htd, hcd);<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>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      HColumnDescriptor hcd) throws IOException {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    return init(methodName, conf, htd, hcd, null);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @SuppressWarnings("deprecation")<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      HColumnDescriptor hcd, MyScannerHook hook) throws IOException {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    return init(methodName, conf, htd, hcd, hook, false);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  @SuppressWarnings("deprecation")<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      HColumnDescriptor hcd, MyScannerHook hook, boolean switchToPread) throws IOException {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    //Setting up a Store<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    Path basedir = new Path(DIR+methodName);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    Path tableDir = FSUtils.getTableDir(basedir, htd.getTableName());<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    final Path logdir = new Path(basedir, AbstractFSWALProvider.getWALDirectoryName(methodName));<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>    FileSystem fs = FileSystem.get(conf);<a name="line.198"></a>
+<span class="sourceLineNo">199</span><a name="line.199"></a>
+<span class="sourceLineNo">200</span>    fs.delete(logdir, true);<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    if (htd.hasFamily(hcd.getName())) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      htd.modifyFamily(hcd);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    } else {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      htd.addFamily(hcd);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false,<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      MemStoreLABImpl.CHUNK_SIZE_DEFAULT, 1, 0, null);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    final Configuration walConf = new Configuration(conf);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    FSUtils.setRootDir(walConf, basedir);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    final WALFactory wals = new WALFactory(walConf, null, methodName);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    HRegion region = new HRegion(tableDir, wals.getWAL(info.getEncodedNameAsBytes(),<a name="line.213"></a>
+<span class="sourceLineNo">214</span>            info.getTable().getNamespace()), fs, conf, info, htd, null);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    if (hook == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      store = new HStore(region, hcd, conf);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    } else {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      store = new MyStore(region, hcd, conf, hook, switchToPread);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    return store;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  /**<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * Test we do not lose data if we fail a flush and then close.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * Part of HBase-10466<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   * @throws Exception<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   */<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  @Test<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  public void testFlushSizeAccounting() throws Exception {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    LOG.info("Setting up a faulty file system that cannot write in " +<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      this.name.getMethodName());<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    // Only retry once.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    conf.setInt("hbase.hstore.flush.retries.number", 1);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    User user = User.createUserForTesting(conf, this.name.getMethodName(),<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      new String[]{"foo"});<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    // Inject our faulty LocalFileSystem<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    conf.setClass("fs.file.impl", FaultyFileSystem.class, FileSystem.class);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    user.runAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      @Override<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      public Object run() throws Exception {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        // Make sure it worked (above is sensitive to caching details in hadoop core)<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        FileSystem fs = FileSystem.get(conf);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        Assert.assertEquals(FaultyFileSystem.class, fs.getClass());<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        FaultyFileSystem ffs = (FaultyFileSystem)fs;<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>        // Initialize region<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        init(name.getMethodName(), conf);<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>        MemstoreSize size = store.memstore.getFlushableSize();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        Assert.assertEquals(0, size.getDataSize());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        LOG.info("Adding some data");<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        MemstoreSize kvSize = new MemstoreSize();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        store.add(new KeyValue(row, family, qf1, 1, (byte[])null), kvSize);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        size = store.memstore.getFlushableSize();<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        Assert.assertEquals(kvSize, size);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        // Flush.  Bug #1 from HBASE-10466.  Make sure size calculation on failed flush is right.<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        try {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          LOG.info("Flushing");<a name="line.259"></a>
+<span class="sourceLineNo">260</span>          flushStore(store, id++);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>          Assert.fail("Didn't bubble up IOE!");<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        } catch (IOException ioe) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          Assert.assertTrue(ioe.getMessage().contains("Fault injected"));<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        size = store.memstore.getFlushableSize();<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        Assert.assertEquals(kvSize, size);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        MemstoreSize kvSize2 = new MemstoreSize();<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        store.add(new KeyValue(row, family, qf2, 2, (byte[])null), kvSize2);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        // Even though we add a new kv, we expect the flushable size to be 'same' since we have<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        // not yet cleared the snapshot -- the above flush failed.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        Assert.assertEquals(kvSize, size);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        ffs.fault.set(false);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        flushStore(store, id++);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        size = store.memstore.getFlushableSize();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        // Size should be the foreground kv size.<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        Assert.assertEquals(kvSize2, size);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        flushStore(store, id++);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        size = store.memstore.getFlushableSize();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        assertEquals(0, size.getDataSize());<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        assertEquals(0, size.getHeapSize());<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        return null;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    });<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  }<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>  /**<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * Verify that compression and data block encoding are respected by the<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * Store.createWriterInTmp() method, used on store flush.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   */<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  @Test<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  public void testCreateWriter() throws Exception {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    Configuration conf = HBaseConfiguration.create();<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    FileSystem fs = FileSystem.get(conf);<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    hcd.setCompressionType(Compression.Algorithm.GZ);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    hcd.setDataBlockEncoding(DataBlockEncoding.DIFF);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    init(name.getMethodName(), conf, hcd);<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // Test createWriterInTmp()<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    StoreFileWriter writer = store.createWriterInTmp(4, hcd.getCompressionType(), false, true, false);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    Path path = writer.getPath();<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    writer.append(new KeyValue(row, family, qf1, Bytes.toBytes(1)));<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    writer.append(new KeyValue(row, family, qf2, Bytes.toBytes(2)));<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    writer.append(new KeyValue(row2, family, qf1, Bytes.toBytes(3)));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    writer.append(new KeyValue(row2, family, qf2, Bytes.toBytes(4)));<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    writer.close();<a name="line.307"></a>
 <span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  @Test<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  public void testDeleteExpiredStoreFiles() throws Exception {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    testDeleteExpiredStoreFiles(0);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    testDeleteExpiredStoreFiles(1);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  /*<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * @param minVersions the MIN_VERSIONS for the column family<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   */<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public void testDeleteExpiredStoreFiles(int minVersions) throws Exception {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    int storeFileNum = 4;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    int ttl = 4;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    IncrementingEnvironmentEdge edge = new IncrementingEnvironmentEdge();<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    EnvironmentEdgeManagerTestHelper.injectEdge(edge);<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    Configuration conf = HBaseConfiguration.create();<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    // Enable the expired store file deletion<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    conf.setBoolean("hbase.store.delete.expired.storefile", true);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    // Set the compaction threshold higher to avoid normal compactions.<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY, 5);<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    hcd.setMinVersions(minVersions);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    hcd.setTimeToLive(ttl);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    init(name.getMethodName() + "-" + minVersions, conf, hcd);<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>    long storeTtl = this.store.getScanInfo().getTtl();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    long sleepTime = storeTtl / storeFileNum;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    long timeStamp;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    // There are 4 store files and the max time stamp difference among these<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    // store files will be (this.store.ttl / storeFileNum)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      LOG.info("Adding some data for the store file #" + i);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      timeStamp = EnvironmentEdgeManager.currentTime();<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      this.store.add(new KeyValue(row, family, qf1, timeStamp, (byte[]) null), null);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      this.store.add(new KeyValue(row, family, qf2, timeStamp, (byte[]) null), null);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      this.store.add(new KeyValue(row, family, qf3, timeStamp, (byte[]) null), null);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      flush(i);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      edge.incrementTime(sleepTime);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    }<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>    // Verify the total number of store files<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    Assert.assertEquals(storeFileNum, this.store.getStorefiles().size());<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>     // Each call will find one expired store file and delete it before compaction happens.<a name="line.353"></a>
-<span class="sourceLineNo">354</span>     // There will be no compaction due to threshold above. Last file will not be replaced.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    for (int i = 1; i &lt;= storeFileNum - 1; i++) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      // verify the expired store file.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      assertNull(this.store.requestCompaction());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      // Ensure i files are gone.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      if (minVersions == 0) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        assertEquals(storeFileNum - i, sfs.size());<a name="line.361"></a>
-<span class="sourceLineNo">362</span>        // Ensure only non-expired files remain.<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        for (StoreFile sf : sfs) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>          assertTrue(sf.getReader().getMaxTimestamp() &gt;= (edge.currentTime() - storeTtl));<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      } else {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        assertEquals(storeFileNum, sfs.size());<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      // Let the next store file expired.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      edge.incrementTime(sleepTime);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    }<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    assertNull(this.store.requestCompaction());<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>    Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    // Assert the last expired file is not removed.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    if (minVersions == 0) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      assertEquals(1, sfs.size());<a name="line.377"></a>
+<span class="sourceLineNo">309</span>    // Verify that compression and encoding settings are respected<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    HFile.Reader reader = HFile.createReader(fs, path, new CacheConfig(conf), true, conf);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    Assert.assertEquals(hcd.getCompressionType(), reader.getCompressionAlgorithm());<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    Assert.assertEquals(hcd.getDataBlockEncoding(), reader.getDataBlockEncoding());<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    reader.close();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  @Test<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public void testDeleteExpiredStoreFiles() throws Exception {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    testDeleteExpiredStoreFiles(0);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    testDeleteExpiredStoreFiles(1);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  /*<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   * @param minVersions the MIN_VERSIONS for the column family<a name="line.323"></a>
+<span class="sourceLineNo">324</span>   */<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public void testDeleteExpiredStoreFiles(int minVersions) throws Exception {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    int storeFileNum = 4;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    int ttl = 4;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    IncrementingEnvironmentEdge edge = new IncrementingEnvironmentEdge();<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    EnvironmentEdgeManagerTestHelper.injectEdge(edge);<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>    Configuration conf = HBaseConfiguration.create();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    // Enable the expired store file deletion<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    conf.setBoolean("hbase.store.delete.expired.storefile", true);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    // Set the compaction threshold higher to avoid normal compactions.<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY, 5);<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    hcd.setMinVersions(minVersions);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    hcd.setTimeToLive(ttl);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    init(name.getMethodName() + "-" + minVersions, conf, hcd);<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    long storeTtl = this.store.getScanInfo().getTtl();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    long sleepTime = storeTtl / storeFileNum;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    long timeStamp;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    // There are 4 store files and the max time stamp difference among these<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // store files will be (this.store.ttl / storeFileNum)<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      LOG.info("Adding some data for the store file #" + i);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      timeStamp = EnvironmentEdgeManager.currentTime();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      this.store.add(new KeyValue(row, family, qf1, timeStamp, (byte[]) null), null);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      this.store.add(new KeyValue(row, family, qf2, timeStamp, (byte[]) null), null);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      this.store.add(new KeyValue(row, family, qf3, timeStamp, (byte[]) null), null);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      flush(i);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      edge.incrementTime(sleepTime);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>    // Verify the total number of store files<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    Assert.assertEquals(storeFileNum, this.store.getStorefiles().size());<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>     // Each call will find one expired store file and delete it before compaction happens.<a name="line.360"></a>
+<span class="sourceLineNo">361</span>     // There will be no compaction due to threshold above. Last file will not be replaced.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    for (int i = 1; i &lt;= storeFileNum - 1; i++) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      // verify the expired store file.<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      assertNull(this.store.requestCompaction());<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      // Ensure i files are gone.<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      if (minVersions == 0) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        assertEquals(storeFileNum - i, sfs.size());<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        // Ensure only non-expired files remain.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        for (StoreFile sf : sfs) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>          assertTrue(sf.getReader().getMaxTimestamp() &gt;= (edge.currentTime() - storeTtl));<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        }<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      } else {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        assertEquals(storeFileNum, sfs.size());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      // Let the next store file expired.<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      edge.incrementTime(sleepTime);<a name="line.377"></a>
 <span class="sourceLineNo">378</span>    }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    long ts = sfs.iterator().next().getReader().getMaxTimestamp();<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    assertTrue(ts &lt; (edge.currentTime() - storeTtl));<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    for (StoreFile sf : sfs) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      sf.closeReader(true);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  @Test<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public void testLowestModificationTime() throws Exception {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    Configuration conf = HBaseConfiguration.create();<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    FileSystem fs = FileSystem.get(conf);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    // Initialize region<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    init(name.getMethodName(), conf);<a name="line.392"></a>
+<span class="sourceLineNo">379</span>    assertNull(this.store.requestCompaction());<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>    Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    // Assert the last expired file is not removed.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    if (minVersions == 0) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      assertEquals(1, sfs.size());<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    }<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    long ts = sfs.iterator().next().getReader().getMaxTimestamp();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    assertTrue(ts &lt; (edge.currentTime() - storeTtl));<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>    for (StoreFile sf : sfs) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      sf.closeReader(true);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    }<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  }<a name="line.392"></a>
 <span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    int storeFileNum = 4;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      LOG.info("Adding some data for the store file #"+i);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      this.store.add(new KeyValue(row, family, qf1, i, (byte[])null), null);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      this.store.add(new KeyValue(row, family, qf2, i, (byte[])null), null);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      this.store.add(new KeyValue(row, family, qf3, i, (byte[])null), null);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      flush(i);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    // after flush; check the lowest time stamp<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    long lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    long lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    Assert.assertEquals(lowestTimeStampFromManager,lowestTimeStampFromFS);<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>    // after compact; check the lowest time stamp<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    store.compact(store.requestCompaction(), NoLimitThroughputController.INSTANCE, null);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    Assert.assertEquals(lowestTimeStampFromManager, lowestTimeStampFromFS);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
+<span class="sourceLineNo">394</span>  @Test<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  public void testLowestModificationTime() throws Exception {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    Configuration conf = HBaseConfiguration.create();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    FileSystem fs = FileSystem.get(conf);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Initialize region<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    init(name.getMethodName(), conf);<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    int storeFileNum = 4;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      LOG.info("Adding some data for the store file #"+i);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      this.store.add(new KeyValue(row, family, qf1, i, (byte[])null), null);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      this.store.add(new KeyValue(row, family, qf2, i, (byte[])null), null);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      this.store.add(new KeyValue(row, family, qf3, i, (byte[])null), null);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      flush(i);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    // after flush; check the lowest time stamp<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    long lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    long lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    Assert.assertEquals(lowestTimeStampFromManager,lowestTimeStampFromFS);<a name="line.412"></a>
 <span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  private static long getLowestTimeStampFromFS(FileSystem fs,<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      final Collection&lt;StoreFile&gt; candidates) throws IOException {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    long minTs = Long.MAX_VALUE;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    if (candidates.isEmpty()) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      return minTs;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    }<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    Path[] p = new Path[candidates.size()];<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    int i = 0;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    for (StoreFile sf : candidates) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      p[i] = sf.getPath();<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      ++i;<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    }<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>    FileStatus[] stats = fs.listStatus(p);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    if (stats == null || stats.length == 0) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      return minTs;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    for (FileStatus s : stats) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      minTs = Math.min(minTs, s.getModificationTime());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    return minTs;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  // Get tests<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>  private static final int BLOCKSIZE_SMALL = 8192;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Test for hbase-1686.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @throws IOException<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  @Test<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  public void testEmptyStoreFile() throws IOException {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    init(this.name.getMethodName());<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    // Write a store file.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    flush(1);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    // Now put in place an empty store file.  Its a little tricky.  Have to<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // do manually with hacked in sequence id.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    StoreFile f = this.store.getStorefiles().iterator().next();<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    Path storedir = f.getPath().getParent();<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    long seqid = f.getMaxSequenceId();<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    Configuration c = HBaseConfiguration.create();<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    FileSystem fs = FileSystem.get(c);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    HFileContext meta = new HFileContextBuilder().withBlockSize(BLOCKSIZE_SMALL).build();<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    StoreFileWriter w = new StoreFileWriter.Builder(c, new CacheConfig(c),<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        fs)<a name="line.462"></a>
-<span class="sourceLineNo">463</span>            .withOutputDir(storedir)<a name="line.463"></a>
-<span class="sourceLineNo">464</span>            .withFileContext(meta)<a name="line.464"></a>
-<span class="sourceLineNo">465</span>            .build();<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    w.appendMetadata(seqid + 1, false);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    w.close();<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    this.store.close();<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    // Reopen it... should pick up two files<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    this.store = new HStore(this.store.getHRegion(), this.store.getFamily(), c);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    Assert.assertEquals(2, this.store.getStorefilesCount());<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        get.getRow(),<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        qualifiers);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    Assert.assertEquals(1, result.size());<a name="line.476"></a>
-<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>  /**<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * Getting data from memstore only<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @throws IOException<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   */<a name="line.482"></a>
-<span class="sourceLineNo">483</span>  @Test<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  public void testGet_FromMemStoreOnly() throws IOException {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    init(this.name.getMethodName());<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>    //Put data in memstore<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    this.store.add(new KeyValue(row, family, qf3, 1, (byte[])null), null);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    this.store.add(new KeyValue(row, family, qf4, 1, (byte[])null), null);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    this.store.add(new KeyValue(row, family, qf5, 1, (byte[])null), null);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    this.store.add(new KeyValue(row, family, qf6, 1, (byte[])null), null);<a name="line.493"></a>
-<span class="sourceLineNo">494</span><a name="line.494"></a>
-<span class="sourceLineNo">495</span>    //Get<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        get.getRow(), qualifiers);<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    //Compare<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    assertCheck();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  }<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>   * Getting data from files only<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @throws IOException<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   */<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  @Test<a name="line.507"></a>
-<span class="sourceLineNo">508</span>  public void testGet_FromFilesOnly() throws IOException {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    init(this.name.getMethodName());<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>    //Put data in memstore<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    //flush<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    flush(1);<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>    //Add more data<a na

<TRUNCATED>

[34/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/regionserver/Store.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/Store.html b/devapidocs/org/apache/hadoop/hbase/regionserver/Store.html
index 27bfdcd..f606994 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/Store.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/Store.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":38,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6,"i18":6,"i19":6,"i20":6,"i21":6,"i22":6,"i23":6,"i24":6,"i25":6,"i26":38,"i27":6,"i28":6,"i29":6,"i30":6,"i31":6,"i32":6,"i33":6,"i34":6,"i35":6,"i36":6,"i37":38,"i38":6,"i39":6,"i40":6,"i41":6,"i42":6,"i43":6,"i44":18,"i45":6,"i46":18,"i47":6,"i48":6,"i49":6,"i50":6,"i51":6,"i52":6,"i53":38,"i54":6,"i55":6,"i56":6,"i57":6,"i58":6,"i59":6,"i60":6,"i61":6,"i62":6,"i63":6,"i64":6,"i65":6,"i66":6,"i67":6,"i68":6,"i69":6,"i70":6,"i71":6,"i72":38,"i73":6,"i74":6,"i75":6,"i76":6};
+var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":38,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6,"i18":6,"i19":6,"i20":6,"i21":6,"i22":6,"i23":6,"i24":6,"i25":6,"i26":6,"i27":6,"i28":38,"i29":6,"i30":6,"i31":6,"i32":6,"i33":6,"i34":6,"i35":6,"i36":6,"i37":6,"i38":6,"i39":38,"i40":6,"i41":6,"i42":6,"i43":6,"i44":6,"i45":6,"i46":18,"i47":6,"i48":18,"i49":6,"i50":6,"i51":6,"i52":6,"i53":6,"i54":6,"i55":38,"i56":6,"i57":6,"i58":6,"i59":6,"i60":6,"i61":6,"i62":6,"i63":6,"i64":6,"i65":6,"i66":6,"i67":6,"i68":6,"i69":6,"i70":6,"i71":6,"i72":6,"i73":6,"i74":6,"i75":38,"i76":6,"i77":6,"i78":6,"i79":6};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],16:["t5","Default Methods"],32:["t6","Deprecated Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -258,42 +258,50 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getCompactedCellsSize--">getCompactedCellsSize</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i18" class="altColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getCompactedFiles--">getCompactedFiles</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i19" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getCompactedFilesCount--">getCompactedFilesCount</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i20" class="altColor">
 <td class="colFirst"><code>double</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getCompactionPressure--">getCompactionPressure</a></span>()</code>
 <div class="block">This value can represent the degree of emergency of compaction for this store.</div>
 </td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionProgress.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionProgress</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getCompactionProgress--">getCompactionProgress</a></span>()</code>
 <div class="block">getter for CompactionProgress object</div>
 </td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getCompactPriority--">getCompactPriority</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="class in org.apache.hadoop.hbase">CellComparator</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getComparator--">getComparator</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i24" 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/Store.html#getCoprocessorHost--">getCoprocessorHost</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i23" class="rowColor">
+<tr id="i25" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileDataBlockEncoder</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getDataBlockEncoder--">getDataBlockEncoder</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i24" class="altColor">
+<tr id="i26" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/HColumnDescriptor.html" title="class in org.apache.hadoop.hbase">HColumnDescriptor</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getFamily--">getFamily</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i25" class="rowColor">
+<tr id="i27" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.fs.FileSystem</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getFileSystem--">getFileSystem</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i26" class="altColor">
+<tr id="i28" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getFlushableSize--">getFlushableSize</a></span>()</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -304,47 +312,47 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 </div>
 </td>
 </tr>
-<tr id="i27" class="rowColor">
+<tr id="i29" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getFlushedCellsCount--">getFlushedCellsCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i28" class="altColor">
+<tr id="i30" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getFlushedCellsSize--">getFlushedCellsSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i29" class="rowColor">
+<tr id="i31" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getFlushedOutputFileSize--">getFlushedOutputFileSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i30" class="altColor">
+<tr id="i32" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getHFilesSize--">getHFilesSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i31" class="rowColor">
+<tr id="i33" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getLastCompactSize--">getLastCompactSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i32" class="altColor">
+<tr id="i34" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getMajorCompactedCellsCount--">getMajorCompactedCellsCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i33" class="rowColor">
+<tr id="i35" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getMajorCompactedCellsSize--">getMajorCompactedCellsSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i34" class="altColor">
+<tr id="i36" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getMaxMemstoreTS--">getMaxMemstoreTS</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i35" class="rowColor">
+<tr id="i37" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getMaxSequenceId--">getMaxSequenceId</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i36" class="altColor">
+<tr id="i38" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getMaxStoreFileAge--">getMaxStoreFileAge</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i37" class="rowColor">
+<tr id="i39" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getMemStoreSize--">getMemStoreSize</a></span>()</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -355,27 +363,27 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 </div>
 </td>
 </tr>
-<tr id="i38" class="altColor">
+<tr id="i40" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getMinStoreFileAge--">getMinStoreFileAge</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i39" class="rowColor">
+<tr id="i41" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getNumHFiles--">getNumHFiles</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i40" class="altColor">
+<tr id="i42" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getNumReferenceFiles--">getNumReferenceFiles</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i41" class="rowColor">
+<tr id="i43" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getRegionInfo--">getRegionInfo</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i42" class="altColor">
+<tr id="i44" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getScanInfo--">getScanInfo</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i43" class="rowColor">
+<tr id="i45" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getScanner-org.apache.hadoop.hbase.client.Scan-java.util.NavigableSet-long-">getScanner</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
           <a href="http://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;byte[]&gt;&nbsp;targetCols,
@@ -383,7 +391,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <div class="block">Return a scanner for both the memstore and the HStore files.</div>
 </td>
 </tr>
-<tr id="i44" class="altColor">
+<tr id="i46" class="altColor">
 <td class="colFirst"><code>default <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getScanners-boolean-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-byte:A-long-">getScanners</a></span>(boolean&nbsp;cacheBlocks,
            boolean&nbsp;isGet,
@@ -396,7 +404,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <div class="block">Get all scanners with no filtering based on TTL (that happens further down the line).</div>
 </td>
 </tr>
-<tr id="i45" class="rowColor">
+<tr id="i47" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getScanners-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-">getScanners</a></span>(boolean&nbsp;cacheBlocks,
            boolean&nbsp;usePread,
@@ -410,7 +418,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <div class="block">Get all scanners with no filtering based on TTL (that happens further down the line).</div>
 </td>
 </tr>
-<tr id="i46" class="altColor">
+<tr id="i48" class="altColor">
 <td class="colFirst"><code>default <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getScanners-java.util.List-boolean-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-byte:A-long-boolean-">getScanners</a></span>(<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;files,
            boolean&nbsp;cacheBlocks,
@@ -426,7 +434,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
  (that happens further down the line).</div>
 </td>
 </tr>
-<tr id="i47" class="rowColor">
+<tr id="i49" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getScanners-java.util.List-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-boolean-">getScanners</a></span>(<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;files,
            boolean&nbsp;cacheBlocks,
@@ -443,27 +451,27 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
  (that happens further down the line).</div>
 </td>
 </tr>
-<tr id="i48" class="altColor">
+<tr id="i50" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getSize--">getSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i49" class="rowColor">
+<tr id="i51" 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/Store.html#getSizeOfMemStore--">getSizeOfMemStore</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i50" class="altColor">
+<tr id="i52" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemstoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemstoreSize</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getSizeOfSnapshot--">getSizeOfSnapshot</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i51" class="rowColor">
+<tr id="i53" 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/Store.html#getSizeToFlush--">getSizeToFlush</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i52" class="altColor">
+<tr id="i54" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getSmallestReadPoint--">getSmallestReadPoint</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i53" class="rowColor">
+<tr id="i55" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getSnapshotSize--">getSnapshotSize</a></span>()</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -474,43 +482,43 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 </div>
 </td>
 </tr>
-<tr id="i54" class="altColor">
+<tr id="i56" class="altColor">
 <td class="colFirst"><code>byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getSplitPoint--">getSplitPoint</a></span>()</code>
 <div class="block">Determines if Store should be split</div>
 </td>
 </tr>
-<tr id="i55" class="rowColor">
+<tr id="i57" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getStorefiles--">getStorefiles</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i56" class="altColor">
+<tr id="i58" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getStorefilesCount--">getStorefilesCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i57" class="rowColor">
+<tr id="i59" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getStorefilesIndexSize--">getStorefilesIndexSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i58" class="altColor">
+<tr id="i60" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getStorefilesSize--">getStorefilesSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i59" class="rowColor">
+<tr id="i61" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getStoreSizeUncompressed--">getStoreSizeUncompressed</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i60" class="altColor">
+<tr id="i62" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getTableName--">getTableName</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i61" class="rowColor">
+<tr id="i63" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getTotalStaticBloomSize--">getTotalStaticBloomSize</a></span>()</code>
 <div class="block">Returns the total byte size of all Bloom filter bit arrays.</div>
 </td>
 </tr>
-<tr id="i62" class="altColor">
+<tr id="i64" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getTotalStaticIndexSize--">getTotalStaticIndexSize</a></span>()</code>
 <div class="block">Returns the total size of all index blocks in the data block indexes, including the root level,
@@ -518,33 +526,49 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
  single-level indexes.</div>
 </td>
 </tr>
-<tr id="i63" class="rowColor">
+<tr id="i65" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#hasReferences--">hasReferences</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i64" class="altColor">
+<tr id="i66" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#hasTooManyStoreFiles--">hasTooManyStoreFiles</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i65" class="rowColor">
+<tr id="i67" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#isMajorCompaction--">isMajorCompaction</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i66" class="altColor">
+<tr id="i68" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#isPrimaryReplicaStore--">isPrimaryReplicaStore</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i67" class="rowColor">
+<tr id="i69" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#isSloppyMemstore--">isSloppyMemstore</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i68" class="altColor">
+<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/Store.html#needsCompaction--">needsCompaction</a></span>()</code>
 <div class="block">See if there's too much store files in this store</div>
 </td>
 </tr>
-<tr id="i69" class="rowColor">
+<tr id="i71" class="rowColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#recreateScanners-java.util.List-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-boolean-">recreateScanners</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;currentFileScanners,
+                boolean&nbsp;cacheBlocks,
+                boolean&nbsp;usePread,
+                boolean&nbsp;isCompaction,
+                <a href="../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">ScanQueryMatcher</a>&nbsp;matcher,
+                byte[]&nbsp;startRow,
+                boolean&nbsp;includeStartRow,
+                byte[]&nbsp;stopRow,
+                boolean&nbsp;includeStopRow,
+                long&nbsp;readPt,
+                boolean&nbsp;includeMemstoreScanner)</code>
+<div class="block">Recreates the scanners on the current list of active store file scanners</div>
+</td>
+</tr>
+<tr id="i72" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#refreshStoreFiles--">refreshStoreFiles</a></span>()</code>
 <div class="block">Checks the underlying store files, and opens the files that  have not
@@ -552,17 +576,17 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
  available.</div>
 </td>
 </tr>
-<tr id="i70" class="altColor">
+<tr id="i73" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#refreshStoreFiles-java.util.Collection-">refreshStoreFiles</a></span>(<a href="http://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="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;newFiles)</code>
 <div class="block">Replaces the store files that the store has with the given files.</div>
 </td>
 </tr>
-<tr id="i71" class="rowColor">
+<tr id="i74" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#requestCompaction--">requestCompaction</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i72" class="altColor">
+<tr id="i75" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#requestCompaction-int-org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest-">requestCompaction</a></span>(int&nbsp;priority,
                  <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionRequest</a>&nbsp;baseRequest)</code>
@@ -571,23 +595,23 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 </div>
 </td>
 </tr>
-<tr id="i73" class="rowColor">
+<tr id="i76" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#requestCompaction-int-org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest-org.apache.hadoop.hbase.security.User-">requestCompaction</a></span>(int&nbsp;priority,
                  <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionRequest</a>&nbsp;baseRequest,
                  <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
 </tr>
-<tr id="i74" class="altColor">
+<tr id="i77" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#throttleCompaction-long-">throttleCompaction</a></span>(long&nbsp;compactionSize)</code>&nbsp;</td>
 </tr>
-<tr id="i75" class="rowColor">
+<tr id="i78" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#timeOfOldestEdit--">timeOfOldestEdit</a></span>()</code>
 <div class="block">When was the last edit done in the memstore</div>
 </td>
 </tr>
-<tr id="i76" class="altColor">
+<tr id="i79" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#triggerMajorCompaction--">triggerMajorCompaction</a></span>()</code>&nbsp;</td>
 </tr>
@@ -686,13 +710,22 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.62">getStorefiles</a>()</pre>
 </li>
 </ul>
+<a name="getCompactedFiles--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getCompactedFiles</h4>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.64">getCompactedFiles</a>()</pre>
+</li>
+</ul>
 <a name="close--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.70">close</a>()
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.72">close</a>()
                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Close all the readers We don't need to worry about subsequent requests because the Region
  holds a write lock that will prevent any more reads or writes.</div>
@@ -710,7 +743,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanner</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.80">getScanner</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="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.82">getScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                            <a href="http://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;byte[]&gt;&nbsp;targetCols,
                            long&nbsp;readPt)
                     throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -733,7 +766,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanners</h4>
-<pre>default&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.94">getScanners</a>(boolean&nbsp;cacheBlocks,
+<pre>default&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.96">getScanners</a>(boolean&nbsp;cacheBlocks,
                                           boolean&nbsp;isGet,
                                           boolean&nbsp;usePread,
                                           boolean&nbsp;isCompaction,
@@ -765,7 +798,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanners</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.114">getScanners</a>(boolean&nbsp;cacheBlocks,
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.116">getScanners</a>(boolean&nbsp;cacheBlocks,
                                   boolean&nbsp;usePread,
                                   boolean&nbsp;isCompaction,
                                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">ScanQueryMatcher</a>&nbsp;matcher,
@@ -794,13 +827,52 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 </dl>
 </li>
 </ul>
+<a name="recreateScanners-java.util.List-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>recreateScanners</h4>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.136">recreateScanners</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;currentFileScanners,
+                                       boolean&nbsp;cacheBlocks,
+                                       boolean&nbsp;usePread,
+                                       boolean&nbsp;isCompaction,
+                                       <a href="../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">ScanQueryMatcher</a>&nbsp;matcher,
+                                       byte[]&nbsp;startRow,
+                                       boolean&nbsp;includeStartRow,
+                                       byte[]&nbsp;stopRow,
+                                       boolean&nbsp;includeStopRow,
+                                       long&nbsp;readPt,
+                                       boolean&nbsp;includeMemstoreScanner)
+                                throws <a href="http://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">Recreates the scanners on the current list of active store file scanners</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>currentFileScanners</code> - the current set of active store file scanners</dd>
+<dd><code>cacheBlocks</code> - cache the blocks or not</dd>
+<dd><code>usePread</code> - use pread or not</dd>
+<dd><code>isCompaction</code> - is the scanner for compaction</dd>
+<dd><code>matcher</code> - the scan query matcher</dd>
+<dd><code>startRow</code> - the scan's start row</dd>
+<dd><code>includeStartRow</code> - should the scan include the start row</dd>
+<dd><code>stopRow</code> - the scan's stop row</dd>
+<dd><code>includeStopRow</code> - should the scan include the stop row</dd>
+<dd><code>readPt</code> - the read point of the current scane</dd>
+<dd><code>includeMemstoreScanner</code> - whether the current scanner should include memstorescanner</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>list of scanners recreated on the current Scanners</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="http://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="getScanners-java.util.List-boolean-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-byte:A-long-boolean-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanners</h4>
-<pre>default&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.132">getScanners</a>(<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;files,
+<pre>default&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.155">getScanners</a>(<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;files,
                                           boolean&nbsp;cacheBlocks,
                                           boolean&nbsp;isGet,
                                           boolean&nbsp;usePread,
@@ -837,7 +909,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanners</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.156">getScanners</a>(<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;files,
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.179">getScanners</a>(<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;files,
                                   boolean&nbsp;cacheBlocks,
                                   boolean&nbsp;usePread,
                                   boolean&nbsp;isCompaction,
@@ -877,7 +949,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanInfo</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.161">getScanInfo</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.184">getScanInfo</a>()</pre>
 </li>
 </ul>
 <a name="timeOfOldestEdit--">
@@ -886,7 +958,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>timeOfOldestEdit</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.166">timeOfOldestEdit</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.189">timeOfOldestEdit</a>()</pre>
 <div class="block">When was the last edit done in the memstore</div>
 </li>
 </ul>
@@ -896,7 +968,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>getFileSystem</h4>
-<pre>org.apache.hadoop.fs.FileSystem&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.168">getFileSystem</a>()</pre>
+<pre>org.apache.hadoop.fs.FileSystem&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.191">getFileSystem</a>()</pre>
 </li>
 </ul>
 <a name="createWriterInTmp-long-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-boolean-boolean-boolean-">
@@ -905,7 +977,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>createWriterInTmp</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.178">createWriterInTmp</a>(long&nbsp;maxKeyCount,
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.201">createWriterInTmp</a>(long&nbsp;maxKeyCount,
                                   <a href="../../../../../org/apache/hadoop/hbase/io/compress/Compression.Algorithm.html" title="enum in org.apache.hadoop.hbase.io.compress">Compression.Algorithm</a>&nbsp;compression,
                                   boolean&nbsp;isCompaction,
                                   boolean&nbsp;includeMVCCReadpoint,
@@ -930,7 +1002,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>createWriterInTmp</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.194">createWriterInTmp</a>(long&nbsp;maxKeyCount,
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.217">createWriterInTmp</a>(long&nbsp;maxKeyCount,
                                   <a href="../../../../../org/apache/hadoop/hbase/io/compress/Compression.Algorithm.html" title="enum in org.apache.hadoop.hbase.io.compress">Compression.Algorithm</a>&nbsp;compression,
                                   boolean&nbsp;isCompaction,
                                   boolean&nbsp;includeMVCCReadpoint,
@@ -957,7 +1029,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>createWriterInTmp</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.212">createWriterInTmp</a>(long&nbsp;maxKeyCount,
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.235">createWriterInTmp</a>(long&nbsp;maxKeyCount,
                                   <a href="../../../../../org/apache/hadoop/hbase/io/compress/Compression.Algorithm.html" title="enum in org.apache.hadoop.hbase.io.compress">Compression.Algorithm</a>&nbsp;compression,
                                   boolean&nbsp;isCompaction,
                                   boolean&nbsp;includeMVCCReadpoint,
@@ -986,7 +1058,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>throttleCompaction</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.224">throttleCompaction</a>(long&nbsp;compactionSize)</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.247">throttleCompaction</a>(long&nbsp;compactionSize)</pre>
 </li>
 </ul>
 <a name="getCompactionProgress--">
@@ -995,7 +1067,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactionProgress</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionProgress.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionProgress</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.230">getCompactionProgress</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionProgress.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionProgress</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.253">getCompactionProgress</a>()</pre>
 <div class="block">getter for CompactionProgress object</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1009,7 +1081,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>requestCompaction</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.232">requestCompaction</a>()
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.255">requestCompaction</a>()
                              throws <a href="http://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>
@@ -1024,7 +1096,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <li class="blockList">
 <h4>requestCompaction</h4>
 <pre><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.238">requestCompaction</a>(int&nbsp;priority,
+<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.261">requestCompaction</a>(int&nbsp;priority,
                                                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionRequest</a>&nbsp;baseRequest)
                                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">see requestCompaction(int, CompactionRequest, User)</span></div>
@@ -1040,7 +1112,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>requestCompaction</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.241">requestCompaction</a>(int&nbsp;priority,
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.264">requestCompaction</a>(int&nbsp;priority,
                                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionRequest</a>&nbsp;baseRequest,
                                     <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)
                              throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1056,7 +1128,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>cancelRequestedCompaction</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.244">cancelRequestedCompaction</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&nbsp;compaction)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.267">cancelRequestedCompaction</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&nbsp;compaction)</pre>
 </li>
 </ul>
 <a name="compact-org.apache.hadoop.hbase.regionserver.compactions.CompactionContext-org.apache.hadoop.hbase.regionserver.throttle.ThroughputController-">
@@ -1066,7 +1138,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <li class="blockList">
 <h4>compact</h4>
 <pre><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.250">compact</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&nbsp;compaction,
+<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.273">compact</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&nbsp;compaction,
                                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/throttle/ThroughputController.html" title="interface in org.apache.hadoop.hbase.regionserver.throttle">ThroughputController</a>&nbsp;throughputController)
                              throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">see compact(CompactionContext, ThroughputController, User)</span></div>
@@ -1082,7 +1154,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>compact</h4>
-<pre><a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.253">compact</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&nbsp;compaction,
+<pre><a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.276">compact</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&nbsp;compaction,
                         <a href="../../../../../org/apache/hadoop/hbase/regionserver/throttle/ThroughputController.html" title="interface in org.apache.hadoop.hbase.regionserver.throttle">ThroughputController</a>&nbsp;throughputController,
                         <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)
                  throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1098,7 +1170,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>isMajorCompaction</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.259">isMajorCompaction</a>()
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.282">isMajorCompaction</a>()
                    throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1114,7 +1186,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>triggerMajorCompaction</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.261">triggerMajorCompaction</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.284">triggerMajorCompaction</a>()</pre>
 </li>
 </ul>
 <a name="needsCompaction--">
@@ -1123,7 +1195,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>needsCompaction</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.267">needsCompaction</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.290">needsCompaction</a>()</pre>
 <div class="block">See if there's too much store files in this store</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1137,7 +1209,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactPriority</h4>
-<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.269">getCompactPriority</a>()</pre>
+<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.292">getCompactPriority</a>()</pre>
 </li>
 </ul>
 <a name="createFlushContext-long-">
@@ -1146,7 +1218,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>createFlushContext</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFlushContext</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.271">createFlushContext</a>(long&nbsp;cacheFlushId)</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFlushContext</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.294">createFlushContext</a>(long&nbsp;cacheFlushId)</pre>
 </li>
 </ul>
 <a name="canSplit--">
@@ -1155,7 +1227,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>canSplit</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.275">canSplit</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.298">canSplit</a>()</pre>
 </li>
 </ul>
 <a name="getSplitPoint--">
@@ -1164,7 +1236,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>getSplitPoint</h4>
-<pre>byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.281">getSplitPoint</a>()</pre>
+<pre>byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.304">getSplitPoint</a>()</pre>
 <div class="block">Determines if Store should be split</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1178,7 +1250,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>hasReferences</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.289">hasReferences</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.312">hasReferences</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd><tt>true</tt> if the store has any underlying reference files to older HFiles</dd>
@@ -1192,7 +1264,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title=
 <li class="blockList">
 <h4>getMemStoreSize</h4>
 <pre><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.299">getMemStoreSize</a>()</pre>
+long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.322">getMemStoreSize</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Since 2.0 and will be removed in 3.0. Use <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getSizeOfMemStore--"><code>getSizeOfMemStore()</code></a> instead.
  <p>
  Note: When using off heap MSLAB feature, this will not account the cell data bytes size which
@@ -1209,7 +1281,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getSizeOfMemStore</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemstoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemstoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.304">getSizeOfMemStore</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemstoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemstoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.327">getSizeOfMemStore</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The size of this store's memstore.</dd>
@@ -1223,7 +1295,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <li class="blockList">
 <h4>getFlushableSize</h4>
 <pre><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.316">getFlushableSize</a>()</pre>
+long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.339">getFlushableSize</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Since 2.0 and will be removed in 3.0. Use <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getSizeToFlush--"><code>getSizeToFlush()</code></a> instead.
  <p>
  Note: When using off heap MSLAB feature, this will not account the cell data bytes size which
@@ -1242,7 +1314,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getSizeToFlush</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemstoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemstoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.323">getSizeToFlush</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemstoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemstoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.346">getSizeToFlush</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The amount of memory we could flush from this memstore; usually this is equal to
@@ -1258,7 +1330,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <li class="blockList">
 <h4>getSnapshotSize</h4>
 <pre><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.334">getSnapshotSize</a>()</pre>
+long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.357">getSnapshotSize</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Since 2.0 and will be removed in 3.0. Use <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getSizeOfSnapshot--"><code>getSizeOfSnapshot()</code></a> instead.
  <p>
  Note: When using off heap MSLAB feature, this will not account the cell data bytes size which
@@ -1276,7 +1348,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getSizeOfSnapshot</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemstoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemstoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.339">getSizeOfSnapshot</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemstoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemstoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.362">getSizeOfSnapshot</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>size of the memstore snapshot</dd>
@@ -1289,7 +1361,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getFamily</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/HColumnDescriptor.html" title="class in org.apache.hadoop.hbase">HColumnDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.341">getFamily</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/HColumnDescriptor.html" title="class in org.apache.hadoop.hbase">HColumnDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.364">getFamily</a>()</pre>
 </li>
 </ul>
 <a name="getMaxSequenceId--">
@@ -1298,7 +1370,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxSequenceId</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.346">getMaxSequenceId</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.369">getMaxSequenceId</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The maximum sequence id in all store files.</dd>
@@ -1311,7 +1383,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxMemstoreTS</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.351">getMaxMemstoreTS</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.374">getMaxMemstoreTS</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The maximum memstoreTS in all store files.</dd>
@@ -1324,7 +1396,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataBlockEncoder</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileDataBlockEncoder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.356">getDataBlockEncoder</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileDataBlockEncoder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.379">getDataBlockEncoder</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the data block encoder</dd>
@@ -1337,7 +1409,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastCompactSize</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.359">getLastCompactSize</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.382">getLastCompactSize</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>aggregate size of all HStores used in the last compaction</dd>
@@ -1350,7 +1422,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getSize</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.362">getSize</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.385">getSize</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>aggregate size of HStore</dd>
@@ -1363,20 +1435,33 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getStorefilesCount</h4>
-<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.367">getStorefilesCount</a>()</pre>
+<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.390">getStorefilesCount</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Count of store files</dd>
 </dl>
 </li>
 </ul>
+<a name="getCompactedFilesCount--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getCompactedFilesCount</h4>
+<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.395">getCompactedFilesCount</a>()</pre>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>Count of compacted store files</dd>
+</dl>
+</li>
+</ul>
 <a name="getMaxStoreFileAge--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxStoreFileAge</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.372">getMaxStoreFileAge</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.400">getMaxStoreFileAge</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Max age of store files in this store</dd>
@@ -1389,7 +1474,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getMinStoreFileAge</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.377">getMinStoreFileAge</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.405">getMinStoreFileAge</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Min age of store files in this store</dd>
@@ -1402,7 +1487,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getAvgStoreFileAge</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.382">getAvgStoreFileAge</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.410">getAvgStoreFileAge</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Average age of store files in this store, 0 if no store files</dd>
@@ -1415,7 +1500,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumReferenceFiles</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.387">getNumReferenceFiles</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.415">getNumReferenceFiles</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Number of reference files in this store</dd>
@@ -1428,7 +1513,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumHFiles</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.392">getNumHFiles</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.420">getNumHFiles</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Number of HFiles in this store</dd>
@@ -1441,7 +1526,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreSizeUncompressed</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.397">getStoreSizeUncompressed</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.425">getStoreSizeUncompressed</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The size of the store files, in bytes, uncompressed.</dd>
@@ -1454,7 +1539,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getStorefilesSize</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.402">getStorefilesSize</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.430">getStorefilesSize</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The size of the store files, in bytes.</dd>
@@ -1467,7 +1552,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getHFilesSize</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.407">getHFilesSize</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.435">getHFilesSize</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The size of only the store files which are HFiles, in bytes.</dd>
@@ -1480,7 +1565,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getStorefilesIndexSize</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.412">getStorefilesIndexSize</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.440">getStorefilesIndexSize</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The size of the store file indexes, in bytes.</dd>
@@ -1493,7 +1578,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getTotalStaticIndexSize</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.420">getTotalStaticIndexSize</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.448">getTotalStaticIndexSize</a>()</pre>
 <div class="block">Returns the total size of all index blocks in the data block indexes, including the root level,
  intermediate levels, and the leaf level for multi-level indexes, or just the root level for
  single-level indexes.</div>
@@ -1509,7 +1594,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getTotalStaticBloomSize</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.427">getTotalStaticBloomSize</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.455">getTotalStaticBloomSize</a>()</pre>
 <div class="block">Returns the total byte size of all Bloom filter bit arrays. For compound Bloom filters even the
  Bloom blocks currently not loaded into the block cache are counted.</div>
 <dl>
@@ -1524,7 +1609,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getCacheConfig</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.435">getCacheConfig</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.463">getCacheConfig</a>()</pre>
 <div class="block">Used for tests.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1538,7 +1623,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionInfo</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.440">getRegionInfo</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.468">getRegionInfo</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the parent region info hosting this store</dd>
@@ -1551,7 +1636,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getCoprocessorHost</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.html" title="class in org.apache.hadoop.hbase.regionserver">RegionCoprocessorHost</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.442">getCoprocessorHost</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.html" title="class in org.apache.hadoop.hbase.regionserver">RegionCoprocessorHost</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.470">getCoprocessorHost</a>()</pre>
 </li>
 </ul>
 <a name="areWritesEnabled--">
@@ -1560,7 +1645,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>areWritesEnabled</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.444">areWritesEnabled</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.472">areWritesEnabled</a>()</pre>
 </li>
 </ul>
 <a name="getSmallestReadPoint--">
@@ -1569,7 +1654,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getSmallestReadPoint</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.451">getSmallestReadPoint</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.479">getSmallestReadPoint</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The smallest mvcc readPoint across all the scanners in this
@@ -1584,7 +1669,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getColumnFamilyName</h4>
-<pre><a href="http://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/Store.html#line.453">getColumnFamilyName</a>()</pre>
+<pre><a href="http://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/Store.html#line.481">getColumnFamilyName</a>()</pre>
 </li>
 </ul>
 <a name="getTableName--">
@@ -1593,7 +1678,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableName</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.455">getTableName</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.483">getTableName</a>()</pre>
 </li>
 </ul>
 <a name="getFlushedCellsCount--">
@@ -1602,7 +1687,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getFlushedCellsCount</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.460">getFlushedCellsCount</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Store.html#line.488">getFlushedCellsCount</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The number of cells flushed to d

<TRUNCATED>

[09/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyOutputStream.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyOutputStream.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyOutputStream.html
index a1d9f98..9ce2441 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyOutputStream.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyOutputStream.html
@@ -28,1446 +28,1556 @@
 <span class="sourceLineNo">020</span>package org.apache.hadoop.hbase.regionserver;<a name="line.20"></a>
 <span class="sourceLineNo">021</span><a name="line.21"></a>
 <span class="sourceLineNo">022</span>import static org.junit.Assert.assertEquals;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.junit.Assert.assertNull;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.junit.Assert.assertTrue;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import static org.mockito.Matchers.any;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import static org.mockito.Mockito.spy;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import static org.mockito.Mockito.times;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import static org.mockito.Mockito.verify;<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.io.IOException;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.lang.ref.SoftReference;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.security.PrivilegedExceptionAction;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.ArrayList;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.Arrays;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.Collection;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.Collections;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.Iterator;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.List;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.ListIterator;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import java.util.NavigableSet;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import java.util.TreeSet;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import java.util.concurrent.ConcurrentSkipListSet;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.concurrent.CountDownLatch;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import java.util.concurrent.ExecutorService;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import java.util.concurrent.Executors;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import java.util.concurrent.TimeUnit;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.util.function.Consumer;<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.commons.logging.Log;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.commons.logging.LogFactory;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.fs.FileStatus;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FileSystem;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FilterFileSystem;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.LocalFileSystem;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.Path;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.permission.FsPermission;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.Cell;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HConstants;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.TableName;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Get;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.security.User;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.util.Progressable;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.junit.After;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.junit.Assert;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.junit.Before;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.junit.Rule;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.junit.Test;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.junit.experimental.categories.Category;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.junit.rules.TestName;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.mockito.Mockito;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>import com.google.common.collect.Lists;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>/**<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * Test class for the Store<a name="line.110"></a>
-<span class="sourceLineNo">111</span> */<a name="line.111"></a>
-<span class="sourceLineNo">112</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.112"></a>
-<span class="sourceLineNo">113</span>public class TestStore {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private static final Log LOG = LogFactory.getLog(TestStore.class);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  @Rule public TestName name = new TestName();<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  HStore store;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  byte [] table = Bytes.toBytes("table");<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  byte [] family = Bytes.toBytes("family");<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  byte [] row = Bytes.toBytes("row");<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  byte [] row2 = Bytes.toBytes("row2");<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  byte [] qf1 = Bytes.toBytes("qf1");<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  byte [] qf2 = Bytes.toBytes("qf2");<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  byte [] qf3 = Bytes.toBytes("qf3");<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  byte [] qf4 = Bytes.toBytes("qf4");<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  byte [] qf5 = Bytes.toBytes("qf5");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  byte [] qf6 = Bytes.toBytes("qf6");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  NavigableSet&lt;byte[]&gt; qualifiers = new ConcurrentSkipListSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  List&lt;Cell&gt; expected = new ArrayList&lt;&gt;();<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  List&lt;Cell&gt; result = new ArrayList&lt;&gt;();<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  long id = System.currentTimeMillis();<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  Get get = new Get(row);<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private final String DIR = TEST_UTIL.getDataTestDir("TestStore").toString();<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertFalse;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.junit.Assert.assertNull;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.junit.Assert.assertTrue;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import static org.mockito.Matchers.any;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import static org.mockito.Mockito.spy;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import static org.mockito.Mockito.times;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import static org.mockito.Mockito.verify;<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.io.IOException;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.lang.ref.SoftReference;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.security.PrivilegedExceptionAction;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.ArrayList;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.Arrays;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Collection;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.Collections;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.Iterator;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.List;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import java.util.ListIterator;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import java.util.NavigableSet;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import java.util.TreeSet;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import java.util.concurrent.ConcurrentSkipListSet;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.concurrent.CountDownLatch;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.ExecutorService;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import java.util.concurrent.Executors;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import java.util.concurrent.TimeUnit;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import java.util.function.Consumer;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.commons.logging.Log;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.commons.logging.LogFactory;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.conf.Configuration;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FileStatus;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.FileSystem;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.FilterFileSystem;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.LocalFileSystem;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.Path;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.fs.permission.FsPermission;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.Cell;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HConstants;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.TableName;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Get;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.security.User;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.util.Progressable;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.junit.After;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.junit.Assert;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.junit.Before;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.junit.Rule;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.junit.Test;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.junit.experimental.categories.Category;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.junit.rules.TestName;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.mockito.Mockito;<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>import com.google.common.collect.Lists;<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> * Test class for the Store<a name="line.111"></a>
+<span class="sourceLineNo">112</span> */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.113"></a>
+<span class="sourceLineNo">114</span>public class TestStore {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static final Log LOG = LogFactory.getLog(TestStore.class);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  @Rule public TestName name = new TestName();<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  HStore store;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  byte [] table = Bytes.toBytes("table");<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  byte [] family = Bytes.toBytes("family");<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>  byte [] row = Bytes.toBytes("row");<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  byte [] row2 = Bytes.toBytes("row2");<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  byte [] qf1 = Bytes.toBytes("qf1");<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  byte [] qf2 = Bytes.toBytes("qf2");<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  byte [] qf3 = Bytes.toBytes("qf3");<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  byte [] qf4 = Bytes.toBytes("qf4");<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  byte [] qf5 = Bytes.toBytes("qf5");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  byte [] qf6 = Bytes.toBytes("qf6");<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  NavigableSet&lt;byte[]&gt; qualifiers = new ConcurrentSkipListSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  List&lt;Cell&gt; expected = new ArrayList&lt;&gt;();<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  List&lt;Cell&gt; result = new ArrayList&lt;&gt;();<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  long id = System.currentTimeMillis();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  Get get = new Get(row);<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private final String DIR = TEST_UTIL.getDataTestDir("TestStore").toString();<a name="line.140"></a>
 <span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  /**<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * Setup<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * @throws IOException<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  @Before<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  public void setUp() throws IOException {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    qualifiers.add(qf1);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    qualifiers.add(qf3);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    qualifiers.add(qf5);<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>    Iterator&lt;byte[]&gt; iter = qualifiers.iterator();<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    while(iter.hasNext()){<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      byte [] next = iter.next();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      expected.add(new KeyValue(row, family, next, 1, (byte[])null));<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      get.addColumn(family, next);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>  private void init(String methodName) throws IOException {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    init(methodName, TEST_UTIL.getConfiguration());<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  private void init(String methodName, Configuration conf)<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  throws IOException {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    // some of the tests write 4 versions and then flush<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    // (with HBASE-4241, lower versions are collected on flush)<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    hcd.setMaxVersions(4);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    init(methodName, conf, hcd);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  private void init(String methodName, Configuration conf,<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      HColumnDescriptor hcd) throws IOException {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(table));<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    init(methodName, conf, htd, hcd);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  }<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      HColumnDescriptor hcd) throws IOException {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    return init(methodName, conf, htd, hcd, null);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  @SuppressWarnings("deprecation")<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      HColumnDescriptor hcd, MyScannerHook hook) throws IOException {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    //Setting up a Store<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    Path basedir = new Path(DIR+methodName);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    Path tableDir = FSUtils.getTableDir(basedir, htd.getTableName());<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    final Path logdir = new Path(basedir, AbstractFSWALProvider.getWALDirectoryName(methodName));<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>    FileSystem fs = FileSystem.get(conf);<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>    fs.delete(logdir, true);<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>    if (htd.hasFamily(hcd.getName())) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      htd.modifyFamily(hcd);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    } else {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      htd.addFamily(hcd);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false, MemStoreLABImpl.CHUNK_SIZE_DEFAULT, 1, 0, null);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    final Configuration walConf = new Configuration(conf);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    FSUtils.setRootDir(walConf, basedir);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    final WALFactory wals = new WALFactory(walConf, null, methodName);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    HRegion region = new HRegion(tableDir, wals.getWAL(info.getEncodedNameAsBytes(),<a name="line.206"></a>
-<span class="sourceLineNo">207</span>            info.getTable().getNamespace()), fs, conf, info, htd, null);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    if (hook == null) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      store = new HStore(region, hcd, conf);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    } else {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      store = new MyStore(region, hcd, conf, hook);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    return store;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  }<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  /**<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * Test we do not lose data if we fail a flush and then close.<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * Part of HBase-10466<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * @throws Exception<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   */<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  @Test<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  public void testFlushSizeAccounting() throws Exception {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    LOG.info("Setting up a faulty file system that cannot write in " +<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      this.name.getMethodName());<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    // Only retry once.<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    conf.setInt("hbase.hstore.flush.retries.number", 1);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    User user = User.createUserForTesting(conf, this.name.getMethodName(),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      new String[]{"foo"});<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // Inject our faulty LocalFileSystem<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    conf.setClass("fs.file.impl", FaultyFileSystem.class, FileSystem.class);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    user.runAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      public Object run() throws Exception {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        // Make sure it worked (above is sensitive to caching details in hadoop core)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        FileSystem fs = FileSystem.get(conf);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        Assert.assertEquals(FaultyFileSystem.class, fs.getClass());<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        FaultyFileSystem ffs = (FaultyFileSystem)fs;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>        // Initialize region<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        init(name.getMethodName(), conf);<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span>        MemstoreSize size = store.memstore.getFlushableSize();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        Assert.assertEquals(0, size.getDataSize());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        LOG.info("Adding some data");<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        MemstoreSize kvSize = new MemstoreSize();<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        store.add(new KeyValue(row, family, qf1, 1, (byte[])null), kvSize);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        size = store.memstore.getFlushableSize();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        Assert.assertEquals(kvSize, size);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        // Flush.  Bug #1 from HBASE-10466.  Make sure size calculation on failed flush is right.<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        try {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          LOG.info("Flushing");<a name="line.252"></a>
-<span class="sourceLineNo">253</span>          flushStore(store, id++);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          Assert.fail("Didn't bubble up IOE!");<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        } catch (IOException ioe) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>          Assert.assertTrue(ioe.getMessage().contains("Fault injected"));<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        size = store.memstore.getFlushableSize();<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        Assert.assertEquals(kvSize, size);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        MemstoreSize kvSize2 = new MemstoreSize();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        store.add(new KeyValue(row, family, qf2, 2, (byte[])null), kvSize2);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        // Even though we add a new kv, we expect the flushable size to be 'same' since we have<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        // not yet cleared the snapshot -- the above flush failed.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        Assert.assertEquals(kvSize, size);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        ffs.fault.set(false);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        flushStore(store, id++);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        size = store.memstore.getFlushableSize();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        // Size should be the foreground kv size.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        Assert.assertEquals(kvSize2, size);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        flushStore(store, id++);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        size = store.memstore.getFlushableSize();<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        assertEquals(0, size.getDataSize());<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        assertEquals(0, size.getHeapSize());<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        return null;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    });<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  }<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  /**<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   * Verify that compression and data block encoding are respected by the<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * Store.createWriterInTmp() method, used on store flush.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   */<a name="line.282"></a>
-<span class="sourceLineNo">283</span>  @Test<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  public void testCreateWriter() throws Exception {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    Configuration conf = HBaseConfiguration.create();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    FileSystem fs = FileSystem.get(conf);<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    hcd.setCompressionType(Compression.Algorithm.GZ);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    hcd.setDataBlockEncoding(DataBlockEncoding.DIFF);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    init(name.getMethodName(), conf, hcd);<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>    // Test createWriterInTmp()<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    StoreFileWriter writer = store.createWriterInTmp(4, hcd.getCompressionType(), false, true, false);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    Path path = writer.getPath();<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    writer.append(new KeyValue(row, family, qf1, Bytes.toBytes(1)));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    writer.append(new KeyValue(row, family, qf2, Bytes.toBytes(2)));<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    writer.append(new KeyValue(row2, family, qf1, Bytes.toBytes(3)));<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    writer.append(new KeyValue(row2, family, qf2, Bytes.toBytes(4)));<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    writer.close();<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>    // Verify that compression and encoding settings are respected<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    HFile.Reader reader = HFile.createReader(fs, path, new CacheConfig(conf), true, conf);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    Assert.assertEquals(hcd.getCompressionType(), reader.getCompressionAlgorithm());<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    Assert.assertEquals(hcd.getDataBlockEncoding(), reader.getDataBlockEncoding());<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    reader.close();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  /**<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * Setup<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * @throws IOException<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   */<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  @Before<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  public void setUp() throws IOException {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    qualifiers.add(qf1);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    qualifiers.add(qf3);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    qualifiers.add(qf5);<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    Iterator&lt;byte[]&gt; iter = qualifiers.iterator();<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    while(iter.hasNext()){<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      byte [] next = iter.next();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      expected.add(new KeyValue(row, family, next, 1, (byte[])null));<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      get.addColumn(family, next);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>  private void init(String methodName) throws IOException {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    init(methodName, TEST_UTIL.getConfiguration());<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  private Store init(String methodName, Configuration conf)<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  throws IOException {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    // some of the tests write 4 versions and then flush<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    // (with HBASE-4241, lower versions are collected on flush)<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    hcd.setMaxVersions(4);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    return init(methodName, conf, hcd);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>  private Store init(String methodName, Configuration conf,<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      HColumnDescriptor hcd) throws IOException {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(table));<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    return init(methodName, conf, htd, hcd);<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>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      HColumnDescriptor hcd) throws IOException {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    return init(methodName, conf, htd, hcd, null);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @SuppressWarnings("deprecation")<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      HColumnDescriptor hcd, MyScannerHook hook) throws IOException {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    return init(methodName, conf, htd, hcd, hook, false);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  @SuppressWarnings("deprecation")<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      HColumnDescriptor hcd, MyScannerHook hook, boolean switchToPread) throws IOException {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    //Setting up a Store<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    Path basedir = new Path(DIR+methodName);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    Path tableDir = FSUtils.getTableDir(basedir, htd.getTableName());<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    final Path logdir = new Path(basedir, AbstractFSWALProvider.getWALDirectoryName(methodName));<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>    FileSystem fs = FileSystem.get(conf);<a name="line.198"></a>
+<span class="sourceLineNo">199</span><a name="line.199"></a>
+<span class="sourceLineNo">200</span>    fs.delete(logdir, true);<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    if (htd.hasFamily(hcd.getName())) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      htd.modifyFamily(hcd);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    } else {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      htd.addFamily(hcd);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false,<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      MemStoreLABImpl.CHUNK_SIZE_DEFAULT, 1, 0, null);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    final Configuration walConf = new Configuration(conf);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    FSUtils.setRootDir(walConf, basedir);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    final WALFactory wals = new WALFactory(walConf, null, methodName);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    HRegion region = new HRegion(tableDir, wals.getWAL(info.getEncodedNameAsBytes(),<a name="line.213"></a>
+<span class="sourceLineNo">214</span>            info.getTable().getNamespace()), fs, conf, info, htd, null);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    if (hook == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      store = new HStore(region, hcd, conf);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    } else {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      store = new MyStore(region, hcd, conf, hook, switchToPread);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    return store;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  /**<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * Test we do not lose data if we fail a flush and then close.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * Part of HBase-10466<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   * @throws Exception<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   */<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  @Test<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  public void testFlushSizeAccounting() throws Exception {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    LOG.info("Setting up a faulty file system that cannot write in " +<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      this.name.getMethodName());<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    // Only retry once.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    conf.setInt("hbase.hstore.flush.retries.number", 1);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    User user = User.createUserForTesting(conf, this.name.getMethodName(),<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      new String[]{"foo"});<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    // Inject our faulty LocalFileSystem<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    conf.setClass("fs.file.impl", FaultyFileSystem.class, FileSystem.class);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    user.runAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      @Override<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      public Object run() throws Exception {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        // Make sure it worked (above is sensitive to caching details in hadoop core)<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        FileSystem fs = FileSystem.get(conf);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        Assert.assertEquals(FaultyFileSystem.class, fs.getClass());<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        FaultyFileSystem ffs = (FaultyFileSystem)fs;<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>        // Initialize region<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        init(name.getMethodName(), conf);<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>        MemstoreSize size = store.memstore.getFlushableSize();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        Assert.assertEquals(0, size.getDataSize());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        LOG.info("Adding some data");<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        MemstoreSize kvSize = new MemstoreSize();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        store.add(new KeyValue(row, family, qf1, 1, (byte[])null), kvSize);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        size = store.memstore.getFlushableSize();<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        Assert.assertEquals(kvSize, size);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        // Flush.  Bug #1 from HBASE-10466.  Make sure size calculation on failed flush is right.<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        try {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          LOG.info("Flushing");<a name="line.259"></a>
+<span class="sourceLineNo">260</span>          flushStore(store, id++);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>          Assert.fail("Didn't bubble up IOE!");<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        } catch (IOException ioe) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          Assert.assertTrue(ioe.getMessage().contains("Fault injected"));<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        size = store.memstore.getFlushableSize();<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        Assert.assertEquals(kvSize, size);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        MemstoreSize kvSize2 = new MemstoreSize();<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        store.add(new KeyValue(row, family, qf2, 2, (byte[])null), kvSize2);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        // Even though we add a new kv, we expect the flushable size to be 'same' since we have<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        // not yet cleared the snapshot -- the above flush failed.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        Assert.assertEquals(kvSize, size);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        ffs.fault.set(false);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        flushStore(store, id++);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        size = store.memstore.getFlushableSize();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        // Size should be the foreground kv size.<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        Assert.assertEquals(kvSize2, size);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        flushStore(store, id++);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        size = store.memstore.getFlushableSize();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        assertEquals(0, size.getDataSize());<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        assertEquals(0, size.getHeapSize());<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        return null;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    });<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  }<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>  /**<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * Verify that compression and data block encoding are respected by the<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * Store.createWriterInTmp() method, used on store flush.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   */<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  @Test<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  public void testCreateWriter() throws Exception {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    Configuration conf = HBaseConfiguration.create();<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    FileSystem fs = FileSystem.get(conf);<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    hcd.setCompressionType(Compression.Algorithm.GZ);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    hcd.setDataBlockEncoding(DataBlockEncoding.DIFF);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    init(name.getMethodName(), conf, hcd);<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // Test createWriterInTmp()<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    StoreFileWriter writer = store.createWriterInTmp(4, hcd.getCompressionType(), false, true, false);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    Path path = writer.getPath();<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    writer.append(new KeyValue(row, family, qf1, Bytes.toBytes(1)));<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    writer.append(new KeyValue(row, family, qf2, Bytes.toBytes(2)));<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    writer.append(new KeyValue(row2, family, qf1, Bytes.toBytes(3)));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    writer.append(new KeyValue(row2, family, qf2, Bytes.toBytes(4)));<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    writer.close();<a name="line.307"></a>
 <span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  @Test<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  public void testDeleteExpiredStoreFiles() throws Exception {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    testDeleteExpiredStoreFiles(0);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    testDeleteExpiredStoreFiles(1);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  /*<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * @param minVersions the MIN_VERSIONS for the column family<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   */<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public void testDeleteExpiredStoreFiles(int minVersions) throws Exception {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    int storeFileNum = 4;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    int ttl = 4;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    IncrementingEnvironmentEdge edge = new IncrementingEnvironmentEdge();<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    EnvironmentEdgeManagerTestHelper.injectEdge(edge);<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    Configuration conf = HBaseConfiguration.create();<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    // Enable the expired store file deletion<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    conf.setBoolean("hbase.store.delete.expired.storefile", true);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    // Set the compaction threshold higher to avoid normal compactions.<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY, 5);<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    hcd.setMinVersions(minVersions);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    hcd.setTimeToLive(ttl);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    init(name.getMethodName() + "-" + minVersions, conf, hcd);<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>    long storeTtl = this.store.getScanInfo().getTtl();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    long sleepTime = storeTtl / storeFileNum;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    long timeStamp;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    // There are 4 store files and the max time stamp difference among these<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    // store files will be (this.store.ttl / storeFileNum)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      LOG.info("Adding some data for the store file #" + i);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      timeStamp = EnvironmentEdgeManager.currentTime();<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      this.store.add(new KeyValue(row, family, qf1, timeStamp, (byte[]) null), null);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      this.store.add(new KeyValue(row, family, qf2, timeStamp, (byte[]) null), null);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      this.store.add(new KeyValue(row, family, qf3, timeStamp, (byte[]) null), null);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      flush(i);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      edge.incrementTime(sleepTime);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    }<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>    // Verify the total number of store files<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    Assert.assertEquals(storeFileNum, this.store.getStorefiles().size());<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>     // Each call will find one expired store file and delete it before compaction happens.<a name="line.353"></a>
-<span class="sourceLineNo">354</span>     // There will be no compaction due to threshold above. Last file will not be replaced.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    for (int i = 1; i &lt;= storeFileNum - 1; i++) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      // verify the expired store file.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      assertNull(this.store.requestCompaction());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      // Ensure i files are gone.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      if (minVersions == 0) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        assertEquals(storeFileNum - i, sfs.size());<a name="line.361"></a>
-<span class="sourceLineNo">362</span>        // Ensure only non-expired files remain.<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        for (StoreFile sf : sfs) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>          assertTrue(sf.getReader().getMaxTimestamp() &gt;= (edge.currentTime() - storeTtl));<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      } else {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        assertEquals(storeFileNum, sfs.size());<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      // Let the next store file expired.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      edge.incrementTime(sleepTime);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    }<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    assertNull(this.store.requestCompaction());<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>    Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    // Assert the last expired file is not removed.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    if (minVersions == 0) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      assertEquals(1, sfs.size());<a name="line.377"></a>
+<span class="sourceLineNo">309</span>    // Verify that compression and encoding settings are respected<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    HFile.Reader reader = HFile.createReader(fs, path, new CacheConfig(conf), true, conf);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    Assert.assertEquals(hcd.getCompressionType(), reader.getCompressionAlgorithm());<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    Assert.assertEquals(hcd.getDataBlockEncoding(), reader.getDataBlockEncoding());<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    reader.close();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  @Test<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public void testDeleteExpiredStoreFiles() throws Exception {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    testDeleteExpiredStoreFiles(0);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    testDeleteExpiredStoreFiles(1);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  /*<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   * @param minVersions the MIN_VERSIONS for the column family<a name="line.323"></a>
+<span class="sourceLineNo">324</span>   */<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public void testDeleteExpiredStoreFiles(int minVersions) throws Exception {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    int storeFileNum = 4;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    int ttl = 4;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    IncrementingEnvironmentEdge edge = new IncrementingEnvironmentEdge();<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    EnvironmentEdgeManagerTestHelper.injectEdge(edge);<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>    Configuration conf = HBaseConfiguration.create();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    // Enable the expired store file deletion<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    conf.setBoolean("hbase.store.delete.expired.storefile", true);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    // Set the compaction threshold higher to avoid normal compactions.<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY, 5);<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    hcd.setMinVersions(minVersions);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    hcd.setTimeToLive(ttl);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    init(name.getMethodName() + "-" + minVersions, conf, hcd);<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    long storeTtl = this.store.getScanInfo().getTtl();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    long sleepTime = storeTtl / storeFileNum;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    long timeStamp;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    // There are 4 store files and the max time stamp difference among these<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // store files will be (this.store.ttl / storeFileNum)<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      LOG.info("Adding some data for the store file #" + i);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      timeStamp = EnvironmentEdgeManager.currentTime();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      this.store.add(new KeyValue(row, family, qf1, timeStamp, (byte[]) null), null);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      this.store.add(new KeyValue(row, family, qf2, timeStamp, (byte[]) null), null);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      this.store.add(new KeyValue(row, family, qf3, timeStamp, (byte[]) null), null);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      flush(i);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      edge.incrementTime(sleepTime);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>    // Verify the total number of store files<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    Assert.assertEquals(storeFileNum, this.store.getStorefiles().size());<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>     // Each call will find one expired store file and delete it before compaction happens.<a name="line.360"></a>
+<span class="sourceLineNo">361</span>     // There will be no compaction due to threshold above. Last file will not be replaced.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    for (int i = 1; i &lt;= storeFileNum - 1; i++) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      // verify the expired store file.<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      assertNull(this.store.requestCompaction());<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      // Ensure i files are gone.<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      if (minVersions == 0) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        assertEquals(storeFileNum - i, sfs.size());<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        // Ensure only non-expired files remain.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        for (StoreFile sf : sfs) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>          assertTrue(sf.getReader().getMaxTimestamp() &gt;= (edge.currentTime() - storeTtl));<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        }<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      } else {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        assertEquals(storeFileNum, sfs.size());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      // Let the next store file expired.<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      edge.incrementTime(sleepTime);<a name="line.377"></a>
 <span class="sourceLineNo">378</span>    }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    long ts = sfs.iterator().next().getReader().getMaxTimestamp();<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    assertTrue(ts &lt; (edge.currentTime() - storeTtl));<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    for (StoreFile sf : sfs) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      sf.closeReader(true);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  @Test<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public void testLowestModificationTime() throws Exception {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    Configuration conf = HBaseConfiguration.create();<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    FileSystem fs = FileSystem.get(conf);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    // Initialize region<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    init(name.getMethodName(), conf);<a name="line.392"></a>
+<span class="sourceLineNo">379</span>    assertNull(this.store.requestCompaction());<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>    Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    // Assert the last expired file is not removed.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    if (minVersions == 0) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      assertEquals(1, sfs.size());<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    }<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    long ts = sfs.iterator().next().getReader().getMaxTimestamp();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    assertTrue(ts &lt; (edge.currentTime() - storeTtl));<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>    for (StoreFile sf : sfs) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      sf.closeReader(true);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    }<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  }<a name="line.392"></a>
 <span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    int storeFileNum = 4;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      LOG.info("Adding some data for the store file #"+i);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      this.store.add(new KeyValue(row, family, qf1, i, (byte[])null), null);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      this.store.add(new KeyValue(row, family, qf2, i, (byte[])null), null);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      this.store.add(new KeyValue(row, family, qf3, i, (byte[])null), null);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      flush(i);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    // after flush; check the lowest time stamp<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    long lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    long lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    Assert.assertEquals(lowestTimeStampFromManager,lowestTimeStampFromFS);<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>    // after compact; check the lowest time stamp<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    store.compact(store.requestCompaction(), NoLimitThroughputController.INSTANCE, null);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    Assert.assertEquals(lowestTimeStampFromManager, lowestTimeStampFromFS);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
+<span class="sourceLineNo">394</span>  @Test<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  public void testLowestModificationTime() throws Exception {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    Configuration conf = HBaseConfiguration.create();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    FileSystem fs = FileSystem.get(conf);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Initialize region<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    init(name.getMethodName(), conf);<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    int storeFileNum = 4;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      LOG.info("Adding some data for the store file #"+i);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      this.store.add(new KeyValue(row, family, qf1, i, (byte[])null), null);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      this.store.add(new KeyValue(row, family, qf2, i, (byte[])null), null);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      this.store.add(new KeyValue(row, family, qf3, i, (byte[])null), null);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      flush(i);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    // after flush; check the lowest time stamp<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    long lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    long lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    Assert.assertEquals(lowestTimeStampFromManager,lowestTimeStampFromFS);<a name="line.412"></a>
 <span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  private static long getLowestTimeStampFromFS(FileSystem fs,<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      final Collection&lt;StoreFile&gt; candidates) throws IOException {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    long minTs = Long.MAX_VALUE;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    if (candidates.isEmpty()) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      return minTs;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    }<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    Path[] p = new Path[candidates.size()];<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    int i = 0;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    for (StoreFile sf : candidates) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      p[i] = sf.getPath();<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      ++i;<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    }<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>    FileStatus[] stats = fs.listStatus(p);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    if (stats == null || stats.length == 0) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      return minTs;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    for (FileStatus s : stats) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      minTs = Math.min(minTs, s.getModificationTime());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    return minTs;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  // Get tests<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>  private static final int BLOCKSIZE_SMALL = 8192;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Test for hbase-1686.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @throws IOException<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  @Test<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  public void testEmptyStoreFile() throws IOException {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    init(this.name.getMethodName());<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    // Write a store file.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    flush(1);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    // Now put in place an empty store file.  Its a little tricky.  Have to<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // do manually with hacked in sequence id.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    StoreFile f = this.store.getStorefiles().iterator().next();<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    Path storedir = f.getPath().getParent();<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    long seqid = f.getMaxSequenceId();<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    Configuration c = HBaseConfiguration.create();<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    FileSystem fs = FileSystem.get(c);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    HFileContext meta = new HFileContextBuilder().withBlockSize(BLOCKSIZE_SMALL).build();<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    StoreFileWriter w = new StoreFileWriter.Builder(c, new CacheConfig(c),<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        fs)<a name="line.462"></a>
-<span class="sourceLineNo">463</span>            .withOutputDir(storedir)<a name="line.463"></a>
-<span class="sourceLineNo">464</span>            .withFileContext(meta)<a name="line.464"></a>
-<span class="sourceLineNo">465</span>            .build();<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    w.appendMetadata(seqid + 1, false);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    w.close();<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    this.store.close();<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    // Reopen it... should pick up two files<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    this.store = new HStore(this.store.getHRegion(), this.store.getFamily(), c);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    Assert.assertEquals(2, this.store.getStorefilesCount());<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        get.getRow(),<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        qualifiers);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    Assert.assertEquals(1, result.size());<a name="line.476"></a>
-<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>  /**<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * Getting data from memstore only<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @throws IOException<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   */<a name="line.482"></a>
-<span class="sourceLineNo">483</span>  @Test<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  public void testGet_FromMemStoreOnly() throws IOException {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    init(this.name.getMethodName());<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>    //Put data in memstore<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    this.store.add(new KeyValue(row, family, qf3, 1, (byte[])null), null);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    this.store.add(new KeyValue(row, family, qf4, 1, (byte[])null), null);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    this.store.add(new KeyValue(row, family, qf5, 1, (byte[])null), null);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    this.store.add(new KeyValue(row, family, qf6, 1, (byte[])null), null);<a name="line.493"></a>
-<span class="sourceLineNo">494</span><a name="line.494"></a>
-<span class="sourceLineNo">495</span>    //Get<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        get.getRow(), qualifiers);<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    //Compare<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    assertCheck();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  }<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>   * Getting data from files only<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @throws IOException<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   */<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  @Test<a name="line.507"></a>
-<span class="sourceLineNo">508</span>  public void testGet_FromFilesOnly() throws IOException {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    init(this.name.getMethodName());<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>    //Put data in memstore<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    //flush<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    flush(1);<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>    //Add more data<a name="line.5

<TRUNCATED>

[24/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.Iterator.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.Iterator.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.Iterator.html
index b09e20b..3c088c8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.Iterator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.Iterator.html
@@ -155,937 +155,942 @@
 <span class="sourceLineNo">147</span>  }<a name="line.147"></a>
 <span class="sourceLineNo">148</span><a name="line.148"></a>
 <span class="sourceLineNo">149</span>  @Override<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  public void insertNewFiles(Collection&lt;StoreFile&gt; sfs) throws IOException {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(true);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    // Passing null does not cause NPE??<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    cmc.mergeResults(null, sfs);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    debugDumpState("Added new files");<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  }<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  @Override<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  public ImmutableCollection&lt;StoreFile&gt; clearFiles() {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    ImmutableCollection&lt;StoreFile&gt; result = state.allFilesCached;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    this.state = new State();<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    this.fileStarts.clear();<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    this.fileEnds.clear();<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    return result;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  }<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  @Override<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  public ImmutableCollection&lt;StoreFile&gt; clearCompactedFiles() {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    ImmutableCollection&lt;StoreFile&gt; result = state.allCompactedFilesCached;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    this.state = new State();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    return result;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  @Override<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public int getStorefileCount() {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    return state.allFilesCached.size();<a name="line.175"></a>
+<span class="sourceLineNo">150</span>  public int getCompactedFilesCount() {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    return state.allCompactedFilesCached.size();<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
+<span class="sourceLineNo">153</span><a name="line.153"></a>
+<span class="sourceLineNo">154</span>  @Override<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  public void insertNewFiles(Collection&lt;StoreFile&gt; sfs) throws IOException {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(true);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    // Passing null does not cause NPE??<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    cmc.mergeResults(null, sfs);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    debugDumpState("Added new files");<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 ImmutableCollection&lt;StoreFile&gt; clearFiles() {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    ImmutableCollection&lt;StoreFile&gt; result = state.allFilesCached;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    this.state = new State();<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    this.fileStarts.clear();<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    this.fileEnds.clear();<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    return result;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>  }<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>  @Override<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public ImmutableCollection&lt;StoreFile&gt; clearCompactedFiles() {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    ImmutableCollection&lt;StoreFile&gt; result = state.allCompactedFilesCached;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    this.state = new State();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    return result;<a name="line.175"></a>
 <span class="sourceLineNo">176</span>  }<a name="line.176"></a>
 <span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  /** See {@link StoreFileManager#getCandidateFilesForRowKeyBefore(KeyValue)}<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   * for details on this methods. */<a name="line.179"></a>
-<span class="sourceLineNo">180</span>  @Override<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  public Iterator&lt;StoreFile&gt; getCandidateFilesForRowKeyBefore(final KeyValue targetKey) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    KeyBeforeConcatenatedLists result = new KeyBeforeConcatenatedLists();<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    // Order matters for this call.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    result.addSublist(state.level0Files);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    if (!state.stripeFiles.isEmpty()) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      int lastStripeIndex = findStripeForRow(CellUtil.cloneRow(targetKey), false);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      for (int stripeIndex = lastStripeIndex; stripeIndex &gt;= 0; --stripeIndex) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>        result.addSublist(state.stripeFiles.get(stripeIndex));<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    return result.iterator();<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  /** See {@link StoreFileManager#getCandidateFilesForRowKeyBefore(KeyValue)} and<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * {@link StoreFileManager#updateCandidateFilesForRowKeyBefore(Iterator, KeyValue, Cell)}<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   * for details on this methods. */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  @Override<a name="line.197"></a>
-<span class="sourceLineNo">198</span>  public Iterator&lt;StoreFile&gt; updateCandidateFilesForRowKeyBefore(<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      Iterator&lt;StoreFile&gt; candidateFiles, final KeyValue targetKey, final Cell candidate) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    KeyBeforeConcatenatedLists.Iterator original =<a name="line.200"></a>
-<span class="sourceLineNo">201</span>        (KeyBeforeConcatenatedLists.Iterator)candidateFiles;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    assert original != null;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    ArrayList&lt;List&lt;StoreFile&gt;&gt; components = original.getComponents();<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    for (int firstIrrelevant = 0; firstIrrelevant &lt; components.size(); ++firstIrrelevant) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      StoreFile sf = components.get(firstIrrelevant).get(0);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      byte[] endKey = endOf(sf);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      // Entries are ordered as such: L0, then stripes in reverse order. We never remove<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      // level 0; we remove the stripe, and all subsequent ones, as soon as we find the<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      // first one that cannot possibly have better candidates.<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      if (!isInvalid(endKey) &amp;&amp; !isOpen(endKey)<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          &amp;&amp; (nonOpenRowCompare(targetKey, endKey) &gt;= 0)) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        original.removeComponents(firstIrrelevant);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>        break;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    return original;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  }<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>  private byte[] getSplitPoint(Collection&lt;StoreFile&gt; sfs) throws IOException {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    Optional&lt;StoreFile&gt; largestFile = StoreUtils.getLargestFile(sfs);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    return largestFile.isPresent()<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        ? StoreUtils.getFileSplitPoint(largestFile.get(), cellComparator).orElse(null) : null;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>  /**<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * Override of getSplitPoint that determines the split point as the boundary between two<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * stripes, unless it causes significant imbalance between split sides' sizes. In that<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * case, the split boundary will be chosen from the middle of one of the stripes to<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * minimize imbalance.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   * @return The split point, or null if no split is possible.<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   */<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  @Override<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  public byte[] getSplitPoint() throws IOException {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    if (this.getStorefileCount() == 0) return null;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    if (state.stripeFiles.size() &lt;= 1) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      return getSplitPointFromAllFiles();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    int leftIndex = -1, rightIndex = state.stripeFiles.size();<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    long leftSize = 0, rightSize = 0;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    long lastLeftSize = 0, lastRightSize = 0;<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    while (rightIndex - 1 != leftIndex) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      if (leftSize &gt;= rightSize) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        --rightIndex;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        lastRightSize = getStripeFilesSize(rightIndex);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        rightSize += lastRightSize;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      } else {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        ++leftIndex;<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        lastLeftSize = getStripeFilesSize(leftIndex);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        leftSize += lastLeftSize;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      }<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    if (leftSize == 0 || rightSize == 0) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      String errMsg = String.format("Cannot split on a boundary - left index %d size %d, "<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          + "right index %d size %d", leftIndex, leftSize, rightIndex, rightSize);<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      debugDumpState(errMsg);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      LOG.warn(errMsg);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      return getSplitPointFromAllFiles();<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    }<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    double ratio = (double)rightSize / leftSize;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    if (ratio &lt; 1) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      ratio = 1 / ratio;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    if (config.getMaxSplitImbalance() &gt; ratio) return state.stripeEndRows[leftIndex];<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>    // If the difference between the sides is too large, we could get the proportional key on<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    // the a stripe to equalize the difference, but there's no proportional key method at the<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    // moment, and it's not extremely important.<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    // See if we can achieve better ratio if we split the bigger side in half.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    boolean isRightLarger = rightSize &gt;= leftSize;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    double newRatio = isRightLarger<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        ? getMidStripeSplitRatio(leftSize, rightSize, lastRightSize)<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        : getMidStripeSplitRatio(rightSize, leftSize, lastLeftSize);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    if (newRatio &lt; 1) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      newRatio = 1 / newRatio;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    if (newRatio &gt;= ratio)  return state.stripeEndRows[leftIndex];<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    LOG.debug("Splitting the stripe - ratio w/o split " + ratio + ", ratio with split "<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        + newRatio + " configured ratio " + config.getMaxSplitImbalance());<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // Ok, we may get better ratio, get it.<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    return getSplitPoint(state.stripeFiles.get(isRightLarger ? rightIndex : leftIndex));<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  private byte[] getSplitPointFromAllFiles() throws IOException {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    ConcatenatedLists&lt;StoreFile&gt; sfs = new ConcatenatedLists&lt;&gt;();<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    sfs.addSublist(state.level0Files);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    sfs.addAllSublists(state.stripeFiles);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    return getSplitPoint(sfs);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>  private double getMidStripeSplitRatio(long smallerSize, long largerSize, long lastLargerSize) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    return (double)(largerSize - lastLargerSize / 2f) / (smallerSize + lastLargerSize / 2f);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>  @Override<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public Collection&lt;StoreFile&gt; getFilesForScan(byte[] startRow, boolean includeStartRow,<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      byte[] stopRow, boolean includeStopRow) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    if (state.stripeFiles.isEmpty()) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      return state.level0Files; // There's just L0.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    }<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>    int firstStripe = findStripeForRow(startRow, true);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    int lastStripe = findStripeForRow(stopRow, false);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    assert firstStripe &lt;= lastStripe;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    if (firstStripe == lastStripe &amp;&amp; state.level0Files.isEmpty()) {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      return state.stripeFiles.get(firstStripe); // There's just one stripe we need.<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    if (firstStripe == 0 &amp;&amp; lastStripe == (state.stripeFiles.size() - 1)) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      return state.allFilesCached; // We need to read all files.<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    }<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>    ConcatenatedLists&lt;StoreFile&gt; result = new ConcatenatedLists&lt;&gt;();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    result.addAllSublists(state.stripeFiles.subList(firstStripe, lastStripe + 1));<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    result.addSublist(state.level0Files);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    return result;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  }<a name="line.315"></a>
-<span class="sourceLineNo">316</span><a name="line.316"></a>
-<span class="sourceLineNo">317</span>  @Override<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public void addCompactionResults(<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    Collection&lt;StoreFile&gt; compactedFiles, Collection&lt;StoreFile&gt; results) throws IOException {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    // See class comment for the assumptions we make here.<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    LOG.debug("Attempting to merge compaction results: " + compactedFiles.size()<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        + " files replaced by " + results.size());<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    // In order to be able to fail in the middle of the operation, we'll operate on lazy<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    // copies and apply the result at the end.<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(false);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    cmc.mergeResults(compactedFiles, results);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    markCompactedAway(compactedFiles);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    debugDumpState("Merged compaction results");<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  }<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  // Mark the files as compactedAway once the storefiles and compactedfiles list is finalised<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  // Let a background thread close the actual reader on these compacted files and also<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  // ensure to evict the blocks from block cache so that they are no longer in<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  // cache<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  private void markCompactedAway(Collection&lt;StoreFile&gt; compactedFiles) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    for (StoreFile file : compactedFiles) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      file.markCompactedAway();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  }<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  @Override<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public void removeCompactedFiles(Collection&lt;StoreFile&gt; compactedFiles) throws IOException {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    // See class comment for the assumptions we make here.<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    LOG.debug("Attempting to delete compaction results: " + compactedFiles.size());<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    // In order to be able to fail in the middle of the operation, we'll operate on lazy<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    // copies and apply the result at the end.<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(false);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    cmc.deleteResults(compactedFiles);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    debugDumpState("Deleted compaction results");<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  }<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  @Override<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  public int getStoreCompactionPriority() {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    // If there's only L0, do what the default store does.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    // If we are in critical priority, do the same - we don't want to trump all stores all<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    // the time due to how many files we have.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    int fc = getStorefileCount();<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    if (state.stripeFiles.isEmpty() || (this.blockingFileCount &lt;= fc)) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      return this.blockingFileCount - fc;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    // If we are in good shape, we don't want to be trumped by all other stores due to how<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    // many files we have, so do an approximate mapping to normal priority range; L0 counts<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    // for all stripes.<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    int l0 = state.level0Files.size(), sc = state.stripeFiles.size();<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    int priority = (int)Math.ceil(((double)(this.blockingFileCount - fc + l0) / sc) - l0);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    return (priority &lt;= HStore.PRIORITY_USER) ? (HStore.PRIORITY_USER + 1) : priority;<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  /**<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * Gets the total size of all files in the stripe.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * @param stripeIndex Stripe index.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * @return Size.<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   */<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  private long getStripeFilesSize(int stripeIndex) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    long result = 0;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    for (StoreFile sf : state.stripeFiles.get(stripeIndex)) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      result += sf.getReader().length();<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    return result;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  }<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>  /**<a name="line.382"></a>
-<span class="sourceLineNo">383</span>   * Loads initial store files that were picked up from some physical location pertaining to<a name="line.383"></a>
-<span class="sourceLineNo">384</span>   * this store (presumably). Unlike adding files after compaction, assumes empty initial<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * sets, and is forgiving with regard to stripe constraints - at worst, many/all files will<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   * go to level 0.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * @param storeFiles Store files to add.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private void loadUnclassifiedStoreFiles(List&lt;StoreFile&gt; storeFiles) {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    LOG.debug("Attempting to load " + storeFiles.size() + " store files.");<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    TreeMap&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; candidateStripes = new TreeMap&lt;&gt;(MAP_COMPARATOR);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    ArrayList&lt;StoreFile&gt; level0Files = new ArrayList&lt;&gt;();<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    // Separate the files into tentative stripes; then validate. Currently, we rely on metadata.<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    // If needed, we could dynamically determine the stripes in future.<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    for (StoreFile sf : storeFiles) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      byte[] startRow = startOf(sf), endRow = endOf(sf);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      // Validate the range and put the files into place.<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      if (isInvalid(startRow) || isInvalid(endRow)) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        insertFileIntoStripe(level0Files, sf); // No metadata - goes to L0.<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        ensureLevel0Metadata(sf);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      } else if (!isOpen(startRow) &amp;&amp; !isOpen(endRow) &amp;&amp;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>          nonOpenRowCompare(startRow, endRow) &gt;= 0) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        LOG.error("Unexpected metadata - start row [" + Bytes.toString(startRow) + "], end row ["<a name="line.403"></a>
-<span class="sourceLineNo">404</span>          + Bytes.toString(endRow) + "] in file [" + sf.getPath() + "], pushing to L0");<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        insertFileIntoStripe(level0Files, sf); // Bad metadata - goes to L0 also.<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        ensureLevel0Metadata(sf);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      } else {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        ArrayList&lt;StoreFile&gt; stripe = candidateStripes.get(endRow);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        if (stripe == null) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>          stripe = new ArrayList&lt;&gt;();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>          candidateStripes.put(endRow, stripe);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        }<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        insertFileIntoStripe(stripe, sf);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      }<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    }<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    // Possible improvement - for variable-count stripes, if all the files are in L0, we can<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    // instead create single, open-ended stripe with all files.<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>    boolean hasOverlaps = false;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    byte[] expectedStartRow = null; // first stripe can start wherever<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    Iterator&lt;Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt;&gt; entryIter =<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        candidateStripes.entrySet().iterator();<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    while (entryIter.hasNext()) {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; entry = entryIter.next();<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      ArrayList&lt;StoreFile&gt; files = entry.getValue();<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      // Validate the file start rows, and remove the bad ones to level 0.<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      for (int i = 0; i &lt; files.size(); ++i) {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        StoreFile sf = files.get(i);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        byte[] startRow = startOf(sf);<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        if (expectedStartRow == null) {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>          expectedStartRow = startRow; // ensure that first stripe is still consistent<a name="line.431"></a>
-<span class="sourceLineNo">432</span>        } else if (!rowEquals(expectedStartRow, startRow)) {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          hasOverlaps = true;<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          LOG.warn("Store file doesn't fit into the tentative stripes - expected to start at ["<a name="line.434"></a>
-<span class="sourceLineNo">435</span>              + Bytes.toString(expectedStartRow) + "], but starts at [" + Bytes.toString(startRow)<a name="line.435"></a>
-<span class="sourceLineNo">436</span>              + "], to L0 it goes");<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          StoreFile badSf = files.remove(i);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>          insertFileIntoStripe(level0Files, badSf);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>          ensureLevel0Metadata(badSf);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>          --i;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      }<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      // Check if any files from the candidate stripe are valid. If so, add a stripe.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      byte[] endRow = entry.getKey();<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      if (!files.isEmpty()) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>        expectedStartRow = endRow; // Next stripe must start exactly at that key.<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      } else {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>        entryIter.remove();<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>    // In the end, there must be open ends on two sides. If not, and there were no errors i.e.<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    // files are consistent, they might be coming from a split. We will treat the boundaries<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // as open keys anyway, and log the message.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    // If there were errors, we'll play it safe and dump everything into L0.<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    if (!candidateStripes.isEmpty()) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      StoreFile firstFile = candidateStripes.firstEntry().getValue().get(0);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      boolean isOpen = isOpen(startOf(firstFile)) &amp;&amp; isOpen(candidateStripes.lastKey());<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      if (!isOpen) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        LOG.warn("The range of the loaded files does not cover full key space: from ["<a name="line.460"></a>
-<span class="sourceLineNo">461</span>            + Bytes.toString(startOf(firstFile)) + "], to ["<a name="line.461"></a>
-<span class="sourceLineNo">462</span>            + Bytes.toString(candidateStripes.lastKey()) + "]");<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        if (!hasOverlaps) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>          ensureEdgeStripeMetadata(candidateStripes.firstEntry().getValue(), true);<a name="line.464"></a>
-<span class="sourceLineNo">465</span>          ensureEdgeStripeMetadata(candidateStripes.lastEntry().getValue(), false);<a name="line.465"></a>
-<span class="sourceLineNo">466</span>        } else {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>          LOG.warn("Inconsistent files, everything goes to L0.");<a name="line.467"></a>
-<span class="sourceLineNo">468</span>          for (ArrayList&lt;StoreFile&gt; files : candidateStripes.values()) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>            for (StoreFile sf : files) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>              insertFileIntoStripe(level0Files, sf);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>              ensureLevel0Metadata(sf);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>            }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>          }<a name="line.473"></a>
-<span class="sourceLineNo">474</span>          candidateStripes.clear();<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        }<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      }<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>    // Copy the results into the fields.<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    State state = new State();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    state.level0Files = ImmutableList.copyOf(level0Files);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    state.stripeFiles = new ArrayList&lt;&gt;(candidateStripes.size());<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    state.stripeEndRows = new byte[Math.max(0, candidateStripes.size() - 1)][];<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    ArrayList&lt;StoreFile&gt; newAllFiles = new ArrayList&lt;&gt;(level0Files);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    int i = candidateStripes.size() - 1;<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    for (Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; entry : candidateStripes.entrySet()) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      state.stripeFiles.add(ImmutableList.copyOf(entry.getValue()));<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      newAllFiles.addAll(entry.getValue());<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      if (i &gt; 0) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        state.stripeEndRows[state.stripeFiles.size() - 1] = entry.getKey();<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      }<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      --i;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    }<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    state.allFilesCached = ImmutableList.copyOf(newAllFiles);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    this.state = state;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    debugDumpState("Files loaded");<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  }<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>  private void ensureEdgeStripeMetadata(ArrayList&lt;StoreFile&gt; stripe, boolean isFirst) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    HashMap&lt;StoreFile, byte[]&gt; targetMap = isFirst ? fileStarts : fileEnds;<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    for (StoreFile sf : stripe) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      targetMap.put(sf, OPEN_KEY);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    }<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  }<a name="line.504"></a>
-<span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>  private void ensureLevel0Metadata(StoreFile sf) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    if (!isInvalid(startOf(sf))) this.fileStarts.put(sf, INVALID_KEY_IN_MAP);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    if (!isInvalid(endOf(sf))) this.fileEnds.put(sf, INVALID_KEY_IN_MAP);<a name="line.508"></a>
+<span class="sourceLineNo">178</span>  @Override<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  public int getStorefileCount() {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    return state.allFilesCached.size();<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  }<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>  /** See {@link StoreFileManager#getCandidateFilesForRowKeyBefore(KeyValue)}<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * for details on this methods. */<a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @Override<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public Iterator&lt;StoreFile&gt; getCandidateFilesForRowKeyBefore(final KeyValue targetKey) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    KeyBeforeConcatenatedLists result = new KeyBeforeConcatenatedLists();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    // Order matters for this call.<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    result.addSublist(state.level0Files);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    if (!state.stripeFiles.isEmpty()) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      int lastStripeIndex = findStripeForRow(CellUtil.cloneRow(targetKey), false);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      for (int stripeIndex = lastStripeIndex; stripeIndex &gt;= 0; --stripeIndex) {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        result.addSublist(state.stripeFiles.get(stripeIndex));<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      }<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    return result.iterator();<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  }<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span>  /** See {@link StoreFileManager#getCandidateFilesForRowKeyBefore(KeyValue)} and<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * {@link StoreFileManager#updateCandidateFilesForRowKeyBefore(Iterator, KeyValue, Cell)}<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   * for details on this methods. */<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  @Override<a name="line.202"></a>
+<span class="sourceLineNo">203</span>  public Iterator&lt;StoreFile&gt; updateCandidateFilesForRowKeyBefore(<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      Iterator&lt;StoreFile&gt; candidateFiles, final KeyValue targetKey, final Cell candidate) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    KeyBeforeConcatenatedLists.Iterator original =<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        (KeyBeforeConcatenatedLists.Iterator)candidateFiles;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    assert original != null;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    ArrayList&lt;List&lt;StoreFile&gt;&gt; components = original.getComponents();<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    for (int firstIrrelevant = 0; firstIrrelevant &lt; components.size(); ++firstIrrelevant) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      StoreFile sf = components.get(firstIrrelevant).get(0);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      byte[] endKey = endOf(sf);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      // Entries are ordered as such: L0, then stripes in reverse order. We never remove<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      // level 0; we remove the stripe, and all subsequent ones, as soon as we find the<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      // first one that cannot possibly have better candidates.<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      if (!isInvalid(endKey) &amp;&amp; !isOpen(endKey)<a name="line.215"></a>
+<span class="sourceLineNo">216</span>          &amp;&amp; (nonOpenRowCompare(targetKey, endKey) &gt;= 0)) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        original.removeComponents(firstIrrelevant);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        break;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    return original;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>  private byte[] getSplitPoint(Collection&lt;StoreFile&gt; sfs) throws IOException {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    Optional&lt;StoreFile&gt; largestFile = StoreUtils.getLargestFile(sfs);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    return largestFile.isPresent()<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        ? StoreUtils.getFileSplitPoint(largestFile.get(), cellComparator).orElse(null) : null;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  }<a name="line.228"></a>
+<span class="sourceLineNo">229</span><a name="line.229"></a>
+<span class="sourceLineNo">230</span>  /**<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * Override of getSplitPoint that determines the split point as the boundary between two<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   * stripes, unless it causes significant imbalance between split sides' sizes. In that<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   * case, the split boundary will be chosen from the middle of one of the stripes to<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * minimize imbalance.<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * @return The split point, or null if no split is possible.<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  @Override<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  public byte[] getSplitPoint() throws IOException {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    if (this.getStorefileCount() == 0) return null;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    if (state.stripeFiles.size() &lt;= 1) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      return getSplitPointFromAllFiles();<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    int leftIndex = -1, rightIndex = state.stripeFiles.size();<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    long leftSize = 0, rightSize = 0;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    long lastLeftSize = 0, lastRightSize = 0;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    while (rightIndex - 1 != leftIndex) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      if (leftSize &gt;= rightSize) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        --rightIndex;<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        lastRightSize = getStripeFilesSize(rightIndex);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        rightSize += lastRightSize;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      } else {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        ++leftIndex;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        lastLeftSize = getStripeFilesSize(leftIndex);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        leftSize += lastLeftSize;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    }<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    if (leftSize == 0 || rightSize == 0) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      String errMsg = String.format("Cannot split on a boundary - left index %d size %d, "<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          + "right index %d size %d", leftIndex, leftSize, rightIndex, rightSize);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      debugDumpState(errMsg);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      LOG.warn(errMsg);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      return getSplitPointFromAllFiles();<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    double ratio = (double)rightSize / leftSize;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    if (ratio &lt; 1) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      ratio = 1 / ratio;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    if (config.getMaxSplitImbalance() &gt; ratio) return state.stripeEndRows[leftIndex];<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span>    // If the difference between the sides is too large, we could get the proportional key on<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    // the a stripe to equalize the difference, but there's no proportional key method at the<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    // moment, and it's not extremely important.<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // See if we can achieve better ratio if we split the bigger side in half.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    boolean isRightLarger = rightSize &gt;= leftSize;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    double newRatio = isRightLarger<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        ? getMidStripeSplitRatio(leftSize, rightSize, lastRightSize)<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        : getMidStripeSplitRatio(rightSize, leftSize, lastLeftSize);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    if (newRatio &lt; 1) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      newRatio = 1 / newRatio;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    if (newRatio &gt;= ratio)  return state.stripeEndRows[leftIndex];<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    LOG.debug("Splitting the stripe - ratio w/o split " + ratio + ", ratio with split "<a name="line.282"></a>
+<span class="sourceLineNo">283</span>        + newRatio + " configured ratio " + config.getMaxSplitImbalance());<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // Ok, we may get better ratio, get it.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    return getSplitPoint(state.stripeFiles.get(isRightLarger ? rightIndex : leftIndex));<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  }<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>  private byte[] getSplitPointFromAllFiles() throws IOException {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    ConcatenatedLists&lt;StoreFile&gt; sfs = new ConcatenatedLists&lt;&gt;();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    sfs.addSublist(state.level0Files);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    sfs.addAllSublists(state.stripeFiles);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    return getSplitPoint(sfs);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>  private double getMidStripeSplitRatio(long smallerSize, long largerSize, long lastLargerSize) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    return (double)(largerSize - lastLargerSize / 2f) / (smallerSize + lastLargerSize / 2f);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  }<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span>  @Override<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  public Collection&lt;StoreFile&gt; getFilesForScan(byte[] startRow, boolean includeStartRow,<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      byte[] stopRow, boolean includeStopRow) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    if (state.stripeFiles.isEmpty()) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      return state.level0Files; // There's just L0.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>    int firstStripe = findStripeForRow(startRow, true);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    int lastStripe = findStripeForRow(stopRow, false);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    assert firstStripe &lt;= lastStripe;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    if (firstStripe == lastStripe &amp;&amp; state.level0Files.isEmpty()) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      return state.stripeFiles.get(firstStripe); // There's just one stripe we need.<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    if (firstStripe == 0 &amp;&amp; lastStripe == (state.stripeFiles.size() - 1)) {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      return state.allFilesCached; // We need to read all files.<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    }<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>    ConcatenatedLists&lt;StoreFile&gt; result = new ConcatenatedLists&lt;&gt;();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    result.addAllSublists(state.stripeFiles.subList(firstStripe, lastStripe + 1));<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    result.addSublist(state.level0Files);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    return result;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  @Override<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public void addCompactionResults(<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    Collection&lt;StoreFile&gt; compactedFiles, Collection&lt;StoreFile&gt; results) throws IOException {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // See class comment for the assumptions we make here.<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    LOG.debug("Attempting to merge compaction results: " + compactedFiles.size()<a name="line.326"></a>
+<span class="sourceLineNo">327</span>        + " files replaced by " + results.size());<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    // In order to be able to fail in the middle of the operation, we'll operate on lazy<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    // copies and apply the result at the end.<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(false);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    cmc.mergeResults(compactedFiles, results);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    markCompactedAway(compactedFiles);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    debugDumpState("Merged compaction results");<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  // Mark the files as compactedAway once the storefiles and compactedfiles list is finalised<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  // Let a background thread close the actual reader on these compacted files and also<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  // ensure to evict the blocks from block cache so that they are no longer in<a name="line.338"></a>
+<span class="sourceLineNo">339</span>  // cache<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  private void markCompactedAway(Collection&lt;StoreFile&gt; compactedFiles) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    for (StoreFile file : compactedFiles) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      file.markCompactedAway();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>  @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  public void removeCompactedFiles(Collection&lt;StoreFile&gt; compactedFiles) throws IOException {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    // See class comment for the assumptions we make here.<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    LOG.debug("Attempting to delete compaction results: " + compactedFiles.size());<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // In order to be able to fail in the middle of the operation, we'll operate on lazy<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    // copies and apply the result at the end.<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(false);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    cmc.deleteResults(compactedFiles);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    debugDumpState("Deleted compaction results");<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>  @Override<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  public int getStoreCompactionPriority() {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    // If there's only L0, do what the default store does.<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    // If we are in critical priority, do the same - we don't want to trump all stores all<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    // the time due to how many files we have.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    int fc = getStorefileCount();<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    if (state.stripeFiles.isEmpty() || (this.blockingFileCount &lt;= fc)) {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      return this.blockingFileCount - fc;<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    }<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    // If we are in good shape, we don't want to be trumped by all other stores due to how<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    // many files we have, so do an approximate mapping to normal priority range; L0 counts<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    // for all stripes.<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    int l0 = state.level0Files.size(), sc = state.stripeFiles.size();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    int priority = (int)Math.ceil(((double)(this.blockingFileCount - fc + l0) / sc) - l0);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    return (priority &lt;= HStore.PRIORITY_USER) ? (HStore.PRIORITY_USER + 1) : priority;<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  /**<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * Gets the total size of all files in the stripe.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @param stripeIndex Stripe index.<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * @return Size.<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   */<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  private long getStripeFilesSize(int stripeIndex) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    long result = 0;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    for (StoreFile sf : state.stripeFiles.get(stripeIndex)) {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      result += sf.getReader().length();<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    }<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    return result;<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
+<span class="sourceLineNo">386</span><a name="line.386"></a>
+<span class="sourceLineNo">387</span>  /**<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * Loads initial store files that were picked up from some physical location pertaining to<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * this store (presumably). Unlike adding files after compaction, assumes empty initial<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * sets, and is forgiving with regard to stripe constraints - at worst, many/all files will<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * go to level 0.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   * @param storeFiles Store files to add.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>   */<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  private void loadUnclassifiedStoreFiles(List&lt;StoreFile&gt; storeFiles) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    LOG.debug("Attempting to load " + storeFiles.size() + " store files.");<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    TreeMap&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; candidateStripes = new TreeMap&lt;&gt;(MAP_COMPARATOR);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    ArrayList&lt;StoreFile&gt; level0Files = new ArrayList&lt;&gt;();<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Separate the files into tentative stripes; then validate. Currently, we rely on metadata.<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    // If needed, we could dynamically determine the stripes in future.<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    for (StoreFile sf : storeFiles) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      byte[] startRow = startOf(sf), endRow = endOf(sf);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      // Validate the range and put the files into place.<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      if (isInvalid(startRow) || isInvalid(endRow)) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>        insertFileIntoStripe(level0Files, sf); // No metadata - goes to L0.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        ensureLevel0Metadata(sf);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      } else if (!isOpen(startRow) &amp;&amp; !isOpen(endRow) &amp;&amp;<a name="line.406"></a>
+<span class="sourceLineNo">407</span>          nonOpenRowCompare(startRow, endRow) &gt;= 0) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        LOG.error("Unexpected metadata - start row [" + Bytes.toString(startRow) + "], end row ["<a name="line.408"></a>
+<span class="sourceLineNo">409</span>          + Bytes.toString(endRow) + "] in file [" + sf.getPath() + "], pushing to L0");<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        insertFileIntoStripe(level0Files, sf); // Bad metadata - goes to L0 also.<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        ensureLevel0Metadata(sf);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      } else {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        ArrayList&lt;StoreFile&gt; stripe = candidateStripes.get(endRow);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        if (stripe == null) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>          stripe = new ArrayList&lt;&gt;();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>          candidateStripes.put(endRow, stripe);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        insertFileIntoStripe(stripe, sf);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      }<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    // Possible improvement - for variable-count stripes, if all the files are in L0, we can<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    // instead create single, open-ended stripe with all files.<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    boolean hasOverlaps = false;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    byte[] expectedStartRow = null; // first stripe can start wherever<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    Iterator&lt;Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt;&gt; entryIter =<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        candidateStripes.entrySet().iterator();<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    while (entryIter.hasNext()) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; entry = entryIter.next();<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      ArrayList&lt;StoreFile&gt; files = entry.getValue();<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      // Validate the file start rows, and remove the bad ones to level 0.<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      for (int i = 0; i &lt; files.size(); ++i) {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>        StoreFile sf = files.get(i);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        byte[] startRow = startOf(sf);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>        if (expectedStartRow == null) {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>          expectedStartRow = startRow; // ensure that first stripe is still consistent<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        } else if (!rowEquals(expectedStartRow, startRow)) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          hasOverlaps = true;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          LOG.warn("Store file doesn't fit into the tentative stripes - expected to start at ["<a name="line.439"></a>
+<span class="sourceLineNo">440</span>              + Bytes.toString(expectedStartRow) + "], but starts at [" + Bytes.toString(startRow)<a name="line.440"></a>
+<span class="sourceLineNo">441</span>              + "], to L0 it goes");<a name="line.441"></a>
+<span class="sourceLineNo">442</span>          StoreFile badSf = files.remove(i);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>          insertFileIntoStripe(level0Files, badSf);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>          ensureLevel0Metadata(badSf);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>          --i;<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>      // Check if any files from the candidate stripe are valid. If so, add a stripe.<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      byte[] endRow = entry.getKey();<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      if (!files.isEmpty()) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>        expectedStartRow = endRow; // Next stripe must start exactly at that key.<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      } else {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        entryIter.remove();<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>    // In the end, there must be open ends on two sides. If not, and there were no errors i.e.<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    // files are consistent, they might be coming from a split. We will treat the boundaries<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    // as open keys anyway, and log the message.<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    // If there were errors, we'll play it safe and dump everything into L0.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    if (!candidateStripes.isEmpty()) {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      StoreFile firstFile = candidateStripes.firstEntry().getValue().get(0);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      boolean isOpen = isOpen(startOf(firstFile)) &amp;&amp; isOpen(candidateStripes.lastKey());<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      if (!isOpen) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>        LOG.warn("The range of the loaded files does not cover full key space: from ["<a name="line.465"></a>
+<span class="sourceLineNo">466</span>            + Bytes.toString(startOf(firstFile)) + "], to ["<a name="line.466"></a>
+<span class="sourceLineNo">467</span>            + Bytes.toString(candidateStripes.lastKey()) + "]");<a name="line.467"></a>
+<span class="sourceLineNo">468</span>        if (!hasOverlaps) {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>          ensureEdgeStripeMetadata(candidateStripes.firstEntry().getValue(), true);<a name="line.469"></a>
+<span class="sourceLineNo">470</span>          ensureEdgeStripeMetadata(candidateStripes.lastEntry().getValue(), false);<a name="line.470"></a>
+<span class="sourceLineNo">471</span>        } else {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>          LOG.warn("Inconsistent files, everything goes to L0.");<a name="line.472"></a>
+<span class="sourceLineNo">473</span>          for (ArrayList&lt;StoreFile&gt; files : candidateStripes.values()) {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>            for (StoreFile sf : files) {<a name="line.474"></a>
+<span class="sourceLineNo">475</span>              insertFileIntoStripe(level0Files, sf);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>              ensureLevel0Metadata(sf);<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>          candidateStripes.clear();<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><a name="line.483"></a>
+<span class="sourceLineNo">484</span>    // Copy the results into the fields.<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    State state = new State();<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    state.level0Files = ImmutableList.copyOf(level0Files);<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    state.stripeFiles = new ArrayList&lt;&gt;(candidateStripes.size());<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    state.stripeEndRows = new byte[Math.max(0, candidateStripes.size() - 1)][];<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    ArrayList&lt;StoreFile&gt; newAllFiles = new ArrayList&lt;&gt;(level0Files);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    int i = candidateStripes.size() - 1;<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    for (Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; entry : candidateStripes.entrySet()) {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>      state.stripeFiles.add(ImmutableList.copyOf(entry.getValue()));<a name="line.492"></a>
+<span class="sourceLineNo">493</span>      newAllFiles.addAll(entry.getValue());<a name="line.493"></a>
+<span class="sourceLineNo">494</span>      if (i &gt; 0) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>        state.stripeEndRows[state.stripeFiles.size() - 1] = entry.getKey();<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      }<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      --i;<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    }<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    state.allFilesCached = ImmutableList.copyOf(newAllFiles);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    this.state = state;<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    debugDumpState("Files loaded");<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>  private void ensureEdgeStripeMetadata(ArrayList&lt;StoreFile&gt; stripe, boolean isFirst) {<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    HashMap&lt;StoreFile, byte[]&gt; targetMap = isFirst ? fileStarts : fileEnds;<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    for (StoreFile sf : stripe) {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>      targetMap.put(sf, OPEN_KEY);<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    }<a name="line.508"></a>
 <span class="sourceLineNo">509</span>  }<a name="line.509"></a>
 <span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>  private void debugDumpState(String string) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    if (!LOG.isDebugEnabled()) return;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    StringBuilder sb = new StringBuilder();<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    sb.append("\n" + string + "; current stripe state is as such:");<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    sb.append("\n level 0 with ")<a name="line.515"></a>
-<span class="sourceLineNo">516</span>        .append(state.level0Files.size())<a name="line.516"></a>
-<span class="sourceLineNo">517</span>        .append(<a name="line.517"></a>
-<span class="sourceLineNo">518</span>          " files: "<a name="line.518"></a>
-<span class="sourceLineNo">519</span>              + TraditionalBinaryPrefix.long2String(<a name="line.519"></a>
-<span class="sourceLineNo">520</span>                StripeCompactionPolicy.getTotalFileSize(state.level0Files), "", 1) + ";");<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    for (int i = 0; i &lt; state.stripeFiles.size(); ++i) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      String endRow = (i == state.stripeEndRows.length)<a name="line.522"></a>
-<span class="sourceLineNo">523</span>          ? "(end)" : "[" + Bytes.toString(state.stripeEndRows[i]) + "]";<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      sb.append("\n stripe ending in ")<a name="line.524"></a>
-<span class="sourceLineNo">525</span>          .append(endRow)<a name="line.525"></a>
-<span class="sourceLineNo">526</span>          .append(" with ")<a name="line.526"></a>
-<span class="sourceLineNo">527</span>          .append(state.stripeFiles.get(i).size())<a name="line.527"></a>
-<span class="sourceLineNo">528</span>          .append(<a name="line.528"></a>
-<span class="sourceLineNo">529</span>            " files: "<a name="line.529"></a>
-<span class="sourceLineNo">530</span>                + TraditionalBinaryPrefix.long2String(<a name="line.530"></a>
-<span class="sourceLineNo">531</span>                  StripeCompactionPolicy.getTotalFileSize(state.stripeFiles.get(i)), "", 1) + ";");<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    }<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    sb.append("\n").append(state.stripeFiles.size()).append(" stripes total.");<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    sb.append("\n").append(getStorefileCount()).append(" files total.");<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    LOG.debug(sb.toString());<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>  /**<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * Checks whether the key indicates an open interval boundary (i.e. infinity).<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  private static final boolean isOpen(byte[] key) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    return key != null &amp;&amp; key.length == 0;<a name="line.542"></a>
-<span class="sourceLineNo">543</span>  }<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>  private static final boolean isOpen(Cell key) {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    return key != null &amp;&amp; key.getRowLength() == 0;<a name="line.546"></a>
-<span class="sourceLineNo">547</span>  }<a name="line.547"></a>
-<span class="sourceLineNo">548</span><a name="line.548"></a>
-<span class="sourceLineNo">549</span>  /**<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * Checks whether the key is invalid (e.g. from an L0 file, or non-stripe-compacted files).<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   */<a name="line.551"></a>
-<span class="sourceLineNo">552</span>  private static final boolean isInvalid(byte[] key) {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    // No need to use Arrays.equals because INVALID_KEY is null<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    return key == INVALID_KEY;<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>  /**<a name="line.557"></a>
-<span class="sourceLineNo">558</span>   * Compare two keys for equality.<a name="line.558"></a>
-<span class="sourceLineNo">559</span>   */<a name="line.559"></a>
-<span class="sourceLineNo">560</span>  private final boolean rowEquals(byte[] k1, byte[] k2) {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    return Bytes.equals(k1, 0, k1.length, k2, 0, k2.length);<a name="line.561"></a>
-<span class="sourceLineNo">562</span>  }<a name="line.562"></a>
-<span class="sourceLineNo">563</span><a name="line.563"></a>
-<span class="sourceLineNo">564</span>  /**<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * Compare two keys. Keys must not be open (isOpen(row) == false).<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   */<a name="line.566"></a>
-<span class="sourceLineNo">567</span>  private final int nonOpenRowCompare(byte[] k1, byte[] k2) {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    assert !isOpen(k1) &amp;&amp; !isOpen(k2);<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    return Bytes.compareTo(k1, k2);<a name="line.569"></a>
-<span class="sourceLineNo">570</span>  }<a name="line.570"></a>
-<span class="sourceLineNo">571</span><a name="line.571"></a>
-<span class="sourceLineNo">572</span>  private final int nonOpenRowCompare(Cell k1, byte[] k2) {<a name="line.572"></a>
+<span class="sourceLineNo">511</span>  private void ensureLevel0Metadata(StoreFile sf) {<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    if (!isInvalid(startOf(sf))) this.fileStarts.put(sf, INVALID_KEY_IN_MAP);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    if (!isInvalid(endOf(sf))) this.fileEnds.put(sf, INVALID_KEY_IN_MAP);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>  }<a name="line.514"></a>
+<span class="sourceLineNo">515</span><a name="line.515"></a>
+<span class="sourceLineNo">516</span>  private void debugDumpState(String string) {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    if (!LOG.isDebugEnabled()) return;<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    StringBuilder sb = new StringBuilder();<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    sb.append("\n" + string + "; current stripe state is as such:");<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    sb.append("\n level 0 with ")<a name="line.520"></a>
+<span class="sourceLineNo">521</span>        .append(state.level0Files.size())<a name="line.521"></a>
+<span class="sourceLineNo">522</span>        .append(<a name="line.522"></a>
+<span class="sourceLineNo">523</span>          " files: "<a name="line.523"></a>
+<span class="sourceLineNo">524</span>              + TraditionalBinaryPrefix.long2String(<a name="line.524"></a>
+<span class="sourceLineNo">525</span>                StripeCompactionPolicy.getTotalFileSize(state.level0Files), "", 1) + ";");<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    for (int i = 0; i &lt; state.stripeFiles.size(); ++i) {<a name="line.526"></a>
+<span class="sourceLineNo">527</span>      String endRow = (i == state.stripeEndRows.length)<a name="line.527"></a>
+<span class="sourceLineNo">528</span>          ? "(end)" : "[" + Bytes.toString(state.stripeEndRows[i]) + "]";<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      sb.append("\n stripe ending in ")<a name="line.529"></a>
+<span class="sourceLineNo">530</span>          .append(endRow)<a name="line.530"></a>
+<span class="sourceLineNo">531</span>          .append(" with ")<a name="line.531"></a>
+<span class="sourceLineNo">532</span>          .append(state.stripeFiles.get(i).size())<a name="line.532"></a>
+<span class="sourceLineNo">533</span>          .append(<a name="line.533"></a>
+<span class="sourceLineNo">534</span>            " files: "<a name="line.534"></a>
+<span class="sourceLineNo">535</span>                + TraditionalBinaryPrefix.long2String(<a name="line.535"></a>
+<span class="sourceLineNo">536</span>                  StripeCompactionPolicy.getTotalFileSize(state.stripeFiles.get(i)), "", 1) + ";");<a name="line.536"></a>
+<span class="sourceLineNo">537</span>    }<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    sb.append("\n").append(state.stripeFiles.size()).append(" stripes total.");<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    sb.append("\n").append(getStorefileCount()).append(" files total.");<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    LOG.debug(sb.toString());<a name="line.540"></a>
+<span class="sourceLineNo">541</span>  }<a name="line.541"></a>
+<span class="sourceLineNo">542</span><a name="line.542"></a>
+<span class="sourceLineNo">543</span>  /**<a name="line.543"></a>
+<span class="sourceLineNo">544</span>   * Checks whether the key indicates an open interval boundary (i.e. infinity).<a name="line.544"></a>
+<span class="sourceLineNo">545</span>   */<a name="line.545"></a>
+<span class="sourceLineNo">546</span>  private static final boolean isOpen(byte[] key) {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>    return key != null &amp;&amp; key.length == 0;<a name="line.547"></a>
+<span class="sourceLineNo">548</span>  }<a name="line.548"></a>
+<span class="sourceLineNo">549</span><a name="line.549"></a>
+<span class="sourceLineNo">550</span>  private static final boolean isOpen(Cell key) {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    return key != null &amp;&amp; key.getRowLength() == 0;<a name="line.551"></a>
+<span class="sourceLineNo">552</span>  }<a name="line.552"></a>
+<span class="sourceLineNo">553</span><a name="line.553"></a>
+<span class="sourceLineNo">554</span>  /**<a name="line.554"></a>
+<span class="sourceLineNo">555</span>   * Checks whether the key is invalid (e.g. from an L0 file, or non-stripe-compacted files).<a name="line.555"></a>
+<span class="sourceLineNo">556</span>   */<a name="line.556"></a>
+<span class="sourceLineNo">557</span>  private static final boolean isInvalid(byte[] key) {<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    // No need to use Arrays.equals because INVALID_KEY is null<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    return key == INVALID_KEY;<a name="line.559"></a>
+<span class="sourceLineNo">560</span>  }<a name="line.560"></a>
+<span class="sourceLineNo">561</span><a name="line.561"></a>
+<span class="sourceLineNo">562</span>  /**<a name="line.562"></a>
+<span class="sourceLineNo">563</span>   * Compare two keys for equality.<a name="line.563"></a>
+<span class="sourceLineNo">564</span>   */<a name="line.564"></a>
+<span class="sourceLineNo">565</span>  private final boolean rowEquals(byte[] k1, byte[] k2) {<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    return Bytes.equals(k1, 0, k1.length, k2, 0, k2.length);<a name="line.566"></a>
+<span class="sourceLineNo">567</span>  }<a name="line.567"></a>
+<span class="sourceLineNo">568</span><a name="line.568"></a>
+<span class="sourceLineNo">569</span>  /**<a name="line.569"></a>
+<span class="sourceLineNo">570</span>   * Compare two keys. Keys must not be open (isOpen(row) == false).<a name="line.570"></a>
+<span class="sourceLineNo">571</span>   */<a name="line.571"></a>
+<span class="sourceLineNo">572</span>  private final int nonOpenRowCompare(byte[] k1, byte[] k2) {<a name="line.572"></a>
 <span class="sourceLineNo">573</span>    assert !isOpen(k1) &amp;&amp; !isOpen(k2);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    return cellComparator.compareRows(k1, k2, 0, k2.length);<a name="line.574"></a>
+<span class="sourceLineNo">574</span>    return Bytes.compar

<TRUNCATED>

[36/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html
index d262a1b..ea517b1 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":9,"i32":10,"i33":10,"i34":10,"i35":10,"i36":9,"i37":10,"i38":9,"i39":9,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":42,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":42,"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":42,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":41,"i91":41,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":10,"i109"
 :10,"i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":10,"i119":10,"i120":10,"i121":10,"i122":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":10,"i135":10,"i136":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":9,"i32":10,"i33":10,"i34":10,"i35":10,"i36":9,"i37":10,"i38":9,"i39":9,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":42,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":42,"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":42,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":41,"i93":41,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":10,"i109"
 :10,"i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":10,"i119":10,"i120":10,"i121":10,"i122":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":10,"i135":10,"i136":10,"i137":10,"i138":10,"i139":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";
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre><a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Private.html" title="annotation in org.apache.hadoop.hbase.classification">@InterfaceAudience.Private</a>
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.116">HStore</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.117">HStore</a>
 extends <a href="http://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/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></pre>
 <div class="block">A Store holds a column family in a Region.  Its a memstore and a set of zero
@@ -656,134 +656,142 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactedCellsSize--">getCompactedCellsSize</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i43" class="rowColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactedFiles--">getCompactedFiles</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i44" class="altColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactedFilesCount--">getCompactedFilesCount</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i45" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactionCheckMultiplier--">getCompactionCheckMultiplier</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i44" class="altColor">
+<tr id="i46" class="altColor">
 <td class="colFirst"><code>double</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactionPressure--">getCompactionPressure</a></span>()</code>
 <div class="block">This value can represent the degree of emergency of compaction for this store.</div>
 </td>
 </tr>
-<tr id="i45" class="rowColor">
+<tr id="i47" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionProgress.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionProgress</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactionProgress--">getCompactionProgress</a></span>()</code>
 <div class="block">getter for CompactionProgress object</div>
 </td>
 </tr>
-<tr id="i46" class="altColor">
+<tr id="i48" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactPriority--">getCompactPriority</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i47" class="rowColor">
+<tr id="i49" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="class in org.apache.hadoop.hbase">CellComparator</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getComparator--">getComparator</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i48" class="altColor">
+<tr id="i50" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.html" title="class in org.apache.hadoop.hbase.regionserver">RegionCoprocessorHost</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCoprocessorHost--">getCoprocessorHost</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i49" class="rowColor">
+<tr id="i51" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileDataBlockEncoder</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getDataBlockEncoder--">getDataBlockEncoder</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i50" class="altColor">
+<tr id="i52" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/HColumnDescriptor.html" title="class in org.apache.hadoop.hbase">HColumnDescriptor</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFamily--">getFamily</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i51" class="rowColor">
+<tr id="i53" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.fs.FileSystem</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFileSystem--">getFileSystem</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i52" class="altColor">
+<tr id="i54" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlushableSize--">getFlushableSize</a></span>()</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 </td>
 </tr>
-<tr id="i53" class="rowColor">
+<tr id="i55" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlushedCellsCount--">getFlushedCellsCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i54" class="altColor">
+<tr id="i56" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlushedCellsSize--">getFlushedCellsSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i55" class="rowColor">
+<tr id="i57" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlushedOutputFileSize--">getFlushedOutputFileSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i56" class="altColor">
+<tr id="i58" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getHFilesSize--">getHFilesSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i57" class="rowColor">
+<tr id="i59" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getHRegion--">getHRegion</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i58" class="altColor">
+<tr id="i60" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getLastCompactSize--">getLastCompactSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i59" class="rowColor">
+<tr id="i61" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMajorCompactedCellsCount--">getMajorCompactedCellsCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i60" class="altColor">
+<tr id="i62" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMajorCompactedCellsSize--">getMajorCompactedCellsSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i61" class="rowColor">
+<tr id="i63" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMaxMemstoreTS--">getMaxMemstoreTS</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i62" class="altColor">
+<tr id="i64" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMaxSequenceId--">getMaxSequenceId</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i63" class="rowColor">
+<tr id="i65" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMaxStoreFileAge--">getMaxStoreFileAge</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i64" class="altColor">
+<tr id="i66" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMemstoreFlushSize--">getMemstoreFlushSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i65" class="rowColor">
+<tr id="i67" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMemStoreSize--">getMemStoreSize</a></span>()</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 </td>
 </tr>
-<tr id="i66" class="altColor">
+<tr id="i68" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMinStoreFileAge--">getMinStoreFileAge</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i67" class="rowColor">
+<tr id="i69" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getNumHFiles--">getNumHFiles</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i68" class="altColor">
+<tr id="i70" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getNumReferenceFiles--">getNumReferenceFiles</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i69" class="rowColor">
+<tr id="i71" class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/OffPeakHours.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">OffPeakHours</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getOffPeakHours--">getOffPeakHours</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i70" class="altColor">
+<tr id="i72" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getRegionFileSystem--">getRegionFileSystem</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i71" class="rowColor">
+<tr id="i73" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getRegionInfo--">getRegionInfo</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i72" class="altColor">
+<tr id="i74" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanInfo--">getScanInfo</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i73" class="rowColor">
+<tr id="i75" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanner-org.apache.hadoop.hbase.client.Scan-java.util.NavigableSet-long-">getScanner</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
           <a href="http://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;byte[]&gt;&nbsp;targetCols,
@@ -791,7 +799,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <div class="block">Return a scanner for both the memstore and the HStore files.</div>
 </td>
 </tr>
-<tr id="i74" class="altColor">
+<tr id="i76" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanners-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-">getScanners</a></span>(boolean&nbsp;cacheBlocks,
            boolean&nbsp;usePread,
@@ -805,7 +813,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <div class="block">Get all scanners with no filtering based on TTL (that happens further down the line).</div>
 </td>
 </tr>
-<tr id="i75" class="rowColor">
+<tr id="i77" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanners-java.util.List-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-boolean-">getScanners</a></span>(<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;files,
            boolean&nbsp;cacheBlocks,
@@ -822,69 +830,69 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
  (that happens further down the line).</div>
 </td>
 </tr>
-<tr id="i76" class="altColor">
+<tr id="i78" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSize--">getSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i77" class="rowColor">
+<tr id="i79" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemstoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemstoreSize</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSizeOfMemStore--">getSizeOfMemStore</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i78" class="altColor">
+<tr id="i80" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemstoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemstoreSize</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSizeOfSnapshot--">getSizeOfSnapshot</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i79" class="rowColor">
+<tr id="i81" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemstoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemstoreSize</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSizeToFlush--">getSizeToFlush</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i80" class="altColor">
+<tr id="i82" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSmallestReadPoint--">getSmallestReadPoint</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i81" class="rowColor">
+<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/HStore.html#getSnapshotSize--">getSnapshotSize</a></span>()</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 </td>
 </tr>
-<tr id="i82" class="altColor">
+<tr id="i84" class="altColor">
 <td class="colFirst"><code>byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSplitPoint--">getSplitPoint</a></span>()</code>
 <div class="block">Determines if Store should be split</div>
 </td>
 </tr>
-<tr id="i83" class="rowColor">
+<tr id="i85" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">StoreEngine</a>&lt;?,?,?,?&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreEngine--">getStoreEngine</a></span>()</code>
 <div class="block">Returns the StoreEngine that is backing this concrete implementation of Store.</div>
 </td>
 </tr>
-<tr id="i84" class="altColor">
+<tr id="i86" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStorefiles--">getStorefiles</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i85" class="rowColor">
+<tr id="i87" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStorefilesCount--">getStorefilesCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i86" class="altColor">
+<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/HStore.html#getStorefilesIndexSize--">getStorefilesIndexSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i87" class="rowColor">
+<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/HStore.html#getStorefilesSize--">getStorefilesSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i88" class="altColor">
+<tr id="i90" class="altColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStorefilesSize-java.util.function.Predicate-">getStorefilesSize</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/function/Predicate.html?is-external=true" title="class or interface in java.util.function">Predicate</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;predicate)</code>&nbsp;</td>
 </tr>
-<tr id="i89" class="rowColor">
+<tr id="i91" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreFileTtl--">getStoreFileTtl</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i90" class="altColor">
+<tr id="i92" class="altColor">
 <td class="colFirst"><code>static org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreHomedir-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.HRegionInfo-byte:A-">getStoreHomedir</a></span>(org.apache.hadoop.fs.Path&nbsp;tabledir,
                <a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;hri,
@@ -892,7 +900,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 </td>
 </tr>
-<tr id="i91" class="rowColor">
+<tr id="i93" class="rowColor">
 <td class="colFirst"><code>static org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreHomedir-org.apache.hadoop.fs.Path-java.lang.String-byte:A-">getStoreHomedir</a></span>(org.apache.hadoop.fs.Path&nbsp;tabledir,
                <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;encodedName,
@@ -900,21 +908,21 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 </td>
 </tr>
-<tr id="i92" class="altColor">
+<tr id="i94" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreSizeUncompressed--">getStoreSizeUncompressed</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i93" class="rowColor">
+<tr id="i95" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getTableName--">getTableName</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i94" class="altColor">
+<tr id="i96" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getTotalStaticBloomSize--">getTotalStaticBloomSize</a></span>()</code>
 <div class="block">Returns the total byte size of all Bloom filter bit arrays.</div>
 </td>
 </tr>
-<tr id="i95" class="rowColor">
+<tr id="i97" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getTotalStaticIndexSize--">getTotalStaticIndexSize</a></span>()</code>
 <div class="block">Returns the total size of all index blocks in the data block indexes, including the root level,
@@ -922,38 +930,38 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
  single-level indexes.</div>
 </td>
 </tr>
-<tr id="i96" class="altColor">
+<tr id="i98" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#hasReferences--">hasReferences</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i97" class="rowColor">
+<tr id="i99" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#hasTooManyStoreFiles--">hasTooManyStoreFiles</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i98" class="altColor">
+<tr id="i100" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#heapSize--">heapSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i99" class="rowColor">
+<tr id="i101" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#isMajorCompaction--">isMajorCompaction</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i100" class="altColor">
+<tr id="i102" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#isPrimaryReplicaStore--">isPrimaryReplicaStore</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i101" class="rowColor">
+<tr id="i103" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#isSloppyMemstore--">isSloppyMemstore</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i102" class="altColor">
+<tr id="i104" class="altColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#loadStoreFiles--">loadStoreFiles</a></span>()</code>
 <div class="block">Creates an unsorted list of StoreFile loaded in parallel
  from the given directory.</div>
 </td>
 </tr>
-<tr id="i103" class="rowColor">
+<tr id="i105" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#logCompactionEndMessage-org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest-java.util.List-long-long-">logCompactionEndMessage</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionRequest</a>&nbsp;cr,
                        <a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;sfs,
@@ -962,49 +970,65 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <div class="block">Log a very elaborate compaction completion message.</div>
 </td>
 </tr>
-<tr id="i104" class="altColor">
+<tr id="i106" class="altColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#moveCompatedFilesIntoPlace-org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest-java.util.List-org.apache.hadoop.hbase.security.User-">moveCompatedFilesIntoPlace</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionRequest</a>&nbsp;cr,
                           <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&nbsp;newFiles,
                           <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
 </tr>
-<tr id="i105" class="rowColor">
+<tr id="i107" class="rowColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#moveFileIntoPlace-org.apache.hadoop.fs.Path-">moveFileIntoPlace</a></span>(org.apache.hadoop.fs.Path&nbsp;newFile)</code>&nbsp;</td>
 </tr>
-<tr id="i106" class="altColor">
+<tr id="i108" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#needsCompaction--">needsCompaction</a></span>()</code>
 <div class="block">See if there's too much store files in this store</div>
 </td>
 </tr>
-<tr id="i107" class="rowColor">
+<tr id="i109" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#notifyChangedReadersObservers-java.util.List-">notifyChangedReadersObservers</a></span>(<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;sfs)</code>&nbsp;</td>
 </tr>
-<tr id="i108" class="altColor">
+<tr id="i110" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#onConfigurationChange-org.apache.hadoop.conf.Configuration-">onConfigurationChange</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
 <div class="block">This method would be called by the <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html" title="class in org.apache.hadoop.hbase.conf"><code>ConfigurationManager</code></a>
  object when the <code>Configuration</code> object is reloaded from disk.</div>
 </td>
 </tr>
-<tr id="i109" class="rowColor">
+<tr id="i111" class="rowColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#openStoreFiles-java.util.Collection-">openStoreFiles</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&gt;&nbsp;files)</code>&nbsp;</td>
 </tr>
-<tr id="i110" class="altColor">
+<tr id="i112" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#preBulkLoadHFile-java.lang.String-long-">preBulkLoadHFile</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;srcPathStr,
                 long&nbsp;seqNum)</code>
 <div class="block">This method should only be called from Region.</div>
 </td>
 </tr>
-<tr id="i111" class="rowColor">
+<tr id="i113" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#preFlushSeqIDEstimation--">preFlushSeqIDEstimation</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i112" class="altColor">
+<tr id="i114" class="altColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#recreateScanners-java.util.List-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-boolean-">recreateScanners</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;currentFileScanners,
+                boolean&nbsp;cacheBlocks,
+                boolean&nbsp;usePread,
+                boolean&nbsp;isCompaction,
+                <a href="../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">ScanQueryMatcher</a>&nbsp;matcher,
+                byte[]&nbsp;startRow,
+                boolean&nbsp;includeStartRow,
+                byte[]&nbsp;stopRow,
+                boolean&nbsp;includeStopRow,
+                long&nbsp;readPt,
+                boolean&nbsp;includeMemstoreScanner)</code>
+<div class="block">Recreates the scanners on the current list of active store file scanners</div>
+</td>
+</tr>
+<tr id="i115" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#refreshStoreFiles--">refreshStoreFiles</a></span>()</code>
 <div class="block">Checks the underlying store files, and opens the files that  have not
@@ -1012,13 +1036,13 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
  available.</div>
 </td>
 </tr>
-<tr id="i113" class="rowColor">
+<tr id="i116" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#refreshStoreFiles-java.util.Collection-">refreshStoreFiles</a></span>(<a href="http://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="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;newFiles)</code>
 <div class="block">Replaces the store files that the store has with the given files.</div>
 </td>
 </tr>
-<tr id="i114" class="altColor">
+<tr id="i117" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#refreshStoreFilesInternal-java.util.Collection-">refreshStoreFilesInternal</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&gt;&nbsp;newFiles)</code>
 <div class="block">Checks the underlying store files, and opens the files that  have not
@@ -1026,28 +1050,28 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
  available.</div>
 </td>
 </tr>
-<tr id="i115" class="rowColor">
+<tr id="i118" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#registerChildren-org.apache.hadoop.hbase.conf.ConfigurationManager-">registerChildren</a></span>(<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html" title="class in org.apache.hadoop.hbase.conf">ConfigurationManager</a>&nbsp;manager)</code>
 <div class="block">Needs to be called to register the children to the manager.</div>
 </td>
 </tr>
-<tr id="i116" class="altColor">
+<tr id="i119" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#removeCompactedfiles-java.util.Collection-">removeCompactedfiles</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;compactedfiles)</code>
 <div class="block">Archives and removes the compacted files</div>
 </td>
 </tr>
-<tr id="i117" class="rowColor">
+<tr id="i120" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#removeUnneededFiles--">removeUnneededFiles</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i118" class="altColor">
+<tr id="i121" class="rowColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#replaceStoreFiles-java.util.Collection-java.util.Collection-">replaceStoreFiles</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;compactedFiles,
                  <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;result)</code>&nbsp;</td>
 </tr>
-<tr id="i119" class="rowColor">
+<tr id="i122" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#replayCompactionMarker-org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescriptor-boolean-boolean-">replayCompactionMarker</a></span>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescriptor&nbsp;compaction,
                       boolean&nbsp;pickCompactionFiles,
@@ -1055,77 +1079,77 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <div class="block">Call to complete a compaction.</div>
 </td>
 </tr>
-<tr id="i120" class="altColor">
+<tr id="i123" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#requestCompaction--">requestCompaction</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i121" class="rowColor">
+<tr id="i124" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#requestCompaction-int-org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest-">requestCompaction</a></span>(int&nbsp;priority,
                  <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionRequest</a>&nbsp;baseRequest)</code>&nbsp;</td>
 </tr>
-<tr id="i122" class="altColor">
+<tr id="i125" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#requestCompaction-int-org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest-org.apache.hadoop.hbase.security.User-">requestCompaction</a></span>(int&nbsp;priority,
                  <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionRequest</a>&nbsp;baseRequest,
                  <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
 </tr>
-<tr id="i123" class="rowColor">
+<tr id="i126" class="altColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#setDataBlockEncoderInTest-org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoder-">setDataBlockEncoderInTest</a></span>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileDataBlockEncoder</a>&nbsp;blockEncoder)</code>
 <div class="block">Should be used only in tests.</div>
 </td>
 </tr>
-<tr id="i124" class="altColor">
+<tr id="i127" class="rowColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#setScanInfo-org.apache.hadoop.hbase.regionserver.ScanInfo-">setScanInfo</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;scanInfo)</code>
 <div class="block">Set scan info, used by test</div>
 </td>
 </tr>
-<tr id="i125" class="rowColor">
+<tr id="i128" class="altColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#snapshot--">snapshot</a></span>()</code>
 <div class="block">Snapshot this stores memstore.</div>
 </td>
 </tr>
-<tr id="i126" class="altColor">
+<tr id="i129" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#startReplayingFromWAL--">startReplayingFromWAL</a></span>()</code>
 <div class="block">This message intends to inform the MemStore that next coming updates
  are going to be part of the replaying edits from WAL</div>
 </td>
 </tr>
-<tr id="i127" class="rowColor">
+<tr id="i130" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#stopReplayingFromWAL--">stopReplayingFromWAL</a></span>()</code>
 <div class="block">This message intends to inform the MemStore that the replaying edits from WAL
  are done</div>
 </td>
 </tr>
-<tr id="i128" class="altColor">
+<tr id="i131" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#throttleCompaction-long-">throttleCompaction</a></span>(long&nbsp;compactionSize)</code>&nbsp;</td>
 </tr>
-<tr id="i129" class="rowColor">
+<tr id="i132" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#timeOfOldestEdit--">timeOfOldestEdit</a></span>()</code>
 <div class="block">When was the last edit done in the memstore</div>
 </td>
 </tr>
-<tr id="i130" class="altColor">
+<tr id="i133" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#toString--">toString</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i131" class="rowColor">
+<tr id="i134" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#triggerMajorCompaction--">triggerMajorCompaction</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i132" class="altColor">
+<tr id="i135" class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#updateStorefiles-java.util.List-long-">updateStorefiles</a></span>(<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;sfs,
                 long&nbsp;snapshotId)</code>&nbsp;</td>
 </tr>
-<tr id="i133" class="rowColor">
+<tr id="i136" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#upsert-java.lang.Iterable-long-org.apache.hadoop.hbase.regionserver.MemstoreSize-">upsert</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cells,
       long&nbsp;readpoint,
@@ -1133,17 +1157,17 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <div class="block">Adds or replaces the specified KeyValues.</div>
 </td>
 </tr>
-<tr id="i134" class="altColor">
+<tr id="i137" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#validateStoreFile-org.apache.hadoop.fs.Path-">validateStoreFile</a></span>(org.apache.hadoop.fs.Path&nbsp;path)</code>
 <div class="block">Validates a store file by opening and closing it.</div>
 </td>
 </tr>
-<tr id="i135" class="rowColor">
+<tr id="i138" class="altColor">
 <td class="colFirst"><code>(package private) int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#versionsToReturn-int-">versionsToReturn</a></span>(int&nbsp;wantedVersions)</code>&nbsp;</td>
 </tr>
-<tr id="i136" class="altColor">
+<tr id="i139" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#writeCompactionWalRecord-java.util.Collection-java.util.Collection-">writeCompactionWalRecord</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;filesCompacted,
                         <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;newFiles)</code>
@@ -1185,7 +1209,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>MEMSTORE_CLASS_NAME</h4>
-<pre>public static final&nbsp;<a href="http://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/HStore.html#line.117">MEMSTORE_CLASS_NAME</a></pre>
+<pre>public static final&nbsp;<a href="http://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/HStore.html#line.118">MEMSTORE_CLASS_NAME</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HStore.MEMSTORE_CLASS_NAME">Constant Field Values</a></dd>
@@ -1198,7 +1222,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>COMPACTCHECKER_INTERVAL_MULTIPLIER_KEY</h4>
-<pre>public static final&nbsp;<a href="http://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/HStore.html#line.118">COMPACTCHECKER_INTERVAL_MULTIPLIER_KEY</a></pre>
+<pre>public static final&nbsp;<a href="http://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/HStore.html#line.119">COMPACTCHECKER_INTERVAL_MULTIPLIER_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HStore.COMPACTCHECKER_INTERVAL_MULTIPLIER_KEY">Constant Field Values</a></dd>
@@ -1211,7 +1235,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>BLOCKING_STOREFILES_KEY</h4>
-<pre>public static final&nbsp;<a href="http://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/HStore.html#line.120">BLOCKING_STOREFILES_KEY</a></pre>
+<pre>public static final&nbsp;<a href="http://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/HStore.html#line.121">BLOCKING_STOREFILES_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HStore.BLOCKING_STOREFILES_KEY">Constant Field Values</a></dd>
@@ -1224,7 +1248,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>BLOCK_STORAGE_POLICY_KEY</h4>
-<pre>public static final&nbsp;<a href="http://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/HStore.html#line.121">BLOCK_STORAGE_POLICY_KEY</a></pre>
+<pre>public static final&nbsp;<a href="http://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/HStore.html#line.122">BLOCK_STORAGE_POLICY_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HStore.BLOCK_STORAGE_POLICY_KEY">Constant Field Values</a></dd>
@@ -1237,7 +1261,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_BLOCK_STORAGE_POLICY</h4>
-<pre>public static final&nbsp;<a href="http://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/HStore.html#line.123">DEFAULT_BLOCK_STORAGE_POLICY</a></pre>
+<pre>public static final&nbsp;<a href="http://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/HStore.html#line.124">DEFAULT_BLOCK_STORAGE_POLICY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HStore.DEFAULT_BLOCK_STORAGE_POLICY">Constant Field Values</a></dd>
@@ -1250,7 +1274,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.124">DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.125">DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HStore.DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER">Constant Field Values</a></dd>
@@ -1263,7 +1287,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_BLOCKING_STOREFILE_COUNT</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.125">DEFAULT_BLOCKING_STOREFILE_COUNT</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.126">DEFAULT_BLOCKING_STOREFILE_COUNT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HStore.DEFAULT_BLOCKING_STOREFILE_COUNT">Constant Field Values</a></dd>
@@ -1276,7 +1300,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.127">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.128">LOG</a></pre>
 </li>
 </ul>
 <a name="memstore">
@@ -1285,7 +1309,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>memstore</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.129">memstore</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.130">memstore</a></pre>
 </li>
 </ul>
 <a name="region">
@@ -1294,7 +1318,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <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/HStore.html#line.131">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/HStore.html#line.132">region</a></pre>
 </li>
 </ul>
 <a name="family">
@@ -1303,7 +1327,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>family</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HColumnDescriptor.html" title="class in org.apache.hadoop.hbase">HColumnDescriptor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.132">family</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HColumnDescriptor.html" title="class in org.apache.hadoop.hbase">HColumnDescriptor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.133">family</a></pre>
 </li>
 </ul>
 <a name="fs">
@@ -1312,7 +1336,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>fs</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.133">fs</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.134">fs</a></pre>
 </li>
 </ul>
 <a name="conf">
@@ -1321,7 +1345,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>conf</h4>
-<pre>protected&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.134">conf</a></pre>
+<pre>protected&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.135">conf</a></pre>
 </li>
 </ul>
 <a name="cacheConf">
@@ -1330,7 +1354,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheConf</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.135">cacheConf</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.136">cacheConf</a></pre>
 </li>
 </ul>
 <a name="lastCompactSize">
@@ -1339,7 +1363,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>lastCompactSize</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.136">lastCompactSize</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.137">lastCompactSize</a></pre>
 </li>
 </ul>
 <a name="forceMajor">
@@ -1348,7 +1372,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>forceMajor</h4>
-<pre>volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.137">forceMajor</a></pre>
+<pre>volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.138">forceMajor</a></pre>
 </li>
 </ul>
 <a name="closeCheckInterval">
@@ -1357,7 +1381,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>closeCheckInterval</h4>
-<pre>static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.139">closeCheckInterval</a></pre>
+<pre>static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.140">closeCheckInterval</a></pre>
 </li>
 </ul>
 <a name="storeSize">
@@ -1366,7 +1390,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>storeSize</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.140">storeSize</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.141">storeSize</a></pre>
 </li>
 </ul>
 <a name="totalUncompressedBytes">
@@ -1375,7 +1399,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>totalUncompressedBytes</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.141">totalUncompressedBytes</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.142">totalUncompressedBytes</a></pre>
 </li>
 </ul>
 <a name="lock">
@@ -1384,7 +1408,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>lock</h4>
-<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantReadWriteLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.152">lock</a></pre>
+<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantReadWriteLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.153">lock</a></pre>
 <div class="block">RWLock for store operations.
  Locked in shared mode when the list of component stores is looked at:
    - all reads/writes to table data
@@ -1400,7 +1424,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>archiveLock</h4>
-<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.164">archiveLock</a></pre>
+<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.165">archiveLock</a></pre>
 <div class="block">Lock specific to archiving compacted store files.  This avoids races around
  the combination of retrieving the list of compacted files and moving them to
  the archive directory.  Since this is usually a background process (other than
@@ -1418,7 +1442,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyBulkLoads</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.166">verifyBulkLoads</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.167">verifyBulkLoads</a></pre>
 </li>
 </ul>
 <a name="scanInfo">
@@ -1427,7 +1451,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>scanInfo</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.168">scanInfo</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.169">scanInfo</a></pre>
 </li>
 </ul>
 <a name="filesCompacting">
@@ -1436,7 +1460,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>filesCompacting</h4>
-<pre>final&nbsp;<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.171">filesCompacting</a></pre>
+<pre>final&nbsp;<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.172">filesCompacting</a></pre>
 </li>
 </ul>
 <a name="changedReaderObservers">
@@ -1445,7 +1469,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>changedReaderObservers</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChangedReadersObserver.html" title="interface in org.apache.hadoop.hbase.regionserver">ChangedReadersObserver</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.174">changedReaderObservers</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChangedReadersObserver.html" title="interface in org.apache.hadoop.hbase.regionserver">ChangedReadersObserver</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.175">changedReaderObservers</a></pre>
 </li>
 </ul>
 <a name="blocksize">
@@ -1454,7 +1478,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>blocksize</h4>
-<pre>protected final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.177">blocksize</a></pre>
+<pre>protected final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.178">blocksize</a></pre>
 </li>
 </ul>
 <a name="dataBlockEncoder">
@@ -1463,7 +1487,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>dataBlockEncoder</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileDataBlockEncoder</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.178">dataBlockEncoder</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileDataBlockEncoder</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.179">dataBlockEncoder</a></pre>
 </li>
 </ul>
 <a name="checksumType">
@@ -1472,7 +1496,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>checksumType</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util">ChecksumType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.181">checksumType</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util">ChecksumType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.182">checksumType</a></pre>
 <div class="block">Checksum configuration</div>
 </li>
 </ul>
@@ -1482,7 +1506,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>bytesPerChecksum</h4>
-<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.182">bytesPerChecksum</a></pre>
+<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.183">bytesPerChecksum</a></pre>
 </li>
 </ul>
 <a name="comparator">
@@ -1491,7 +1515,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>comparator</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="class in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.185">comparator</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="class in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.186">comparator</a></pre>
 </li>
 </ul>
 <a name="storeEngine">
@@ -1500,7 +1524,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>storeEngine</h4>
-<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">StoreEngine</a>&lt;?,?,?,?&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.187">storeEngine</a></pre>
+<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">StoreEngine</a>&lt;?,?,?,?&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.188">storeEngine</a></pre>
 </li>
 </ul>
 <a name="offPeakCompactionTracker">
@@ -1509,7 +1533,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>offPeakCompactionTracker</h4>
-<pre>private static final&nbsp;<a href="http://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/HStore.html#line.189">offPeakCompactionTracker</a></pre>
+<pre>private static final&nbsp;<a href="http://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/HStore.html#line.190">offPeakCompactionTracker</a></pre>
 </li>
 </ul>
 <a name="offPeakHours">
@@ -1518,7 +1542,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>offPeakHours</h4>
-<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/OffPeakHours.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">OffPeakHours</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.190">offPeakHours</a></pre>
+<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/OffPeakHours.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">OffPeakHours</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.191">offPeakHours</a></pre>
 </li>
 </ul>
 <a name="DEFAULT_FLUSH_RETRIES_NUMBER">
@@ -1527,7 +1551,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_FLUSH_RETRIES_NUMBER</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.192">DEFAULT_FLUSH_RETRIES_NUMBER</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.193">DEFAULT_FLUSH_RETRIES_NUMBER</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HStore.DEFAULT_FLUSH_RETRIES_NUMBER">Constant Field Values</a></dd>
@@ -1540,7 +1564,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>flushRetriesNumber</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.193">flushRetriesNumber</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.194">flushRetriesNumber</a></pre>
 </li>
 </ul>
 <a name="pauseTime">
@@ -1549,7 +1573,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>pauseTime</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.194">pauseTime</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.195">pauseTime</a></pre>
 </li>
 </ul>
 <a name="blockingFileCount">
@@ -1558,7 +1582,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>blockingFileCount</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.196">blockingFileCount</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.197">blockingFileCount</a></pre>
 </li>
 </ul>
 <a name="compactionCheckMultiplier">
@@ -1567,7 +1591,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>compactionCheckMultiplier</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.197">compactionCheckMultiplier</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.198">compactionCheckMultiplier</a></pre>
 </li>
 </ul>
 <a name="cryptoContext">
@@ -1576,7 +1600,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>cryptoContext</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/crypto/Encryption.Context.html" title="class in org.apache.hadoop.hbase.io.crypto">Encryption.Context</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.198">cryptoContext</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/crypto/Encryption.Context.html" title="class in org.apache.hadoop.hbase.io.crypto">Encryption.Context</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.199">cryptoContext</a></pre>
 </li>
 </ul>
 <a name="flushedCellsCount">
@@ -1585,7 +1609,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>flushedCellsCount</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.200">flushedCellsCount</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.201">flushedCellsCount</a></pre>
 </li>
 </ul>
 <a name="compactedCellsCount">
@@ -1594,7 +1618,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>compactedCellsCount</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.201">compactedCellsCount</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.202">compactedCellsCount</a></pre>
 </li>
 </ul>
 <a name="majorCompactedCellsCount">
@@ -1603,7 +1627,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>majorCompactedCellsCount</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.202">majorCompactedCellsCount</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.203">majorCompactedCellsCount</a></pre>
 </li>
 </ul>
 <a name="flushedCellsSize">
@@ -1612,7 +1636,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>flushedCellsSize</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.203">flushedCellsSize</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.204">flushedCellsSize</a></pre>
 </li>
 </ul>
 <a name="flushedOutputFileSize">
@@ -1621,7 +1645,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>flushedOutputFileSize</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.204">flushedOutputFileSize</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.205">flushedOutputFileSize</a></pre>
 </li>
 </ul>
 <a name="compactedCellsSize">
@@ -1630,7 +1654,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>compactedCellsSize</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.205">compactedCellsSize</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.206">compactedCellsSize</a></pre>
 </li>
 </ul>
 <a name="majorCompactedCellsSize">
@@ -1639,7 +1663,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>majorCompactedCellsSize</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.206">majorCompactedCellsSize</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.207">majorCompactedCellsSize</a></pre>
 </li>
 </ul>
 <a name="FIXED_OVERHEAD">
@@ -1648,7 +1672,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>FIXED_OVERHEAD</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2317">FIXED_OVERHEAD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2363">FIXED_OVERHEAD</a></pre>
 </li>
 </ul>
 <a name="DEEP_OVERHEAD">
@@ -1657,7 +1681,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DEEP_OVERHEAD</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2321">DEEP_OVERHEAD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2367">DEEP_OVERHEAD</a></pre>
 </li>
 </ul>
 </li>
@@ -1674,7 +1698,7

<TRUNCATED>

[15/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStore.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStore.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStore.html
index 36fb94f..cd732c3 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStore.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStore.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1346">TestStore.MyCompactingMemStore</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1456">TestStore.MyCompactingMemStore</a>
 extends org.apache.hadoop.hbase.regionserver.CompactingMemStore</pre>
 </li>
 </ul>
@@ -259,7 +259,7 @@ extends org.apache.hadoop.hbase.regionserver.CompactingMemStore</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>START_TEST</h4>
-<pre>private static final&nbsp;<a href="http://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/TestStore.MyCompactingMemStore.html#line.1347">START_TEST</a></pre>
+<pre>private static final&nbsp;<a href="http://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/TestStore.MyCompactingMemStore.html#line.1457">START_TEST</a></pre>
 </li>
 </ul>
 <a name="getScannerLatch">
@@ -268,7 +268,7 @@ extends org.apache.hadoop.hbase.regionserver.CompactingMemStore</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getScannerLatch</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStore.html#line.1348">getScannerLatch</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStore.html#line.1458">getScannerLatch</a></pre>
 </li>
 </ul>
 <a name="snapshotLatch">
@@ -277,7 +277,7 @@ extends org.apache.hadoop.hbase.regionserver.CompactingMemStore</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>snapshotLatch</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStore.html#line.1349">snapshotLatch</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStore.html#line.1459">snapshotLatch</a></pre>
 </li>
 </ul>
 </li>
@@ -294,7 +294,7 @@ extends org.apache.hadoop.hbase.regionserver.CompactingMemStore</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MyCompactingMemStore</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStore.html#line.1350">MyCompactingMemStore</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStore.html#line.1460">MyCompactingMemStore</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                             org.apache.hadoop.hbase.CellComparator&nbsp;c,
                             org.apache.hadoop.hbase.regionserver.HStore&nbsp;store,
                             org.apache.hadoop.hbase.regionserver.RegionServicesForStores&nbsp;regionServices,
@@ -320,7 +320,7 @@ extends org.apache.hadoop.hbase.regionserver.CompactingMemStore</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>createList</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.regionserver.KeyValueScanner&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStore.html#line.1357">createList</a>(int&nbsp;capacity)</pre>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.regionserver.KeyValueScanner&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStore.html#line.1467">createList</a>(int&nbsp;capacity)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code>createList</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.regionserver.CompactingMemStore</code></dd>
@@ -333,7 +333,7 @@ extends org.apache.hadoop.hbase.regionserver.CompactingMemStore</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>pushActiveToPipeline</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStore.html#line.1369">pushActiveToPipeline</a>(org.apache.hadoop.hbase.regionserver.MutableSegment&nbsp;active)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStore.html#line.1479">pushActiveToPipeline</a>(org.apache.hadoop.hbase.regionserver.MutableSegment&nbsp;active)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code>pushActiveToPipeline</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.regionserver.CompactingMemStore</code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStoreWithCustomCompactor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStoreWithCustomCompactor.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStoreWithCustomCompactor.html
index 15bc600..0c90550 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStoreWithCustomCompactor.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStoreWithCustomCompactor.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1323">TestStore.MyCompactingMemStoreWithCustomCompactor</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1433">TestStore.MyCompactingMemStoreWithCustomCompactor</a>
 extends org.apache.hadoop.hbase.regionserver.CompactingMemStore</pre>
 </li>
 </ul>
@@ -251,7 +251,7 @@ extends org.apache.hadoop.hbase.regionserver.CompactingMemStore</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RUNNER_COUNT</h4>
-<pre>private static final&nbsp;<a href="http://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/TestStore.MyCompactingMemStoreWithCustomCompactor.html#line.1324">RUNNER_COUNT</a></pre>
+<pre>private static final&nbsp;<a href="http://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/TestStore.MyCompactingMemStoreWithCustomCompactor.html#line.1434">RUNNER_COUNT</a></pre>
 </li>
 </ul>
 </li>
@@ -268,7 +268,7 @@ extends org.apache.hadoop.hbase.regionserver.CompactingMemStore</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MyCompactingMemStoreWithCustomCompactor</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStoreWithCustomCompactor.html#line.1325">MyCompactingMemStoreWithCustomCompactor</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStoreWithCustomCompactor.html#line.1435">MyCompactingMemStoreWithCustomCompactor</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                org.apache.hadoop.hbase.CellComparator&nbsp;c,
                                                org.apache.hadoop.hbase.regionserver.HStore&nbsp;store,
                                                org.apache.hadoop.hbase.regionserver.RegionServicesForStores&nbsp;regionServices,
@@ -294,7 +294,7 @@ extends org.apache.hadoop.hbase.regionserver.CompactingMemStore</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>createMemStoreCompactor</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.regionserver.MemStoreCompactor&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStoreWithCustomCompactor.html#line.1332">createMemStoreCompactor</a>(org.apache.hadoop.hbase.MemoryCompactionPolicy&nbsp;compactionPolicy)</pre>
+<pre>protected&nbsp;org.apache.hadoop.hbase.regionserver.MemStoreCompactor&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStoreWithCustomCompactor.html#line.1442">createMemStoreCompactor</a>(org.apache.hadoop.hbase.MemoryCompactionPolicy&nbsp;compactionPolicy)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code>createMemStoreCompactor</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.regionserver.CompactingMemStore</code></dd>
@@ -307,7 +307,7 @@ extends org.apache.hadoop.hbase.regionserver.CompactingMemStore</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>shouldFlushInMemory</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStoreWithCustomCompactor.html#line.1337">shouldFlushInMemory</a>()</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyCompactingMemStoreWithCustomCompactor.html#line.1447">shouldFlushInMemory</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code>shouldFlushInMemory</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.regionserver.CompactingMemStore</code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html
index 0f271b9..fa82bdd 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1384">TestStore.MyList</a>&lt;T&gt;
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1494">TestStore.MyList</a>&lt;T&gt;
 extends <a href="http://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="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;T&gt;</pre>
 </li>
@@ -323,7 +323,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockList">
 <li class="blockList">
 <h4>delegatee</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.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/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1385">delegatee</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.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/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1495">delegatee</a></pre>
 </li>
 </ul>
 <a name="hookAtAdd">
@@ -332,7 +332,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>hookAtAdd</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/function/Consumer.html?is-external=true" title="class or interface in java.util.function">Consumer</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1386">hookAtAdd</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/function/Consumer.html?is-external=true" title="class or interface in java.util.function">Consumer</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1496">hookAtAdd</a></pre>
 </li>
 </ul>
 </li>
@@ -349,7 +349,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MyList</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1387">MyList</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/function/Consumer.html?is-external=true" title="class or interface in java.util.function">Consumer</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;hookAtAdd)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1497">MyList</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/function/Consumer.html?is-external=true" title="class or interface in java.util.function">Consumer</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;hookAtAdd)</pre>
 </li>
 </ul>
 </li>
@@ -366,7 +366,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockList">
 <li class="blockList">
 <h4>size</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1391">size</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1501">size</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true#size--" title="class or interface in java.util">size</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;</code></dd>
@@ -381,7 +381,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isEmpty</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1394">isEmpty</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1504">isEmpty</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true#isEmpty--" title="class or interface in java.util">isEmpty</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;</code></dd>
@@ -396,7 +396,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockList">
 <li class="blockList">
 <h4>contains</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1397">contains</a>(<a href="http://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)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1507">contains</a>(<a href="http://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)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true#contains-java.lang.Object-" title="class or interface in java.util">contains</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;</code></dd>
@@ -411,7 +411,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockList">
 <li class="blockList">
 <h4>iterator</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1400">iterator</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1510">iterator</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#iterator--" title="class or interface in java.lang">iterator</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;</code></dd>
@@ -428,7 +428,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockList">
 <li class="blockList">
 <h4>toArray</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1403">toArray</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1513">toArray</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true#toArray--" title="class or interface in java.util">toArray</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;</code></dd>
@@ -445,7 +445,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockList">
 <li class="blockList">
 <h4>toArray</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1406">toArray</a>(T[]&nbsp;a)</pre>
+<pre>public&nbsp;&lt;T&gt;&nbsp;T[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1516">toArray</a>(T[]&nbsp;a)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true#toArray-T:A-" title="class or interface in java.util">toArray</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;</code></dd>
@@ -462,7 +462,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1409">add</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&nbsp;e)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1519">add</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&nbsp;e)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true#add-E-" title="class or interface in java.util">add</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;</code></dd>
@@ -477,7 +477,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockList">
 <li class="blockList">
 <h4>remove</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1415">remove</a>(<a href="http://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)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1525">remove</a>(<a href="http://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)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true#remove-java.lang.Object-" title="class or interface in java.util">remove</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;</code></dd>
@@ -492,7 +492,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockList">
 <li class="blockList">
 <h4>containsAll</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1418">containsAll</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;?&gt;&nbsp;c)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1528">containsAll</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;?&gt;&nbsp;c)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true#containsAll-java.util.Collection-" title="class or interface in java.util">containsAll</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;</code></dd>
@@ -507,7 +507,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockList">
 <li class="blockList">
 <h4>addAll</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1421">addAll</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;&nbsp;c)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1531">addAll</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;&nbsp;c)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true#addAll-java.util.Collection-" title="class or interface in java.util">addAll</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;</code></dd>
@@ -522,7 +522,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockList">
 <li class="blockList">
 <h4>addAll</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1424">addAll</a>(int&nbsp;index,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1534">addAll</a>(int&nbsp;index,
                       <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;&nbsp;c)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -536,7 +536,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockList">
 <li class="blockList">
 <h4>removeAll</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1427">removeAll</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;?&gt;&nbsp;c)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1537">removeAll</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;?&gt;&nbsp;c)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true#removeAll-java.util.Collection-" title="class or interface in java.util">removeAll</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;</code></dd>
@@ -551,7 +551,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockList">
 <li class="blockList">
 <h4>retainAll</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1430">retainAll</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;?&gt;&nbsp;c)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1540">retainAll</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;?&gt;&nbsp;c)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true#retainAll-java.util.Collection-" title="class or interface in java.util">retainAll</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;</code></dd>
@@ -566,7 +566,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockList">
 <li class="blockList">
 <h4>clear</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1433">clear</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1543">clear</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true#clear--" title="class or interface in java.util">clear</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;</code></dd>
@@ -581,7 +581,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1436">get</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1546">get</a>(int&nbsp;index)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true#get-int-" title="class or interface in java.util">get</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.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/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;</code></dd>
@@ -596,7 +596,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockList">
 <li class="blockList">
 <h4>set</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1439">set</a>(int&nbsp;index,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1549">set</a>(int&nbsp;index,
              <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&nbsp;element)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -612,7 +612,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1442">add</a>(int&nbsp;index,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1552">add</a>(int&nbsp;index,
                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&nbsp;element)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -626,7 +626,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockList">
 <li class="blockList">
 <h4>remove</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1445">remove</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1555">remove</a>(int&nbsp;index)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true#remove-int-" title="class or interface in java.util">remove</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.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/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;</code></dd>
@@ -639,7 +639,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockList">
 <li class="blockList">
 <h4>indexOf</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1448">indexOf</a>(<a href="http://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)</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1558">indexOf</a>(<a href="http://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)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true#indexOf-java.lang.Object-" title="class or interface in java.util">indexOf</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.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/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;</code></dd>
@@ -652,7 +652,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockList">
 <li class="blockList">
 <h4>lastIndexOf</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1451">lastIndexOf</a>(<a href="http://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)</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1561">lastIndexOf</a>(<a href="http://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)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true#lastIndexOf-java.lang.Object-" title="class or interface in java.util">lastIndexOf</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.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/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;</code></dd>
@@ -665,7 +665,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockList">
 <li class="blockList">
 <h4>listIterator</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ListIterator.html?is-external=true" title="class or interface in java.util">ListIterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1454">listIterator</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ListIterator.html?is-external=true" title="class or interface in java.util">ListIterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1564">listIterator</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true#listIterator--" title="class or interface in java.util">listIterator</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.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/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;</code></dd>
@@ -678,7 +678,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockList">
 <li class="blockList">
 <h4>listIterator</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ListIterator.html?is-external=true" title="class or interface in java.util">ListIterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1457">listIterator</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ListIterator.html?is-external=true" title="class or interface in java.util">ListIterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1567">listIterator</a>(int&nbsp;index)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true#listIterator-int-" title="class or interface in java.util">listIterator</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.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/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;</code></dd>
@@ -691,7 +691,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>subList</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.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/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1460">subList</a>(int&nbsp;fromIndex,
+<pre>public&nbsp;<a href="http://docs.oracle.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/TestStore.MyList.html" title="type parameter in TestStore.MyList">T</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html#line.1570">subList</a>(int&nbsp;fromIndex,
                        int&nbsp;toIndex)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyMemStoreCompactor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyMemStoreCompactor.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyMemStoreCompactor.html
index 61a4a0c..d3c0d47a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyMemStoreCompactor.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyMemStoreCompactor.html
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1301">TestStore.MyMemStoreCompactor</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1411">TestStore.MyMemStoreCompactor</a>
 extends org.apache.hadoop.hbase.regionserver.MemStoreCompactor</pre>
 </li>
 </ul>
@@ -225,7 +225,7 @@ extends org.apache.hadoop.hbase.regionserver.MemStoreCompactor</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>RUNNER_COUNT</h4>
-<pre>private static final&nbsp;<a href="http://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/TestStore.MyMemStoreCompactor.html#line.1302">RUNNER_COUNT</a></pre>
+<pre>private static final&nbsp;<a href="http://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/TestStore.MyMemStoreCompactor.html#line.1412">RUNNER_COUNT</a></pre>
 </li>
 </ul>
 <a name="START_COMPACTOR_LATCH">
@@ -234,7 +234,7 @@ extends org.apache.hadoop.hbase.regionserver.MemStoreCompactor</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>START_COMPACTOR_LATCH</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyMemStoreCompactor.html#line.1303">START_COMPACTOR_LATCH</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyMemStoreCompactor.html#line.1413">START_COMPACTOR_LATCH</a></pre>
 </li>
 </ul>
 </li>
@@ -251,7 +251,7 @@ extends org.apache.hadoop.hbase.regionserver.MemStoreCompactor</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MyMemStoreCompactor</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyMemStoreCompactor.html#line.1304">MyMemStoreCompactor</a>(org.apache.hadoop.hbase.regionserver.CompactingMemStore&nbsp;compactingMemStore,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyMemStoreCompactor.html#line.1414">MyMemStoreCompactor</a>(org.apache.hadoop.hbase.regionserver.CompactingMemStore&nbsp;compactingMemStore,
                            org.apache.hadoop.hbase.MemoryCompactionPolicy&nbsp;compactionPolicy)</pre>
 </li>
 </ul>
@@ -269,7 +269,7 @@ extends org.apache.hadoop.hbase.regionserver.MemStoreCompactor</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>start</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyMemStoreCompactor.html#line.1309">start</a>()
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyMemStoreCompactor.html#line.1419">start</a>()
               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html
index 740d318..4efbb1d 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html
@@ -105,7 +105,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1297">TestStore.MyScannerHook</a></pre>
+<pre>private static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1314">TestStore.MyScannerHook</a></pre>
 </li>
 </ul>
 </div>
@@ -149,7 +149,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockListLast">
 <li class="blockList">
 <h4>hook</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html#line.1298">hook</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.MyStore</a>&nbsp;store)
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html#line.1315">hook</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.MyStore</a>&nbsp;store)
    throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html
index ba53ef2..4cc3e08 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.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/TestStoreFileInfo.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/TestStore.MyThread.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/TestStore.MyStore.html" target="_top">Frames</a></li>
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1279">TestStore.MyStore</a>
+<pre>class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1295">TestStore.MyStore</a>
 extends org.apache.hadoop.hbase.regionserver.HStore</pre>
 </li>
 </ul>
@@ -175,10 +175,11 @@ extends org.apache.hadoop.hbase.regionserver.HStore</pre>
 <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/TestStore.MyStore.html#MyStore-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.HColumnDescriptor-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.regionserver.TestStore.MyScannerHook-">MyStore</a></span>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html#MyStore-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.HColumnDescriptor-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.regionserver.TestStore.MyScannerHook-boolean-">MyStore</a></span>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
        org.apache.hadoop.hbase.HColumnDescriptor&nbsp;family,
        org.apache.hadoop.conf.Configuration&nbsp;confParam,
-       <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html" title="interface in org.apache.hadoop.hbase.regionserver">TestStore.MyScannerHook</a>&nbsp;hook)</code>&nbsp;</td>
+       <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html" title="interface in org.apache.hadoop.hbase.regionserver">TestStore.MyScannerHook</a>&nbsp;hook,
+       boolean&nbsp;switchToPread)</code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -215,7 +216,7 @@ extends org.apache.hadoop.hbase.regionserver.HStore</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HStore</h3>
-<code>add, add, addChangedReaderObserver, areWritesEnabled, assertBulkLoadHFileOk, bulkLoadHFile, bulkLoadHFile, cancelRequestedCompaction, canSplit, close, closeAndArchiveCompactedFiles, compact, compact, compactRecentForTestingAssumingDefaultPolicy, completeCompaction, createCacheConf, createFlushContext, createScanner, createStoreEngine, createWriterInTmp, createWriterInTmp, createWriterInTmp, deleteChangedReaderObserver, deregisterChildren, determineTTLFromFamily, flushCache, getAvgStoreFileAge, getBlockingFileCount, getBytesPerChecksum, getCacheConfig, getChecksumType, getCloseCheckInterval, getColumnFamilyName, getCompactedCellsCount, getCompactedCellsSize, getCompactionCheckMultiplier, getCompactionPressure, getCompactionProgress, getCompactPriority, getComparator, getCoprocessorHost, getDataBlockEncoder, getFamily, getFileSystem, getFlushableSize, getFlushedCellsCount, getFlushedCellsSize, getFlushedOutputFileSize, getHFilesSize, getHRegion, getLastCompactSize, getMajorCompa
 ctedCellsCount, getMajorCompactedCellsSize, getMaxMemstoreTS, getMaxSequenceId, getMaxStoreFileAge, getMemstoreFlushSize, getMemStoreSize, getMinStoreFileAge, getNumHFiles, getNumReferenceFiles, getOffPeakHours, getRegionFileSystem, getRegionInfo, getScanInfo, getScanner, getScanners, getSize, getSizeOfMemStore, getSizeOfSnapshot, getSizeToFlush, getSmallestReadPoint, getSnapshotSize, getSplitPoint, getStoreEngine, getStorefiles, getStorefilesCount, getStorefilesIndexSize, getStorefilesSize, getStoreFileTtl, getStoreHomedir, getStoreHomedir, getStoreSizeUncompressed, getTableName, getTotalStaticBloomSize, getTotalStaticIndexSize, hasReferences, hasTooManyStoreFiles, heapSize, isMajorCompaction, isPrimaryReplicaStore, isSloppyMemstore, moveFileIntoPlace, needsCompaction, onConfigurationChange, preBulkLoadHFile, preFlushSeqIDEstimation, refreshStoreFiles, refreshStoreFiles, registerChildren, replaceStoreFiles, replayCompactionMarker, requestCompaction, requestCompaction, requestCompac
 tion, setDataBlockEncoderInTest, setScanInfo, snapshot, startReplayingFromWAL, stopReplayingFromWAL, throttleCompaction, timeOfOldestEdit, toString, triggerMajorCompaction, upsert, versionsToReturn</code></li>
+<code>add, add, addChangedReaderObserver, areWritesEnabled, assertBulkLoadHFileOk, bulkLoadHFile, bulkLoadHFile, cancelRequestedCompaction, canSplit, close, closeAndArchiveCompactedFiles, compact, compact, compactRecentForTestingAssumingDefaultPolicy, completeCompaction, createCacheConf, createFlushContext, createScanner, createStoreEngine, createWriterInTmp, createWriterInTmp, createWriterInTmp, deleteChangedReaderObserver, deregisterChildren, determineTTLFromFamily, flushCache, getAvgStoreFileAge, getBlockingFileCount, getBytesPerChecksum, getCacheConfig, getChecksumType, getCloseCheckInterval, getColumnFamilyName, getCompactedCellsCount, getCompactedCellsSize, getCompactedFiles, getCompactedFilesCount, getCompactionCheckMultiplier, getCompactionPressure, getCompactionProgress, getCompactPriority, getComparator, getCoprocessorHost, getDataBlockEncoder, getFamily, getFileSystem, getFlushableSize, getFlushedCellsCount, getFlushedCellsSize, getFlushedOutputFileSize, getHFilesSize, ge
 tHRegion, getLastCompactSize, getMajorCompactedCellsCount, getMajorCompactedCellsSize, getMaxMemstoreTS, getMaxSequenceId, getMaxStoreFileAge, getMemstoreFlushSize, getMemStoreSize, getMinStoreFileAge, getNumHFiles, getNumReferenceFiles, getOffPeakHours, getRegionFileSystem, getRegionInfo, getScanInfo, getScanner, getScanners, getSize, getSizeOfMemStore, getSizeOfSnapshot, getSizeToFlush, getSmallestReadPoint, getSnapshotSize, getSplitPoint, getStoreEngine, getStorefiles, getStorefilesCount, getStorefilesIndexSize, getStorefilesSize, getStoreFileTtl, getStoreHomedir, getStoreHomedir, getStoreSizeUncompressed, getTableName, getTotalStaticBloomSize, getTotalStaticIndexSize, hasReferences, hasTooManyStoreFiles, heapSize, isMajorCompaction, isPrimaryReplicaStore, isSloppyMemstore, moveFileIntoPlace, needsCompaction, onConfigurationChange, preBulkLoadHFile, preFlushSeqIDEstimation, recreateScanners, refreshStoreFiles, refreshStoreFiles, registerChildren, replaceStoreFiles, replayCompacti
 onMarker, requestCompaction, requestCompaction, requestCompaction, setDataBlockEncoderInTest, setScanInfo, snapshot, startReplayingFromWAL, stopReplayingFromWAL, throttleCompaction, timeOfOldestEdit, toString, triggerMajorCompaction, upsert, versionsToReturn</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -251,7 +252,7 @@ extends org.apache.hadoop.hbase.regionserver.HStore</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>hook</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html" title="interface in org.apache.hadoop.hbase.regionserver">TestStore.MyScannerHook</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html#line.1280">hook</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html" title="interface in org.apache.hadoop.hbase.regionserver">TestStore.MyScannerHook</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html#line.1296">hook</a></pre>
 </li>
 </ul>
 </li>
@@ -262,16 +263,17 @@ extends org.apache.hadoop.hbase.regionserver.HStore</pre>
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="MyStore-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.HColumnDescriptor-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.regionserver.TestStore.MyScannerHook-">
+<a name="MyStore-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.HColumnDescriptor-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.regionserver.TestStore.MyScannerHook-boolean-">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MyStore</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html#line.1281">MyStore</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html#line.1298">MyStore</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
         org.apache.hadoop.hbase.HColumnDescriptor&nbsp;family,
         org.apache.hadoop.conf.Configuration&nbsp;confParam,
-        <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html" title="interface in org.apache.hadoop.hbase.regionserver">TestStore.MyScannerHook</a>&nbsp;hook)
+        <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html" title="interface in org.apache.hadoop.hbase.regionserver">TestStore.MyScannerHook</a>&nbsp;hook,
+        boolean&nbsp;switchToPread)
  throws <a href="http://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>
@@ -293,7 +295,7 @@ extends org.apache.hadoop.hbase.regionserver.HStore</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getScanners</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.regionserver.KeyValueScanner&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html#line.1288">getScanners</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.regionserver.StoreFile&gt;&nbsp;files,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.regionserver.KeyValueScanner&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html#line.1305">getScanners</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.regionserver.StoreFile&gt;&nbsp;files,
                                                                               boolean&nbsp;cacheBlocks,
                                                                               boolean&nbsp;usePread,
                                                                               boolean&nbsp;isCompaction,
@@ -344,7 +346,7 @@ extends org.apache.hadoop.hbase.regionserver.HStore</pre>
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.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/TestStoreFileInfo.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/TestStore.MyThread.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/TestStore.MyStore.html" target="_top">Frames</a></li>


[31/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/class-use/ScanQueryMatcher.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/class-use/ScanQueryMatcher.html b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/class-use/ScanQueryMatcher.html
index 0305ce2..5410f57 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/class-use/ScanQueryMatcher.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/class-use/ScanQueryMatcher.html
@@ -220,6 +220,36 @@
  ScanQueryMatcher for each store file scanner for further optimization</div>
 </td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">Store.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/regionserver/Store.html#recreateScanners-java.util.List-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-boolean-">recreateScanners</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;currentFileScanners,
+                boolean&nbsp;cacheBlocks,
+                boolean&nbsp;usePread,
+                boolean&nbsp;isCompaction,
+                <a href="../../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">ScanQueryMatcher</a>&nbsp;matcher,
+                byte[]&nbsp;startRow,
+                boolean&nbsp;includeStartRow,
+                byte[]&nbsp;stopRow,
+                boolean&nbsp;includeStopRow,
+                long&nbsp;readPt,
+                boolean&nbsp;includeMemstoreScanner)</code>
+<div class="block">Recreates the scanners on the current list of active store file scanners</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">HStore.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#recreateScanners-java.util.List-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-boolean-">recreateScanners</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;currentFileScanners,
+                boolean&nbsp;cacheBlocks,
+                boolean&nbsp;usePread,
+                boolean&nbsp;isCompaction,
+                <a href="../../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">ScanQueryMatcher</a>&nbsp;matcher,
+                byte[]&nbsp;startRow,
+                boolean&nbsp;includeStartRow,
+                byte[]&nbsp;stopRow,
+                boolean&nbsp;includeStopRow,
+                long&nbsp;readPt,
+                boolean&nbsp;includeMemstoreScanner)</code>&nbsp;</td>
+</tr>
 </tbody>
 </table>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
index 3bdfdd1..bab0558 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
@@ -125,10 +125,10 @@
 <ul>
 <li type="circle">java.lang.<a href="http://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="http://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="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">ScanQueryMatcher.MatchCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/DeleteTracker.DeleteCompare.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">DeleteTracker.DeleteCompare</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/StripeCompactionScanQueryMatcher.DropDeletesInOutput.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">StripeCompactionScanQueryMatcher.DropDeletesInOutput</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/DeleteTracker.DeleteResult.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">DeleteTracker.DeleteResult</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/StripeCompactionScanQueryMatcher.DropDeletesInOutput.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">StripeCompactionScanQueryMatcher.DropDeletesInOutput</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">ScanQueryMatcher.MatchCode</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/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 33cb6b6..7cba16c 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
@@ -248,8 +248,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://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="http://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="http://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/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/ProtobufLogReader.WALHdrResult.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">ProtobufLogReader.WALHdrResult</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/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 78d1305..66b8b75 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
@@ -136,9 +136,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://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="http://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="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessControlFilter.Strategy.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessControlFilter.Strategy</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Action.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Action</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.OpType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessController.OpType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Action.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Action</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessControlFilter.Strategy.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessControlFilter.Strategy</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/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 9da8ca6..09974e8 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
@@ -192,8 +192,8 @@
 <li type="circle">java.lang.<a href="http://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="http://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="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslStatus.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslStatus</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslUtil.QualityOfProtection</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/AuthMethod.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">AuthMethod</span></a></li>
+<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/e9db7c5d/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
index 50fa271..1782947 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
@@ -411,76 +411,76 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.129">m_deadServers__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_metaLocation">
+<a name="m_serverManager">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_metaLocation</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.141">m_metaLocation</a></pre>
+<h4>m_serverManager</h4>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.141">m_serverManager</a></pre>
 </li>
 </ul>
-<a name="m_metaLocation__IsNotDefault">
+<a name="m_serverManager__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_metaLocation__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.146">m_metaLocation__IsNotDefault</a></pre>
+<h4>m_serverManager__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.146">m_serverManager__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_assignmentManager">
+<a name="m_servers">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_assignmentManager</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.158">m_assignmentManager</a></pre>
+<h4>m_servers</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.158">m_servers</a></pre>
 </li>
 </ul>
-<a name="m_assignmentManager__IsNotDefault">
+<a name="m_servers__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_assignmentManager__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.163">m_assignmentManager__IsNotDefault</a></pre>
+<h4>m_servers__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.163">m_servers__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_filter">
+<a name="m_assignmentManager">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_filter</h4>
-<pre>private&nbsp;<a href="http://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/tmpl/master/MasterStatusTmpl.ImplData.html#line.175">m_filter</a></pre>
+<h4>m_assignmentManager</h4>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.175">m_assignmentManager</a></pre>
 </li>
 </ul>
-<a name="m_filter__IsNotDefault">
+<a name="m_assignmentManager__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_filter__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.180">m_filter__IsNotDefault</a></pre>
+<h4>m_assignmentManager__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.180">m_assignmentManager__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_frags">
+<a name="m_metaLocation">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_frags</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://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="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.192">m_frags</a></pre>
+<h4>m_metaLocation</h4>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.192">m_metaLocation</a></pre>
 </li>
 </ul>
-<a name="m_frags__IsNotDefault">
+<a name="m_metaLocation__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_frags__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.197">m_frags__IsNotDefault</a></pre>
+<h4>m_metaLocation__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.197">m_metaLocation__IsNotDefault</a></pre>
 </li>
 </ul>
 <a name="m_format">
@@ -501,58 +501,58 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.214">m_format__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_serverManager">
+<a name="m_frags">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_serverManager</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.226">m_serverManager</a></pre>
+<h4>m_frags</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://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="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.226">m_frags</a></pre>
 </li>
 </ul>
-<a name="m_serverManager__IsNotDefault">
+<a name="m_frags__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_serverManager__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.231">m_serverManager__IsNotDefault</a></pre>
+<h4>m_frags__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.231">m_frags__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_servers">
+<a name="m_catalogJanitorEnabled">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_servers</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.243">m_servers</a></pre>
+<h4>m_catalogJanitorEnabled</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.243">m_catalogJanitorEnabled</a></pre>
 </li>
 </ul>
-<a name="m_servers__IsNotDefault">
+<a name="m_catalogJanitorEnabled__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_servers__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.248">m_servers__IsNotDefault</a></pre>
+<h4>m_catalogJanitorEnabled__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.248">m_catalogJanitorEnabled__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_catalogJanitorEnabled">
+<a name="m_filter">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_catalogJanitorEnabled</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.260">m_catalogJanitorEnabled</a></pre>
+<h4>m_filter</h4>
+<pre>private&nbsp;<a href="http://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/tmpl/master/MasterStatusTmpl.ImplData.html#line.260">m_filter</a></pre>
 </li>
 </ul>
-<a name="m_catalogJanitorEnabled__IsNotDefault">
+<a name="m_filter__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>m_catalogJanitorEnabled__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.265">m_catalogJanitorEnabled__IsNotDefault</a></pre>
+<h4>m_filter__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.265">m_filter__IsNotDefault</a></pre>
 </li>
 </ul>
 </li>
@@ -625,112 +625,112 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.125">getDeadServers__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setMetaLocation-org.apache.hadoop.hbase.ServerName-">
+<a name="setServerManager-org.apache.hadoop.hbase.master.ServerManager-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setMetaLocation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.131">setMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;metaLocation)</pre>
+<h4>setServerManager</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.131">setServerManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;serverManager)</pre>
 </li>
 </ul>
-<a name="getMetaLocation--">
+<a name="getServerManager--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getMetaLocation</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.137">getMetaLocation</a>()</pre>
+<h4>getServerManager</h4>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.137">getServerManager</a>()</pre>
 </li>
 </ul>
-<a name="getMetaLocation__IsNotDefault--">
+<a name="getServerManager__IsNotDefault--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getMetaLocation__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.142">getMetaLocation__IsNotDefault</a>()</pre>
+<h4>getServerManager__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.142">getServerManager__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setAssignmentManager-org.apache.hadoop.hbase.master.assignment.AssignmentManager-">
+<a name="setServers-java.util.List-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setAssignmentManager</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.148">setAssignmentManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a>&nbsp;assignmentManager)</pre>
+<h4>setServers</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.148">setServers</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</pre>
 </li>
 </ul>
-<a name="getAssignmentManager--">
+<a name="getServers--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getAssignmentManager</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.154">getAssignmentManager</a>()</pre>
+<h4>getServers</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.154">getServers</a>()</pre>
 </li>
 </ul>
-<a name="getAssignmentManager__IsNotDefault--">
+<a name="getServers__IsNotDefault--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getAssignmentManager__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.159">getAssignmentManager__IsNotDefault</a>()</pre>
+<h4>getServers__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.159">getServers__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setFilter-java.lang.String-">
+<a name="setAssignmentManager-org.apache.hadoop.hbase.master.assignment.AssignmentManager-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFilter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.165">setFilter</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;filter)</pre>
+<h4>setAssignmentManager</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.165">setAssignmentManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a>&nbsp;assignmentManager)</pre>
 </li>
 </ul>
-<a name="getFilter--">
+<a name="getAssignmentManager--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFilter</h4>
-<pre>public&nbsp;<a href="http://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/tmpl/master/MasterStatusTmpl.ImplData.html#line.171">getFilter</a>()</pre>
+<h4>getAssignmentManager</h4>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.171">getAssignmentManager</a>()</pre>
 </li>
 </ul>
-<a name="getFilter__IsNotDefault--">
+<a name="getAssignmentManager__IsNotDefault--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFilter__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.176">getFilter__IsNotDefault</a>()</pre>
+<h4>getAssignmentManager__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.176">getAssignmentManager__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setFrags-java.util.Map-">
+<a name="setMetaLocation-org.apache.hadoop.hbase.ServerName-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFrags</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.182">setFrags</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://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="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;frags)</pre>
+<h4>setMetaLocation</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.182">setMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;metaLocation)</pre>
 </li>
 </ul>
-<a name="getFrags--">
+<a name="getMetaLocation--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFrags</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://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="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.188">getFrags</a>()</pre>
+<h4>getMetaLocation</h4>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.188">getMetaLocation</a>()</pre>
 </li>
 </ul>
-<a name="getFrags__IsNotDefault--">
+<a name="getMetaLocation__IsNotDefault--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFrags__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.193">getFrags__IsNotDefault</a>()</pre>
+<h4>getMetaLocation__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.193">getMetaLocation__IsNotDefault</a>()</pre>
 </li>
 </ul>
 <a name="setFormat-java.lang.String-">
@@ -760,85 +760,85 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.210">getFormat__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setServerManager-org.apache.hadoop.hbase.master.ServerManager-">
+<a name="setFrags-java.util.Map-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setServerManager</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.216">setServerManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;serverManager)</pre>
+<h4>setFrags</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.216">setFrags</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://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="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;frags)</pre>
 </li>
 </ul>
-<a name="getServerManager--">
+<a name="getFrags--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getServerManager</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.222">getServerManager</a>()</pre>
+<h4>getFrags</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://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="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.222">getFrags</a>()</pre>
 </li>
 </ul>
-<a name="getServerManager__IsNotDefault--">
+<a name="getFrags__IsNotDefault--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getServerManager__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.227">getServerManager__IsNotDefault</a>()</pre>
+<h4>getFrags__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.227">getFrags__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setServers-java.util.List-">
+<a name="setCatalogJanitorEnabled-boolean-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setServers</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.233">setServers</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</pre>
+<h4>setCatalogJanitorEnabled</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.233">setCatalogJanitorEnabled</a>(boolean&nbsp;catalogJanitorEnabled)</pre>
 </li>
 </ul>
-<a name="getServers--">
+<a name="getCatalogJanitorEnabled--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getServers</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.239">getServers</a>()</pre>
+<h4>getCatalogJanitorEnabled</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.239">getCatalogJanitorEnabled</a>()</pre>
 </li>
 </ul>
-<a name="getServers__IsNotDefault--">
+<a name="getCatalogJanitorEnabled__IsNotDefault--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getServers__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.244">getServers__IsNotDefault</a>()</pre>
+<h4>getCatalogJanitorEnabled__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.244">getCatalogJanitorEnabled__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setCatalogJanitorEnabled-boolean-">
+<a name="setFilter-java.lang.String-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setCatalogJanitorEnabled</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.250">setCatalogJanitorEnabled</a>(boolean&nbsp;catalogJanitorEnabled)</pre>
+<h4>setFilter</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.250">setFilter</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;filter)</pre>
 </li>
 </ul>
-<a name="getCatalogJanitorEnabled--">
+<a name="getFilter--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getCatalogJanitorEnabled</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.256">getCatalogJanitorEnabled</a>()</pre>
+<h4>getFilter</h4>
+<pre>public&nbsp;<a href="http://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/tmpl/master/MasterStatusTmpl.ImplData.html#line.256">getFilter</a>()</pre>
 </li>
 </ul>
-<a name="getCatalogJanitorEnabled__IsNotDefault--">
+<a name="getFilter__IsNotDefault--">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>getCatalogJanitorEnabled__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.261">getCatalogJanitorEnabled__IsNotDefault</a>()</pre>
+<h4>getFilter__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.261">getFilter__IsNotDefault</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
index 620a287..9455751 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
@@ -346,40 +346,40 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <pre>protected&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.277">deadServers</a></pre>
 </li>
 </ul>
-<a name="metaLocation">
+<a name="serverManager">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>metaLocation</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.284">metaLocation</a></pre>
+<h4>serverManager</h4>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.284">serverManager</a></pre>
 </li>
 </ul>
-<a name="assignmentManager">
+<a name="servers">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>assignmentManager</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.291">assignmentManager</a></pre>
+<h4>servers</h4>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.291">servers</a></pre>
 </li>
 </ul>
-<a name="filter">
+<a name="assignmentManager">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>filter</h4>
-<pre>protected&nbsp;<a href="http://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/tmpl/master/MasterStatusTmpl.html#line.298">filter</a></pre>
+<h4>assignmentManager</h4>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.298">assignmentManager</a></pre>
 </li>
 </ul>
-<a name="frags">
+<a name="metaLocation">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>frags</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://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="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.305">frags</a></pre>
+<h4>metaLocation</h4>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.305">metaLocation</a></pre>
 </li>
 </ul>
 <a name="format">
@@ -391,31 +391,31 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <pre>protected&nbsp;<a href="http://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/tmpl/master/MasterStatusTmpl.html#line.312">format</a></pre>
 </li>
 </ul>
-<a name="serverManager">
+<a name="frags">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>serverManager</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.319">serverManager</a></pre>
+<h4>frags</h4>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://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="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.319">frags</a></pre>
 </li>
 </ul>
-<a name="servers">
+<a name="catalogJanitorEnabled">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>servers</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.326">servers</a></pre>
+<h4>catalogJanitorEnabled</h4>
+<pre>protected&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.326">catalogJanitorEnabled</a></pre>
 </li>
 </ul>
-<a name="catalogJanitorEnabled">
+<a name="filter">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>catalogJanitorEnabled</h4>
-<pre>protected&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.333">catalogJanitorEnabled</a></pre>
+<h4>filter</h4>
+<pre>protected&nbsp;<a href="http://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/tmpl/master/MasterStatusTmpl.html#line.333">filter</a></pre>
 </li>
 </ul>
 </li>
@@ -496,40 +496,40 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.278">setDeadServers</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;p_deadServers)</pre>
 </li>
 </ul>
-<a name="setMetaLocation-org.apache.hadoop.hbase.ServerName-">
+<a name="setServerManager-org.apache.hadoop.hbase.master.ServerManager-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setMetaLocation</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.285">setMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;p_metaLocation)</pre>
+<h4>setServerManager</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.285">setServerManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;p_serverManager)</pre>
 </li>
 </ul>
-<a name="setAssignmentManager-org.apache.hadoop.hbase.master.assignment.AssignmentManager-">
+<a name="setServers-java.util.List-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setAssignmentManager</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.292">setAssignmentManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a>&nbsp;p_assignmentManager)</pre>
+<h4>setServers</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.292">setServers</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;p_servers)</pre>
 </li>
 </ul>
-<a name="setFilter-java.lang.String-">
+<a name="setAssignmentManager-org.apache.hadoop.hbase.master.assignment.AssignmentManager-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFilter</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.299">setFilter</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_filter)</pre>
+<h4>setAssignmentManager</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.299">setAssignmentManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a>&nbsp;p_assignmentManager)</pre>
 </li>
 </ul>
-<a name="setFrags-java.util.Map-">
+<a name="setMetaLocation-org.apache.hadoop.hbase.ServerName-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFrags</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.306">setFrags</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://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="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;p_frags)</pre>
+<h4>setMetaLocation</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.306">setMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;p_metaLocation)</pre>
 </li>
 </ul>
 <a name="setFormat-java.lang.String-">
@@ -541,31 +541,31 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.313">setFormat</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_format)</pre>
 </li>
 </ul>
-<a name="setServerManager-org.apache.hadoop.hbase.master.ServerManager-">
+<a name="setFrags-java.util.Map-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setServerManager</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.320">setServerManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;p_serverManager)</pre>
+<h4>setFrags</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.320">setFrags</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://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="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;p_frags)</pre>
 </li>
 </ul>
-<a name="setServers-java.util.List-">
+<a name="setCatalogJanitorEnabled-boolean-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setServers</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.327">setServers</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;p_servers)</pre>
+<h4>setCatalogJanitorEnabled</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.327">setCatalogJanitorEnabled</a>(boolean&nbsp;p_catalogJanitorEnabled)</pre>
 </li>
 </ul>
-<a name="setCatalogJanitorEnabled-boolean-">
+<a name="setFilter-java.lang.String-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setCatalogJanitorEnabled</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.334">setCatalogJanitorEnabled</a>(boolean&nbsp;p_catalogJanitorEnabled)</pre>
+<h4>setFilter</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.334">setFilter</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_filter)</pre>
 </li>
 </ul>
 <a name="constructImpl-java.lang.Class-">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
index ab1b535..ee691cf 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
@@ -287,40 +287,40 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 <pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.65">deadServers</a></pre>
 </li>
 </ul>
-<a name="metaLocation">
+<a name="serverManager">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>metaLocation</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.66">metaLocation</a></pre>
+<h4>serverManager</h4>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.66">serverManager</a></pre>
 </li>
 </ul>
-<a name="assignmentManager">
+<a name="servers">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>assignmentManager</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.67">assignmentManager</a></pre>
+<h4>servers</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.67">servers</a></pre>
 </li>
 </ul>
-<a name="filter">
+<a name="assignmentManager">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>filter</h4>
-<pre>private final&nbsp;<a href="http://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/tmpl/master/MasterStatusTmplImpl.html#line.68">filter</a></pre>
+<h4>assignmentManager</h4>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.68">assignmentManager</a></pre>
 </li>
 </ul>
-<a name="frags">
+<a name="metaLocation">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>frags</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://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="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.69">frags</a></pre>
+<h4>metaLocation</h4>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.69">metaLocation</a></pre>
 </li>
 </ul>
 <a name="format">
@@ -332,31 +332,31 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 <pre>private final&nbsp;<a href="http://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/tmpl/master/MasterStatusTmplImpl.html#line.70">format</a></pre>
 </li>
 </ul>
-<a name="serverManager">
+<a name="frags">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>serverManager</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.71">serverManager</a></pre>
+<h4>frags</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://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="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.71">frags</a></pre>
 </li>
 </ul>
-<a name="servers">
+<a name="catalogJanitorEnabled">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>servers</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.72">servers</a></pre>
+<h4>catalogJanitorEnabled</h4>
+<pre>private final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.72">catalogJanitorEnabled</a></pre>
 </li>
 </ul>
-<a name="catalogJanitorEnabled">
+<a name="filter">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>catalogJanitorEnabled</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.73">catalogJanitorEnabled</a></pre>
+<h4>filter</h4>
+<pre>private final&nbsp;<a href="http://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/tmpl/master/MasterStatusTmplImpl.html#line.73">filter</a></pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
index 1b9f41b..facba9b 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
@@ -293,76 +293,76 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.71">m_regionServer</a></pre>
 </li>
 </ul>
-<a name="m_filter">
+<a name="m_bcv">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_filter</h4>
-<pre>private&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.83">m_filter</a></pre>
+<h4>m_bcv</h4>
+<pre>private&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.83">m_bcv</a></pre>
 </li>
 </ul>
-<a name="m_filter__IsNotDefault">
+<a name="m_bcv__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_filter__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.88">m_filter__IsNotDefault</a></pre>
+<h4>m_bcv__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.88">m_bcv__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_bcn">
+<a name="m_format">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_bcn</h4>
-<pre>private&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.100">m_bcn</a></pre>
+<h4>m_format</h4>
+<pre>private&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.100">m_format</a></pre>
 </li>
 </ul>
-<a name="m_bcn__IsNotDefault">
+<a name="m_format__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_bcn__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.105">m_bcn__IsNotDefault</a></pre>
+<h4>m_format__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.105">m_format__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_bcv">
+<a name="m_bcn">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_bcv</h4>
-<pre>private&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.117">m_bcv</a></pre>
+<h4>m_bcn</h4>
+<pre>private&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.117">m_bcn</a></pre>
 </li>
 </ul>
-<a name="m_bcv__IsNotDefault">
+<a name="m_bcn__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_bcv__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.122">m_bcv__IsNotDefault</a></pre>
+<h4>m_bcn__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.122">m_bcn__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_format">
+<a name="m_filter">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_format</h4>
-<pre>private&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.134">m_format</a></pre>
+<h4>m_filter</h4>
+<pre>private&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.134">m_filter</a></pre>
 </li>
 </ul>
-<a name="m_format__IsNotDefault">
+<a name="m_filter__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>m_format__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.139">m_format__IsNotDefault</a></pre>
+<h4>m_filter__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.139">m_filter__IsNotDefault</a></pre>
 </li>
 </ul>
 </li>
@@ -408,112 +408,112 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.67">getRegionServer</a>()</pre>
 </li>
 </ul>
-<a name="setFilter-java.lang.String-">
+<a name="setBcv-java.lang.String-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFilter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.73">setFilter</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;filter)</pre>
+<h4>setBcv</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.73">setBcv</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bcv)</pre>
 </li>
 </ul>
-<a name="getFilter--">
+<a name="getBcv--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFilter</h4>
-<pre>public&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.79">getFilter</a>()</pre>
+<h4>getBcv</h4>
+<pre>public&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.79">getBcv</a>()</pre>
 </li>
 </ul>
-<a name="getFilter__IsNotDefault--">
+<a name="getBcv__IsNotDefault--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFilter__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.84">getFilter__IsNotDefault</a>()</pre>
+<h4>getBcv__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.84">getBcv__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setBcn-java.lang.String-">
+<a name="setFormat-java.lang.String-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setBcn</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.90">setBcn</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bcn)</pre>
+<h4>setFormat</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.90">setFormat</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;format)</pre>
 </li>
 </ul>
-<a name="getBcn--">
+<a name="getFormat--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getBcn</h4>
-<pre>public&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.96">getBcn</a>()</pre>
+<h4>getFormat</h4>
+<pre>public&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.96">getFormat</a>()</pre>
 </li>
 </ul>
-<a name="getBcn__IsNotDefault--">
+<a name="getFormat__IsNotDefault--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getBcn__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.101">getBcn__IsNotDefault</a>()</pre>
+<h4>getFormat__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.101">getFormat__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setBcv-java.lang.String-">
+<a name="setBcn-java.lang.String-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setBcv</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.107">setBcv</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bcv)</pre>
+<h4>setBcn</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.107">setBcn</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bcn)</pre>
 </li>
 </ul>
-<a name="getBcv--">
+<a name="getBcn--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getBcv</h4>
-<pre>public&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.113">getBcv</a>()</pre>
+<h4>getBcn</h4>
+<pre>public&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.113">getBcn</a>()</pre>
 </li>
 </ul>
-<a name="getBcv__IsNotDefault--">
+<a name="getBcn__IsNotDefault--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getBcv__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.118">getBcv__IsNotDefault</a>()</pre>
+<h4>getBcn__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.118">getBcn__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setFormat-java.lang.String-">
+<a name="setFilter-java.lang.String-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFormat</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.124">setFormat</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;format)</pre>
+<h4>setFilter</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.124">setFilter</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;filter)</pre>
 </li>
 </ul>
-<a name="getFormat--">
+<a name="getFilter--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFormat</h4>
-<pre>public&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.130">getFormat</a>()</pre>
+<h4>getFilter</h4>
+<pre>public&nbsp;<a href="http://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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.130">getFilter</a>()</pre>
 </li>
 </ul>
-<a name="getFormat__IsNotDefault--">
+<a name="getFilter__IsNotDefault--">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>getFormat__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.135">getFormat__IsNotDefault</a>()</pre>
+<h4>getFilter__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.135">getFilter__IsNotDefault</a>()</pre>
 </li>
 </ul>
 </li>


[13/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.html
index 80e77c1..d84640c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":9,"i8":10,"i9":9,"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":9,"i9":10,"i10":9,"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":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.113">TestStore</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.114">TestStore</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Test class for the Store</div>
 </li>
@@ -166,9 +166,13 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html" title="interface in org.apache.hadoop.hbase.regionserver">TestStore.MyScannerHook</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private static class&nbsp;</code></td>
+<td class="colFirst"><code>(package private) class&nbsp;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.MyStore</a></span></code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.MyThread</a></span></code>&nbsp;</td>
+</tr>
 </table>
 </li>
 </ul>
@@ -322,21 +326,29 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 </tr>
 <tr id="i5" class="rowColor">
 <td class="colFirst"><code>private org.apache.hadoop.hbase.Cell</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#createCell-byte:A-long-long-byte:A-">createCell</a></span>(byte[]&nbsp;qualifier,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#createCell-byte:A-byte:A-long-long-byte:A-">createCell</a></span>(byte[]&nbsp;row,
+          byte[]&nbsp;qualifier,
           long&nbsp;ts,
           long&nbsp;sequenceId,
           byte[]&nbsp;value)</code>&nbsp;</td>
 </tr>
 <tr id="i6" class="altColor">
+<td class="colFirst"><code>private org.apache.hadoop.hbase.Cell</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#createCell-byte:A-long-long-byte:A-">createCell</a></span>(byte[]&nbsp;qualifier,
+          long&nbsp;ts,
+          long&nbsp;sequenceId,
+          byte[]&nbsp;value)</code>&nbsp;</td>
+</tr>
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#flush-int-">flush</a></span>(int&nbsp;storeFilessize)</code>&nbsp;</td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#flushStore-org.apache.hadoop.hbase.regionserver.HStore-long-">flushStore</a></span>(org.apache.hadoop.hbase.regionserver.HStore&nbsp;store,
           long&nbsp;id)</code>&nbsp;</td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>(package private) <a href="http://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;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#getKeyValueSet-long:A-int-byte:A-byte:A-">getKeyValueSet</a></span>(long[]&nbsp;timestamps,
               int&nbsp;numRows,
@@ -345,34 +357,34 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <div class="block">Generate a list of KeyValues for testing based on given parameters</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>private static long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#getLowestTimeStampFromFS-org.apache.hadoop.fs.FileSystem-java.util.Collection-">getLowestTimeStampFromFS</a></span>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
                         <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;org.apache.hadoop.hbase.regionserver.StoreFile&gt;&nbsp;candidates)</code>&nbsp;</td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#init-java.lang.String-">init</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;methodName)</code>&nbsp;</td>
 </tr>
-<tr id="i11" class="rowColor">
-<td class="colFirst"><code>private void</code></td>
+<tr id="i12" class="altColor">
+<td class="colFirst"><code>private org.apache.hadoop.hbase.regionserver.Store</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#init-java.lang.String-org.apache.hadoop.conf.Configuration-">init</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;methodName,
     org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
-<td class="colFirst"><code>private void</code></td>
+<tr id="i13" class="rowColor">
+<td class="colFirst"><code>private org.apache.hadoop.hbase.regionserver.Store</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#init-java.lang.String-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.HColumnDescriptor-">init</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;methodName,
     org.apache.hadoop.conf.Configuration&nbsp;conf,
     org.apache.hadoop.hbase.HColumnDescriptor&nbsp;hcd)</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>private org.apache.hadoop.hbase.regionserver.Store</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#init-java.lang.String-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.HTableDescriptor-org.apache.hadoop.hbase.HColumnDescriptor-">init</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;methodName,
     org.apache.hadoop.conf.Configuration&nbsp;conf,
     org.apache.hadoop.hbase.HTableDescriptor&nbsp;htd,
     org.apache.hadoop.hbase.HColumnDescriptor&nbsp;hcd)</code>&nbsp;</td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>private org.apache.hadoop.hbase.regionserver.Store</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#init-java.lang.String-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.HTableDescriptor-org.apache.hadoop.hbase.HColumnDescriptor-org.apache.hadoop.hbase.regionserver.TestStore.MyScannerHook-">init</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;methodName,
     org.apache.hadoop.conf.Configuration&nbsp;conf,
@@ -380,131 +392,144 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
     org.apache.hadoop.hbase.HColumnDescriptor&nbsp;hcd,
     <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html" title="interface in org.apache.hadoop.hbase.regionserver">TestStore.MyScannerHook</a>&nbsp;hook)</code>&nbsp;</td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
+<td class="colFirst"><code>private org.apache.hadoop.hbase.regionserver.Store</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#init-java.lang.String-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.HTableDescriptor-org.apache.hadoop.hbase.HColumnDescriptor-org.apache.hadoop.hbase.regionserver.TestStore.MyScannerHook-boolean-">init</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;methodName,
+    org.apache.hadoop.conf.Configuration&nbsp;conf,
+    org.apache.hadoop.hbase.HTableDescriptor&nbsp;htd,
+    org.apache.hadoop.hbase.HColumnDescriptor&nbsp;hcd,
+    <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html" title="interface in org.apache.hadoop.hbase.regionserver">TestStore.MyScannerHook</a>&nbsp;hook,
+    boolean&nbsp;switchToPread)</code>&nbsp;</td>
+</tr>
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.MyStore</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#initMyStore-java.lang.String-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.regionserver.TestStore.MyScannerHook-">initMyStore</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;methodName,
            org.apache.hadoop.conf.Configuration&nbsp;conf,
            <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html" title="interface in org.apache.hadoop.hbase.regionserver">TestStore.MyScannerHook</a>&nbsp;hook)</code>&nbsp;</td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#setUp--">setUp</a></span>()</code>
 <div class="block">Setup</div>
 </td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#tearDown--">tearDown</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i20" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#testCreateScannerAndSnapshotConcurrently--">testCreateScannerAndSnapshotConcurrently</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#testCreateWriter--">testCreateWriter</a></span>()</code>
 <div class="block">Verify that compression and data block encoding are respected by the
  Store.createWriterInTmp() method, used on store flush.</div>
 </td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#testDeleteExpiredStoreFiles--">testDeleteExpiredStoreFiles</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#testDeleteExpiredStoreFiles-int-">testDeleteExpiredStoreFiles</a></span>(int&nbsp;minVersions)</code>&nbsp;</td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i24" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#testEmptyStoreFile--">testEmptyStoreFile</a></span>()</code>
 <div class="block">Test for hbase-1686.</div>
 </td>
 </tr>
-<tr id="i23" 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/regionserver/TestStore.html#testFlushSizeAccounting--">testFlushSizeAccounting</a></span>()</code>
 <div class="block">Test we do not lose data if we fail a flush and then close.</div>
 </td>
 </tr>
-<tr id="i24" 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/regionserver/TestStore.html#testGet_FromFilesOnly--">testGet_FromFilesOnly</a></span>()</code>
 <div class="block">Getting data from files only</div>
 </td>
 </tr>
-<tr id="i25" 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/regionserver/TestStore.html#testGet_FromMemStoreAndFiles--">testGet_FromMemStoreAndFiles</a></span>()</code>
 <div class="block">Getting data from memstore and files</div>
 </td>
 </tr>
-<tr id="i26" 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/regionserver/TestStore.html#testGet_FromMemStoreOnly--">testGet_FromMemStoreOnly</a></span>()</code>
 <div class="block">Getting data from memstore only</div>
 </td>
 </tr>
-<tr id="i27" 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/regionserver/TestStore.html#testHandleErrorsInFlush--">testHandleErrorsInFlush</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i28" class="altColor">
+<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/TestStore.html#testLowestModificationTime--">testLowestModificationTime</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i29" 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/regionserver/TestStore.html#testMultipleTimestamps--">testMultipleTimestamps</a></span>()</code>
 <div class="block">Test to ensure correctness when using Stores with multiple timestamps</div>
 </td>
 </tr>
-<tr id="i30" 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/regionserver/TestStore.html#testNumberOfMemStoreScannersAfterFlush--">testNumberOfMemStoreScannersAfterFlush</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i31" class="rowColor">
+<tr id="i33" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#testNumberOfMemStoreScannersAfterFlush-java.util.List-java.util.List-">testNumberOfMemStoreScannersAfterFlush</a></span>(<a href="http://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;inputCellsBeforeSnapshot,
                                       <a href="http://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;inputCellsAfterSnapshot)</code>&nbsp;</td>
 </tr>
-<tr id="i32" class="altColor">
+<tr id="i34" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#testReclaimChunkWhenScaning--">testReclaimChunkWhenScaning</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i33" class="rowColor">
+<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/TestStore.html#testRefreshStoreFiles--">testRefreshStoreFiles</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i34" class="altColor">
+<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/TestStore.html#testRefreshStoreFilesNotChanged--">testRefreshStoreFilesNotChanged</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i35" 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/regionserver/TestStore.html#testRunDoubleMemStoreCompactors--">testRunDoubleMemStoreCompactors</a></span>()</code>
 <div class="block">If there are two running InMemoryFlushRunnable, the later InMemoryFlushRunnable
  may change the versionedList.</div>
 </td>
 </tr>
-<tr id="i36" class="altColor">
+<tr id="i38" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#testScanWithDoubleFlush--">testScanWithDoubleFlush</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i37" class="rowColor">
+<tr id="i39" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#testSplitWithEmptyColFam--">testSplitWithEmptyColFam</a></span>()</code>
 <div class="block">Test for HBASE-3492 - Test split on empty colfam (no store files).</div>
 </td>
 </tr>
-<tr id="i38" class="altColor">
+<tr id="i40" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#testStoreUsesConfigurationFromHcdAndHtd--">testStoreUsesConfigurationFromHcdAndHtd</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i39" class="rowColor">
+<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/TestStore.html#testStoreUsesSearchEngineOverride--">testStoreUsesSearchEngineOverride</a></span>()</code>&nbsp;</td>
 </tr>
+<tr id="i42" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#testSwitchingPreadtoStreamParallelyWithCompactionDischarger--">testSwitchingPreadtoStreamParallelyWithCompactionDischarger</a></span>()</code>&nbsp;</td>
+</tr>
 </table>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -533,7 +558,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.114">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.115">LOG</a></pre>
 </li>
 </ul>
 <a name="name">
@@ -542,7 +567,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>name</h4>
-<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.115">name</a></pre>
+<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.116">name</a></pre>
 </li>
 </ul>
 <a name="store">
@@ -551,7 +576,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>store</h4>
-<pre>org.apache.hadoop.hbase.regionserver.HStore <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.117">store</a></pre>
+<pre>org.apache.hadoop.hbase.regionserver.HStore <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.118">store</a></pre>
 </li>
 </ul>
 <a name="table">
@@ -560,7 +585,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>table</h4>
-<pre>byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.118">table</a></pre>
+<pre>byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.119">table</a></pre>
 </li>
 </ul>
 <a name="family">
@@ -569,7 +594,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>family</h4>
-<pre>byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.119">family</a></pre>
+<pre>byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.120">family</a></pre>
 </li>
 </ul>
 <a name="row">
@@ -578,7 +603,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>row</h4>
-<pre>byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.121">row</a></pre>
+<pre>byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.122">row</a></pre>
 </li>
 </ul>
 <a name="row2">
@@ -587,7 +612,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>row2</h4>
-<pre>byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.122">row2</a></pre>
+<pre>byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.123">row2</a></pre>
 </li>
 </ul>
 <a name="qf1">
@@ -596,7 +621,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>qf1</h4>
-<pre>byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.123">qf1</a></pre>
+<pre>byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.124">qf1</a></pre>
 </li>
 </ul>
 <a name="qf2">
@@ -605,7 +630,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>qf2</h4>
-<pre>byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.124">qf2</a></pre>
+<pre>byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.125">qf2</a></pre>
 </li>
 </ul>
 <a name="qf3">
@@ -614,7 +639,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>qf3</h4>
-<pre>byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.125">qf3</a></pre>
+<pre>byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.126">qf3</a></pre>
 </li>
 </ul>
 <a name="qf4">
@@ -623,7 +648,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>qf4</h4>
-<pre>byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.126">qf4</a></pre>
+<pre>byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.127">qf4</a></pre>
 </li>
 </ul>
 <a name="qf5">
@@ -632,7 +657,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>qf5</h4>
-<pre>byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.127">qf5</a></pre>
+<pre>byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.128">qf5</a></pre>
 </li>
 </ul>
 <a name="qf6">
@@ -641,7 +666,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>qf6</h4>
-<pre>byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.128">qf6</a></pre>
+<pre>byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.129">qf6</a></pre>
 </li>
 </ul>
 <a name="qualifiers">
@@ -650,7 +675,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>qualifiers</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;byte[]&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.130">qualifiers</a></pre>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;byte[]&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.131">qualifiers</a></pre>
 </li>
 </ul>
 <a name="expected">
@@ -659,7 +684,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>expected</h4>
-<pre><a href="http://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; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.132">expected</a></pre>
+<pre><a href="http://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; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.133">expected</a></pre>
 </li>
 </ul>
 <a name="result">
@@ -668,7 +693,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>result</h4>
-<pre><a href="http://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; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.133">result</a></pre>
+<pre><a href="http://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; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.134">result</a></pre>
 </li>
 </ul>
 <a name="id">
@@ -677,7 +702,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>id</h4>
-<pre>long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.135">id</a></pre>
+<pre>long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.136">id</a></pre>
 </li>
 </ul>
 <a name="get">
@@ -686,7 +711,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>org.apache.hadoop.hbase.client.Get <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.136">get</a></pre>
+<pre>org.apache.hadoop.hbase.client.Get <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.137">get</a></pre>
 </li>
 </ul>
 <a name="TEST_UTIL">
@@ -695,7 +720,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>TEST_UTIL</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.138">TEST_UTIL</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.139">TEST_UTIL</a></pre>
 </li>
 </ul>
 <a name="DIR">
@@ -704,7 +729,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>DIR</h4>
-<pre>private final&nbsp;<a href="http://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/TestStore.html#line.139">DIR</a></pre>
+<pre>private final&nbsp;<a href="http://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/TestStore.html#line.140">DIR</a></pre>
 </li>
 </ul>
 <a name="BLOCKSIZE_SMALL">
@@ -713,7 +738,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>BLOCKSIZE_SMALL</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.441">BLOCKSIZE_SMALL</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.448">BLOCKSIZE_SMALL</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestStore.BLOCKSIZE_SMALL">Constant Field Values</a></dd>
@@ -734,7 +759,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestStore</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.113">TestStore</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.114">TestStore</a>()</pre>
 </li>
 </ul>
 </li>
@@ -751,7 +776,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setUp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.147">setUp</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.148">setUp</a>()
            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Setup</div>
 <dl>
@@ -766,7 +791,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>init</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.160">init</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;methodName)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.161">init</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;methodName)
            throws <a href="http://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>
@@ -780,9 +805,9 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>init</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.164">init</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;methodName,
-                  org.apache.hadoop.conf.Configuration&nbsp;conf)
-           throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.Store&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.165">init</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;methodName,
+                                                        org.apache.hadoop.conf.Configuration&nbsp;conf)
+                                                 throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="http://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>
@@ -795,10 +820,10 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>init</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.173">init</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;methodName,
-                  org.apache.hadoop.conf.Configuration&nbsp;conf,
-                  org.apache.hadoop.hbase.HColumnDescriptor&nbsp;hcd)
-           throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.Store&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.174">init</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;methodName,
+                                                        org.apache.hadoop.conf.Configuration&nbsp;conf,
+                                                        org.apache.hadoop.hbase.HColumnDescriptor&nbsp;hcd)
+                                                 throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="http://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>
@@ -811,7 +836,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>init</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.Store&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.179">init</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;methodName,
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.Store&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.180">init</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;methodName,
                                                         org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                         org.apache.hadoop.hbase.HTableDescriptor&nbsp;htd,
                                                         org.apache.hadoop.hbase.HColumnDescriptor&nbsp;hcd)
@@ -828,7 +853,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>init</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.Store&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.185">init</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;methodName,
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.Store&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.186">init</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;methodName,
                                                         org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                         org.apache.hadoop.hbase.HTableDescriptor&nbsp;htd,
                                                         org.apache.hadoop.hbase.HColumnDescriptor&nbsp;hcd,
@@ -840,13 +865,32 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 </dl>
 </li>
 </ul>
+<a name="init-java.lang.String-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.HTableDescriptor-org.apache.hadoop.hbase.HColumnDescriptor-org.apache.hadoop.hbase.regionserver.TestStore.MyScannerHook-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>init</h4>
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.Store&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.191">init</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;methodName,
+                                                        org.apache.hadoop.conf.Configuration&nbsp;conf,
+                                                        org.apache.hadoop.hbase.HTableDescriptor&nbsp;htd,
+                                                        org.apache.hadoop.hbase.HColumnDescriptor&nbsp;hcd,
+                                                        <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html" title="interface in org.apache.hadoop.hbase.regionserver">TestStore.MyScannerHook</a>&nbsp;hook,
+                                                        boolean&nbsp;switchToPread)
+                                                 throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="http://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="testFlushSizeAccounting--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>testFlushSizeAccounting</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.222">testFlushSizeAccounting</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.229">testFlushSizeAccounting</a>()
                              throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test we do not lose data if we fail a flush and then close.
  Part of HBase-10466</div>
@@ -862,7 +906,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testCreateWriter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.284">testCreateWriter</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.291">testCreateWriter</a>()
                       throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Verify that compression and data block encoding are respected by the
  Store.createWriterInTmp() method, used on store flush.</div>
@@ -878,7 +922,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testDeleteExpiredStoreFiles</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.310">testDeleteExpiredStoreFiles</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.317">testDeleteExpiredStoreFiles</a>()
                                  throws <a href="http://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>
@@ -892,7 +936,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testDeleteExpiredStoreFiles</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.318">testDeleteExpiredStoreFiles</a>(int&nbsp;minVersions)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.325">testDeleteExpiredStoreFiles</a>(int&nbsp;minVersions)
                                  throws <a href="http://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>
@@ -906,7 +950,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testLowestModificationTime</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.388">testLowestModificationTime</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.395">testLowestModificationTime</a>()
                                 throws <a href="http://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>
@@ -920,7 +964,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getLowestTimeStampFromFS</h4>
-<pre>private static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.414">getLowestTimeStampFromFS</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
+<pre>private static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.421">getLowestTimeStampFromFS</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
                                              <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;org.apache.hadoop.hbase.regionserver.StoreFile&gt;&nbsp;candidates)
                                       throws <a href="http://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>
@@ -935,7 +979,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testEmptyStoreFile</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.447">testEmptyStoreFile</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.454">testEmptyStoreFile</a>()
                         throws <a href="http://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">Test for hbase-1686.</div>
 <dl>
@@ -950,7 +994,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testGet_FromMemStoreOnly</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.484">testGet_FromMemStoreOnly</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.491">testGet_FromMemStoreOnly</a>()
                               throws <a href="http://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">Getting data from memstore only</div>
 <dl>
@@ -965,7 +1009,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testGet_FromFilesOnly</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.508">testGet_FromFilesOnly</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.515">testGet_FromFilesOnly</a>()
                            throws <a href="http://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">Getting data from files only</div>
 <dl>
@@ -980,7 +1024,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testGet_FromMemStoreAndFiles</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.547">testGet_FromMemStoreAndFiles</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.554">testGet_FromMemStoreAndFiles</a>()
                                   throws <a href="http://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">Getting data from memstore and files</div>
 <dl>
@@ -995,7 +1039,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>flush</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.577">flush</a>(int&nbsp;storeFilessize)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.584">flush</a>(int&nbsp;storeFilessize)
             throws <a href="http://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>
@@ -1009,7 +1053,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>assertCheck</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.584">assertCheck</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.591">assertCheck</a>()</pre>
 </li>
 </ul>
 <a name="tearDown--">
@@ -1018,7 +1062,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.592">tearDown</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.599">tearDown</a>()
               throws <a href="http://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>
@@ -1032,7 +1076,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testHandleErrorsInFlush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.597">testHandleErrorsInFlush</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.604">testHandleErrorsInFlush</a>()
                              throws <a href="http://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>
@@ -1046,7 +1090,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>flushStore</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.708">flushStore</a>(org.apache.hadoop.hbase.regionserver.HStore&nbsp;store,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.715">flushStore</a>(org.apache.hadoop.hbase.regionserver.HStore&nbsp;store,
                                long&nbsp;id)
                         throws <a href="http://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>
@@ -1061,7 +1105,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getKeyValueSet</h4>
-<pre><a href="http://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;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.723">getKeyValueSet</a>(long[]&nbsp;timestamps,
+<pre><a href="http://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;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.730">getKeyValueSet</a>(long[]&nbsp;timestamps,
                                                   int&nbsp;numRows,
                                                   byte[]&nbsp;qualifier,
                                                   byte[]&nbsp;family)</pre>
@@ -1082,7 +1126,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMultipleTimestamps</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.740">testMultipleTimestamps</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.747">testMultipleTimestamps</a>()
                             throws <a href="http://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">Test to ensure correctness when using Stores with multiple timestamps</div>
 <dl>
@@ -1097,7 +1141,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testSplitWithEmptyColFam</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.795">testSplitWithEmptyColFam</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.802">testSplitWithEmptyColFam</a>()
                               throws <a href="http://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">Test for HBASE-3492 - Test split on empty colfam (no store files).</div>
 <dl>
@@ -1112,7 +1156,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testStoreUsesConfigurationFromHcdAndHtd</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.804">testStoreUsesConfigurationFromHcdAndHtd</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.811">testStoreUsesConfigurationFromHcdAndHtd</a>()
                                              throws <a href="http://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>
@@ -1126,7 +1170,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testStoreUsesSearchEngineOverride</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.845">testStoreUsesSearchEngineOverride</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.853">testStoreUsesSearchEngineOverride</a>()
                                        throws <a href="http://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>
@@ -1140,7 +1184,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>addStoreFile</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.853">addStoreFile</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.861">addStoreFile</a>()
                    throws <a href="http://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>
@@ -1154,7 +1198,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>archiveStoreFile</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.870">archiveStoreFile</a>(int&nbsp;index)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.878">archiveStoreFile</a>(int&nbsp;index)
                        throws <a href="http://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>
@@ -1168,7 +1212,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>closeCompactedFile</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.880">closeCompactedFile</a>(int&nbsp;index)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.888">closeCompactedFile</a>(int&nbsp;index)
                          throws <a href="http://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>
@@ -1182,7 +1226,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRefreshStoreFiles</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.893">testRefreshStoreFiles</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.901">testRefreshStoreFiles</a>()
                            throws <a href="http://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>
@@ -1196,7 +1240,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRefreshStoreFilesNotChanged</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.941">testRefreshStoreFilesNotChanged</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.949">testRefreshStoreFilesNotChanged</a>()
                                      throws <a href="http://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>
@@ -1210,7 +1254,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>countMemStoreScanner</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.966">countMemStoreScanner</a>(org.apache.hadoop.hbase.regionserver.StoreScanner&nbsp;scanner)</pre>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.974">countMemStoreScanner</a>(org.apache.hadoop.hbase.regionserver.StoreScanner&nbsp;scanner)</pre>
 </li>
 </ul>
 <a name="testNumberOfMemStoreScannersAfterFlush--">
@@ -1219,7 +1263,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testNumberOfMemStoreScannersAfterFlush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.976">testNumberOfMemStoreScannersAfterFlush</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.984">testNumberOfMemStoreScannersAfterFlush</a>()
                                             throws <a href="http://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>
@@ -1233,7 +1277,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testNumberOfMemStoreScannersAfterFlush</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.997">testNumberOfMemStoreScannersAfterFlush</a>(<a href="http://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;inputCellsBeforeSnapshot,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1005">testNumberOfMemStoreScannersAfterFlush</a>(<a href="http://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;inputCellsBeforeSnapshot,
                                                     <a href="http://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;inputCellsAfterSnapshot)
                                              throws <a href="http://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>
@@ -1248,7 +1292,25 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createCell</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.Cell&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1036">createCell</a>(byte[]&nbsp;qualifier,
+<pre>private&nbsp;org.apache.hadoop.hbase.Cell&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1044">createCell</a>(byte[]&nbsp;qualifier,
+                                                long&nbsp;ts,
+                                                long&nbsp;sequenceId,
+                                                byte[]&nbsp;value)
+                                         throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="http://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="createCell-byte:A-byte:A-long-long-byte:A-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>createCell</h4>
+<pre>private&nbsp;org.apache.hadoop.hbase.Cell&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1050">createCell</a>(byte[]&nbsp;row,
+                                                byte[]&nbsp;qualifier,
                                                 long&nbsp;ts,
                                                 long&nbsp;sequenceId,
                                                 byte[]&nbsp;value)
@@ -1265,7 +1327,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testCreateScannerAndSnapshotConcurrently</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1043">testCreateScannerAndSnapshotConcurrently</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1058">testCreateScannerAndSnapshotConcurrently</a>()
                                               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                                      <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -1281,7 +1343,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanWithDoubleFlush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1099">testScanWithDoubleFlush</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1114">testScanWithDoubleFlush</a>()
                              throws <a href="http://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>
@@ -1295,7 +1357,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReclaimChunkWhenScaning</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1164">testReclaimChunkWhenScaning</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1179">testReclaimChunkWhenScaning</a>()
                                  throws <a href="http://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>
@@ -1309,7 +1371,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRunDoubleMemStoreCompactors</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1228">testRunDoubleMemStoreCompactors</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1243">testRunDoubleMemStoreCompactors</a>()
                                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                             <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">If there are two running InMemoryFlushRunnable, the later InMemoryFlushRunnable
@@ -1326,10 +1388,10 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <a name="initMyStore-java.lang.String-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.regionserver.TestStore.MyScannerHook-">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>initMyStore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.MyStore</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1272">initMyStore</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;methodName,
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.MyStore</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1287">initMyStore</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;methodName,
                                       org.apache.hadoop.conf.Configuration&nbsp;conf,
                                       <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html" title="interface in org.apache.hadoop.hbase.regionserver">TestStore.MyScannerHook</a>&nbsp;hook)
                                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1339,6 +1401,20 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 </dl>
 </li>
 </ul>
+<a name="testSwitchingPreadtoStreamParallelyWithCompactionDischarger--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testSwitchingPreadtoStreamParallelyWithCompactionDischarger</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.1319">testSwitchingPreadtoStreamParallelyWithCompactionDischarger</a>()
+                                                                 throws <a href="http://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="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreFileInfo.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreFileInfo.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreFileInfo.html
index d9ff290..fa28ff4 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreFileInfo.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreFileInfo.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyStore.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/TestStore.MyThread.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/TestStoreFileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -284,7 +284,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyStore.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/TestStore.MyThread.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/TestStoreFileRefresherChore.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/e9db7c5d/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html
index 64de472..e857136 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html
@@ -248,7 +248,7 @@ extends org.apache.hadoop.hbase.regionserver.StoreScanner</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.StoreScanner</h3>
-<code>checkFlushed, checkScanOrder, close, enableLazySeekGlobally, getAllScannersForTesting, getEstimatedNumberOfKvsScanned, getReadPoint, getScannerOrder, isScanUsePread, next, next, next, peek, reopenAfterFlush, reseek, seek, seekAsDirection, seekScanners, seekToNextRow, selectScannersFrom, shipped, updateReaders</code></li>
+<code>checkFlushed, checkScanOrder, close, enableLazySeekGlobally, getAllScannersForTesting, getEstimatedNumberOfKvsScanned, getReadPoint, getScannerOrder, isScanUsePread, next, next, next, peek, reopenAfterFlush, reseek, seek, seekAsDirection, seekScanners, seekToNextRow, selectScannersFrom, shipped, trySwitchToStreamRead, updateReaders</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.NonReversedNonLazyKeyValueScanner">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html
index 13dc8e9..5a941c4 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html
@@ -233,7 +233,7 @@ extends org.apache.hadoop.hbase.regionserver.StoreScanner</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.StoreScanner</h3>
-<code>checkFlushed, checkScanOrder, close, enableLazySeekGlobally, getAllScannersForTesting, getEstimatedNumberOfKvsScanned, getReadPoint, getScannerOrder, isScanUsePread, next, next, next, peek, reopenAfterFlush, reseek, resetKVHeap, seek, seekAsDirection, seekScanners, seekToNextRow, selectScannersFrom, shipped, trySkipToNextRow, updateReaders</code></li>
+<code>checkFlushed, checkScanOrder, close, enableLazySeekGlobally, getAllScannersForTesting, getEstimatedNumberOfKvsScanned, getReadPoint, getScannerOrder, isScanUsePread, next, next, next, peek, reopenAfterFlush, reseek, resetKVHeap, seek, seekAsDirection, seekScanners, seekToNextRow, selectScannersFrom, shipped, trySkipToNextRow, trySwitchToStreamRead, updateReaders</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.NonReversedNonLazyKeyValueScanner">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html
index 69478e6..b3146dc 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html
@@ -233,7 +233,7 @@ extends org.apache.hadoop.hbase.regionserver.StoreScanner</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.StoreScanner</h3>
-<code>checkFlushed, checkScanOrder, close, enableLazySeekGlobally, getAllScannersForTesting, getEstimatedNumberOfKvsScanned, getReadPoint, getScannerOrder, isScanUsePread, next, next, next, peek, reopenAfterFlush, reseek, resetKVHeap, seek, seekAsDirection, seekScanners, seekToNextRow, selectScannersFrom, shipped, trySkipToNextRow, updateReaders</code></li>
+<code>checkFlushed, checkScanOrder, close, enableLazySeekGlobally, getAllScannersForTesting, getEstimatedNumberOfKvsScanned, getReadPoint, getScannerOrder, isScanUsePread, next, next, next, peek, reopenAfterFlush, reseek, resetKVHeap, seek, seekAsDirection, seekScanners, seekToNextRow, selectScannersFrom, shipped, trySkipToNextRow, trySwitchToStreamRead, updateReaders</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.NonReversedNonLazyKeyValueScanner">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestStore.MyScannerHook.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestStore.MyScannerHook.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestStore.MyScannerHook.html
index fc0a874..372b21f 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestStore.MyScannerHook.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestStore.MyScannerHook.html
@@ -124,6 +124,15 @@
     <a href="../../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html" title="interface in org.apache.hadoop.hbase.regionserver">TestStore.MyScannerHook</a>&nbsp;hook)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>private org.apache.hadoop.hbase.regionserver.Store</code></td>
+<td class="colLast"><span class="typeNameLabel">TestStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#init-java.lang.String-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.HTableDescriptor-org.apache.hadoop.hbase.HColumnDescriptor-org.apache.hadoop.hbase.regionserver.TestStore.MyScannerHook-boolean-">init</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;methodName,
+    org.apache.hadoop.conf.Configuration&nbsp;conf,
+    org.apache.hadoop.hbase.HTableDescriptor&nbsp;htd,
+    org.apache.hadoop.hbase.HColumnDescriptor&nbsp;hcd,
+    <a href="../../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html" title="interface in org.apache.hadoop.hbase.regionserver">TestStore.MyScannerHook</a>&nbsp;hook,
+    boolean&nbsp;switchToPread)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.MyStore</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#initMyStore-java.lang.String-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.regionserver.TestStore.MyScannerHook-">initMyStore</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;methodName,
            org.apache.hadoop.conf.Configuration&nbsp;conf,
@@ -138,10 +147,11 @@
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html#MyStore-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.HColumnDescriptor-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.regionserver.TestStore.MyScannerHook-">MyStore</a></span>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html#MyStore-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.HColumnDescriptor-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.regionserver.TestStore.MyScannerHook-boolean-">MyStore</a></span>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
        org.apache.hadoop.hbase.HColumnDescriptor&nbsp;family,
        org.apache.hadoop.conf.Configuration&nbsp;confParam,
-       <a href="../../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html" title="interface in org.apache.hadoop.hbase.regionserver">TestStore.MyScannerHook</a>&nbsp;hook)</code>&nbsp;</td>
+       <a href="../../../../../../org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html" title="interface in org.apache.hadoop.hbase.regionserver">TestStore.MyScannerHook</a>&nbsp;hook,
+       boolean&nbsp;switchToPread)</code>&nbsp;</td>
 </tr>
 </tbody>
 </table>


[32/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html b/devapidocs/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html
index b6931c2..a672fb0 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.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":9,"i31":10,"i32":9,"i33":9,"i34":9,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":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":9,"i32":10,"i33":9,"i34":9,"i35":9,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":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";
@@ -348,16 +348,22 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 </td>
 </tr>
 <tr id="i12" class="altColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#getCompactedFilesCount--">getCompactedFilesCount</a></span>()</code>
+<div class="block">Returns the number of compacted files.</div>
+</td>
+</tr>
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>double</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#getCompactionPressure--">getCompactionPressure</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#getEndRow-int-">getEndRow</a></span>(int&nbsp;stripeIndex)</code>
 <div class="block">Gets the end row for a given stripe.</div>
 </td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#getFilesForScan-byte:A-boolean-byte:A-boolean-">getFilesForScan</a></span>(byte[]&nbsp;startRow,
                boolean&nbsp;includeStartRow,
@@ -366,156 +372,156 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <div class="block">Gets the store files to scan for a Scan or Get request.</div>
 </td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#getLevel0Files--">getLevel0Files</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>private double</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#getMidStripeSplitRatio-long-long-long-">getMidStripeSplitRatio</a></span>(long&nbsp;smallerSize,
                       long&nbsp;largerSize,
                       long&nbsp;lastLargerSize)</code>&nbsp;</td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#getSplitPoint--">getSplitPoint</a></span>()</code>
 <div class="block">Override of getSplitPoint that determines the split point as the boundary between two
  stripes, unless it causes significant imbalance between split sides' sizes.</div>
 </td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>private byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#getSplitPoint-java.util.Collection-">getSplitPoint</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;sfs)</code>&nbsp;</td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i20" class="altColor">
 <td class="colFirst"><code>private byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#getSplitPointFromAllFiles--">getSplitPointFromAllFiles</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code>byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#getStartRow-int-">getStartRow</a></span>(int&nbsp;stripeIndex)</code>
 <div class="block">Gets the start row for a given stripe.</div>
 </td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#getStoreCompactionPriority--">getStoreCompactionPriority</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#getStoreFileComparator--">getStoreFileComparator</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i23" class="rowColor">
+<tr id="i24" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#getStorefileCount--">getStorefileCount</a></span>()</code>
 <div class="block">Returns the number of files currently in use.</div>
 </td>
 </tr>
-<tr id="i24" class="altColor">
+<tr id="i25" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#getStorefiles--">getStorefiles</a></span>()</code>
 <div class="block">Gets the snapshot of the store files currently in use.</div>
 </td>
 </tr>
-<tr id="i25" class="rowColor">
+<tr id="i26" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;byte[]&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#getStripeBoundaries--">getStripeBoundaries</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i26" class="altColor">
+<tr id="i27" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#getStripeCount--">getStripeCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i27" class="rowColor">
+<tr id="i28" class="altColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#getStripeFilesSize-int-">getStripeFilesSize</a></span>(int&nbsp;stripeIndex)</code>
 <div class="block">Gets the total size of all files in the stripe.</div>
 </td>
 </tr>
-<tr id="i28" class="altColor">
+<tr id="i29" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;com.google.common.collect.ImmutableList&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#getStripes--">getStripes</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i29" class="rowColor">
+<tr id="i30" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#getUnneededFiles-long-java.util.List-">getUnneededFiles</a></span>(long&nbsp;maxTs,
                 <a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;filesCompacting)</code>&nbsp;</td>
 </tr>
-<tr id="i30" class="altColor">
+<tr id="i31" 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/StripeStoreFileManager.html#insertFileIntoStripe-java.util.ArrayList-org.apache.hadoop.hbase.regionserver.StoreFile-">insertFileIntoStripe</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;stripe,
                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&nbsp;sf)</code>
 <div class="block">Inserts a file in the correct place (by seqnum) in a stripe copy.</div>
 </td>
 </tr>
-<tr id="i31" class="rowColor">
+<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/regionserver/StripeStoreFileManager.html#insertNewFiles-java.util.Collection-">insertNewFiles</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;sfs)</code>
 <div class="block">Adds new files, either for from MemStore flush or bulk insert, into the structure.</div>
 </td>
 </tr>
-<tr id="i32" class="altColor">
+<tr id="i33" class="rowColor">
 <td class="colFirst"><code>private static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#isInvalid-byte:A-">isInvalid</a></span>(byte[]&nbsp;key)</code>
 <div class="block">Checks whether the key is invalid (e.g.</div>
 </td>
 </tr>
-<tr id="i33" class="rowColor">
+<tr id="i34" 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/StripeStoreFileManager.html#isOpen-byte:A-">isOpen</a></span>(byte[]&nbsp;key)</code>
 <div class="block">Checks whether the key indicates an open interval boundary (i.e.</div>
 </td>
 </tr>
-<tr id="i34" class="altColor">
+<tr id="i35" class="rowColor">
 <td class="colFirst"><code>private static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#isOpen-org.apache.hadoop.hbase.Cell-">isOpen</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)</code>&nbsp;</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/StripeStoreFileManager.html#loadFiles-java.util.List-">loadFiles</a></span>(<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;storeFiles)</code>
 <div class="block">Loads the initial store files into empty StoreFileManager.</div>
 </td>
 </tr>
-<tr id="i36" class="altColor">
+<tr id="i37" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#loadUnclassifiedStoreFiles-java.util.List-">loadUnclassifiedStoreFiles</a></span>(<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;storeFiles)</code>
 <div class="block">Loads initial store files that were picked up from some physical location pertaining to
  this store (presumably).</div>
 </td>
 </tr>
-<tr id="i37" class="rowColor">
+<tr id="i38" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#markCompactedAway-java.util.Collection-">markCompactedAway</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;compactedFiles)</code>&nbsp;</td>
 </tr>
-<tr id="i38" class="altColor">
+<tr id="i39" class="rowColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#nonOpenRowCompare-byte:A-byte:A-">nonOpenRowCompare</a></span>(byte[]&nbsp;k1,
                  byte[]&nbsp;k2)</code>
 <div class="block">Compare two keys.</div>
 </td>
 </tr>
-<tr id="i39" class="rowColor">
+<tr id="i40" class="altColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#nonOpenRowCompare-org.apache.hadoop.hbase.Cell-byte:A-">nonOpenRowCompare</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;k1,
                  byte[]&nbsp;k2)</code>&nbsp;</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/StripeStoreFileManager.html#removeCompactedFiles-java.util.Collection-">removeCompactedFiles</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;compactedFiles)</code>
 <div class="block">Remove the compacted files</div>
 </td>
 </tr>
-<tr id="i41" class="rowColor">
+<tr id="i42" class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#rowEquals-byte:A-byte:A-">rowEquals</a></span>(byte[]&nbsp;k1,
          byte[]&nbsp;k2)</code>
 <div class="block">Compare two keys for equality.</div>
 </td>
 </tr>
-<tr id="i42" class="altColor">
+<tr id="i43" class="rowColor">
 <td class="colFirst"><code>private byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#startOf-org.apache.hadoop.hbase.regionserver.StoreFile-">startOf</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&nbsp;sf)</code>&nbsp;</td>
 </tr>
-<tr id="i43" class="rowColor">
+<tr id="i44" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#updateCandidateFilesForRowKeyBefore-java.util.Iterator-org.apache.hadoop.hbase.KeyValue-org.apache.hadoop.hbase.Cell-">updateCandidateFilesForRowKeyBefore</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidateFiles,
                                    <a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;targetKey,
@@ -754,13 +760,30 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 </dl>
 </li>
 </ul>
+<a name="getCompactedFilesCount--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getCompactedFilesCount</h4>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.150">getCompactedFilesCount</a>()</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getCompactedFilesCount--">StoreFileManager</a></code></span></div>
+<div class="block">Returns the number of compacted files.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getCompactedFilesCount--">getCompactedFilesCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileManager</a></code></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The number of files.</dd>
+</dl>
+</li>
+</ul>
 <a name="insertNewFiles-java.util.Collection-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>insertNewFiles</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.150">insertNewFiles</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;sfs)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.155">insertNewFiles</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;sfs)
                     throws <a href="http://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/StoreFileManager.html#insertNewFiles-java.util.Collection-">StoreFileManager</a></code></span></div>
 <div class="block">Adds new files, either for from MemStore flush or bulk insert, into the structure.</div>
@@ -780,7 +803,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>clearFiles</h4>
-<pre>public&nbsp;com.google.common.collect.ImmutableCollection&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.158">clearFiles</a>()</pre>
+<pre>public&nbsp;com.google.common.collect.ImmutableCollection&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.163">clearFiles</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#clearFiles--">StoreFileManager</a></code></span></div>
 <div class="block">Clears all the files currently in use and returns them.</div>
 <dl>
@@ -797,7 +820,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>clearCompactedFiles</h4>
-<pre>public&nbsp;com.google.common.collect.ImmutableCollection&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.167">clearCompactedFiles</a>()</pre>
+<pre>public&nbsp;com.google.common.collect.ImmutableCollection&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.172">clearCompactedFiles</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#clearCompactedFiles--">StoreFileManager</a></code></span></div>
 <div class="block">Clears all the compacted files and returns them. This method is expected to be
  accessed single threaded.</div>
@@ -815,7 +838,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getStorefileCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.174">getStorefileCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.179">getStorefileCount</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getStorefileCount--">StoreFileManager</a></code></span></div>
 <div class="block">Returns the number of files currently in use.</div>
 <dl>
@@ -832,7 +855,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getCandidateFilesForRowKeyBefore</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.181">getCandidateFilesForRowKeyBefore</a>(<a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;targetKey)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.186">getCandidateFilesForRowKeyBefore</a>(<a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;targetKey)</pre>
 <div class="block">See <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getCandidateFilesForRowKeyBefore-org.apache.hadoop.hbase.KeyValue-"><code>StoreFileManager.getCandidateFilesForRowKeyBefore(KeyValue)</code></a>
  for details on this methods.</div>
 <dl>
@@ -852,7 +875,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>updateCandidateFilesForRowKeyBefore</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.198">updateCandidateFilesForRowKeyBefore</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidateFiles,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.203">updateCandidateFilesForRowKeyBefore</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidateFiles,
                                                                <a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;targetKey,
                                                                <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;candidate)</pre>
 <div class="block">See <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getCandidateFilesForRowKeyBefore-org.apache.hadoop.hbase.KeyValue-"><code>StoreFileManager.getCandidateFilesForRowKeyBefore(KeyValue)</code></a> and
@@ -878,7 +901,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getSplitPoint</h4>
-<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.219">getSplitPoint</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;sfs)
+<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.224">getSplitPoint</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;sfs)
                       throws <a href="http://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>
@@ -892,7 +915,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getSplitPoint</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.233">getSplitPoint</a>()
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.238">getSplitPoint</a>()
                      throws <a href="http://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">Override of getSplitPoint that determines the split point as the boundary between two
  stripes, unless it causes significant imbalance between split sides' sizes. In that
@@ -914,7 +937,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getSplitPointFromAllFiles</h4>
-<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.283">getSplitPointFromAllFiles</a>()
+<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.288">getSplitPointFromAllFiles</a>()
                                   throws <a href="http://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>
@@ -928,7 +951,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getMidStripeSplitRatio</h4>
-<pre>private&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.290">getMidStripeSplitRatio</a>(long&nbsp;smallerSize,
+<pre>private&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.295">getMidStripeSplitRatio</a>(long&nbsp;smallerSize,
                                       long&nbsp;largerSize,
                                       long&nbsp;lastLargerSize)</pre>
 </li>
@@ -939,7 +962,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getFilesForScan</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.295">getFilesForScan</a>(byte[]&nbsp;startRow,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.300">getFilesForScan</a>(byte[]&nbsp;startRow,
                                              boolean&nbsp;includeStartRow,
                                              byte[]&nbsp;stopRow,
                                              boolean&nbsp;includeStopRow)</pre>
@@ -962,7 +985,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>addCompactionResults</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.318">addCompactionResults</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;compactedFiles,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.323">addCompactionResults</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;compactedFiles,
                                  <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;results)
                           throws <a href="http://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/StoreFileManager.html#addCompactionResults-java.util.Collection-java.util.Collection-">StoreFileManager</a></code></span></div>
@@ -984,7 +1007,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>markCompactedAway</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.335">markCompactedAway</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;compactedFiles)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.340">markCompactedAway</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;compactedFiles)</pre>
 </li>
 </ul>
 <a name="removeCompactedFiles-java.util.Collection-">
@@ -993,7 +1016,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>removeCompactedFiles</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.342">removeCompactedFiles</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;compactedFiles)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.347">removeCompactedFiles</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;compactedFiles)
                           throws <a href="http://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/StoreFileManager.html#removeCompactedFiles-java.util.Collection-">StoreFileManager</a></code></span></div>
 <div class="block">Remove the compacted files</div>
@@ -1013,7 +1036,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreCompactionPriority</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.353">getStoreCompactionPriority</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.358">getStoreCompactionPriority</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getStoreCompactionPriority--">getStoreCompactionPriority</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileManager</a></code></dd>
@@ -1028,7 +1051,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getStripeFilesSize</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.374">getStripeFilesSize</a>(int&nbsp;stripeIndex)</pre>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.379">getStripeFilesSize</a>(int&nbsp;stripeIndex)</pre>
 <div class="block">Gets the total size of all files in the stripe.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1044,7 +1067,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>loadUnclassifiedStoreFiles</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.389">loadUnclassifiedStoreFiles</a>(<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;storeFiles)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.394">loadUnclassifiedStoreFiles</a>(<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;storeFiles)</pre>
 <div class="block">Loads initial store files that were picked up from some physical location pertaining to
  this store (presumably). Unlike adding files after compaction, assumes empty initial
  sets, and is forgiving with regard to stripe constraints - at worst, many/all files will
@@ -1061,7 +1084,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>ensureEdgeStripeMetadata</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.499">ensureEdgeStripeMetadata</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;stripe,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.504">ensureEdgeStripeMetadata</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;stripe,
                                       boolean&nbsp;isFirst)</pre>
 </li>
 </ul>
@@ -1071,7 +1094,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>ensureLevel0Metadata</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.506">ensureLevel0Metadata</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&nbsp;sf)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.511">ensureLevel0Metadata</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&nbsp;sf)</pre>
 </li>
 </ul>
 <a name="debugDumpState-java.lang.String-">
@@ -1080,7 +1103,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>debugDumpState</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.511">debugDumpState</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;string)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.516">debugDumpState</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;string)</pre>
 </li>
 </ul>
 <a name="isOpen-byte:A-">
@@ -1089,7 +1112,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isOpen</h4>
-<pre>private static final&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.541">isOpen</a>(byte[]&nbsp;key)</pre>
+<pre>private static final&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.546">isOpen</a>(byte[]&nbsp;key)</pre>
 <div class="block">Checks whether the key indicates an open interval boundary (i.e. infinity).</div>
 </li>
 </ul>
@@ -1099,7 +1122,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isOpen</h4>
-<pre>private static final&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.545">isOpen</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)</pre>
+<pre>private static final&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.550">isOpen</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)</pre>
 </li>
 </ul>
 <a name="isInvalid-byte:A-">
@@ -1108,7 +1131,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isInvalid</h4>
-<pre>private static final&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.552">isInvalid</a>(byte[]&nbsp;key)</pre>
+<pre>private static final&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.557">isInvalid</a>(byte[]&nbsp;key)</pre>
 <div class="block">Checks whether the key is invalid (e.g. from an L0 file, or non-stripe-compacted files).</div>
 </li>
 </ul>
@@ -1118,7 +1141,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>rowEquals</h4>
-<pre>private final&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.560">rowEquals</a>(byte[]&nbsp;k1,
+<pre>private final&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.565">rowEquals</a>(byte[]&nbsp;k1,
                                 byte[]&nbsp;k2)</pre>
 <div class="block">Compare two keys for equality.</div>
 </li>
@@ -1129,7 +1152,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>nonOpenRowCompare</h4>
-<pre>private final&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.567">nonOpenRowCompare</a>(byte[]&nbsp;k1,
+<pre>private final&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.572">nonOpenRowCompare</a>(byte[]&nbsp;k1,
                                     byte[]&nbsp;k2)</pre>
 <div class="block">Compare two keys. Keys must not be open (isOpen(row) == false).</div>
 </li>
@@ -1140,7 +1163,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>nonOpenRowCompare</h4>
-<pre>private final&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.572">nonOpenRowCompare</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;k1,
+<pre>private final&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.577">nonOpenRowCompare</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;k1,
                                     byte[]&nbsp;k2)</pre>
 </li>
 </ul>
@@ -1150,7 +1173,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>findStripeIndexByEndRow</h4>
-<pre>private final&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.580">findStripeIndexByEndRow</a>(byte[]&nbsp;endRow)</pre>
+<pre>private final&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.585">findStripeIndexByEndRow</a>(byte[]&nbsp;endRow)</pre>
 <div class="block">Finds the stripe index by end row.</div>
 </li>
 </ul>
@@ -1160,7 +1183,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>findStripeForRow</h4>
-<pre>private final&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.589">findStripeForRow</a>(byte[]&nbsp;row,
+<pre>private final&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.594">findStripeForRow</a>(byte[]&nbsp;row,
                                    boolean&nbsp;isStart)</pre>
 <div class="block">Finds the stripe index for the stripe containing a row provided externally for get/scan.</div>
 </li>
@@ -1171,7 +1194,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getStartRow</h4>
-<pre>public final&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.603">getStartRow</a>(int&nbsp;stripeIndex)</pre>
+<pre>public final&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.608">getStartRow</a>(int&nbsp;stripeIndex)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/StripeCompactionPolicy.StripeInformationProvider.html#getStartRow-int-">StripeCompactionPolicy.StripeInformationProvider</a></code></span></div>
 <div class="block">Gets the start row for a given stripe.</div>
 <dl>
@@ -1190,7 +1213,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getEndRow</h4>
-<pre>public final&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.608">getEndRow</a>(int&nbsp;stripeIndex)</pre>
+<pre>public final&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.613">getEndRow</a>(int&nbsp;stripeIndex)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/StripeCompactionPolicy.StripeInformationProvider.html#getEndRow-int-">StripeCompactionPolicy.StripeInformationProvider</a></code></span></div>
 <div class="block">Gets the end row for a given stripe.</div>
 <dl>
@@ -1209,7 +1232,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>startOf</h4>
-<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.614">startOf</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&nbsp;sf)</pre>
+<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.619">startOf</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&nbsp;sf)</pre>
 </li>
 </ul>
 <a name="endOf-org.apache.hadoop.hbase.regionserver.StoreFile-">
@@ -1218,7 +1241,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>endOf</h4>
-<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.625">endOf</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&nbsp;sf)</pre>
+<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.630">endOf</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&nbsp;sf)</pre>
 </li>
 </ul>
 <a name="insertFileIntoStripe-java.util.ArrayList-org.apache.hadoop.hbase.regionserver.StoreFile-">
@@ -1227,7 +1250,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>insertFileIntoStripe</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.641">insertFileIntoStripe</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;stripe,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.646">insertFileIntoStripe</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;stripe,
                                          <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&nbsp;sf)</pre>
 <div class="block">Inserts a file in the correct place (by seqnum) in a stripe copy.</div>
 <dl>
@@ -1243,7 +1266,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getLevel0Files</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.988">getLevel0Files</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.993">getLevel0Files</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/StripeCompactionPolicy.StripeInformationProvider.html#getLevel0Files--">getLevel0Files</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/StripeCompactionPolicy.StripeInformationProvider.html" title="interface in org.apache.hadoop.hbase.regionserver.compactions">StripeCompactionPolicy.StripeInformationProvider</a></code></dd>
@@ -1258,7 +1281,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getStripeBoundaries</h4>
-<pre>public&nbsp;<a href="http://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/regionserver/StripeStoreFileManager.html#line.993">getStripeBoundaries</a>()</pre>
+<pre>public&nbsp;<a href="http://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/regionserver/StripeStoreFileManager.html#line.998">getStripeBoundaries</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/StripeCompactionPolicy.StripeInformationProvider.html#getStripeBoundaries--">getStripeBoundaries</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/StripeCompactionPolicy.StripeInformationProvider.html" title="interface in org.apache.hadoop.hbase.regionserver.compactions">StripeCompactionPolicy.StripeInformationProvider</a></code></dd>
@@ -1273,7 +1296,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getStripes</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;com.google.common.collect.ImmutableList&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.1003">getStripes</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;com.google.common.collect.ImmutableList&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.1008">getStripes</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/StripeCompactionPolicy.StripeInformationProvider.html#getStripes--">getStripes</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/StripeCompactionPolicy.StripeInformationProvider.html" title="interface in org.apache.hadoop.hbase.regionserver.compactions">StripeCompactionPolicy.StripeInformationProvider</a></code></dd>
@@ -1288,7 +1311,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getStripeCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.1008">getStripeCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.1013">getStripeCount</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/StripeCompactionPolicy.StripeInformationProvider.html#getStripeCount--">getStripeCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/StripeCompactionPolicy.StripeInformationProvider.html" title="interface in org.apache.hadoop.hbase.regionserver.compactions">StripeCompactionPolicy.StripeInformationProvider</a></code></dd>
@@ -1303,7 +1326,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getUnneededFiles</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.1013">getUnneededFiles</a>(long&nbsp;maxTs,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.1018">getUnneededFiles</a>(long&nbsp;maxTs,
                                               <a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;filesCompacting)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -1322,7 +1345,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>findExpiredFiles</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.1024">findExpiredFiles</a>(com.google.common.collect.ImmutableList&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;stripe,
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.1029">findExpiredFiles</a>(com.google.common.collect.ImmutableList&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;stripe,
                                                long&nbsp;maxTs,
                                                <a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;filesCompacting,
                                                <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;expiredStoreFiles)</pre>
@@ -1334,7 +1357,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactionPressure</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.1045">getCompactionPressure</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.1050">getCompactionPressure</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getCompactionPressure--">getCompactionPressure</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileManager</a></code></dd>
@@ -1351,7 +1374,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getStoreFileComparator</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.1077">getStoreFileComparator</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#line.1082">getStoreFileComparator</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getStoreFileComparator--">getStoreFileComparator</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileManager</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/KeyValueScanner.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/KeyValueScanner.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/KeyValueScanner.html
index 4a8abc3..95a7f2e 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/KeyValueScanner.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/KeyValueScanner.html
@@ -687,6 +687,36 @@
 </td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">Store.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/Store.html#recreateScanners-java.util.List-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-boolean-">recreateScanners</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;currentFileScanners,
+                boolean&nbsp;cacheBlocks,
+                boolean&nbsp;usePread,
+                boolean&nbsp;isCompaction,
+                <a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">ScanQueryMatcher</a>&nbsp;matcher,
+                byte[]&nbsp;startRow,
+                boolean&nbsp;includeStartRow,
+                byte[]&nbsp;stopRow,
+                boolean&nbsp;includeStopRow,
+                long&nbsp;readPt,
+                boolean&nbsp;includeMemstoreScanner)</code>
+<div class="block">Recreates the scanners on the current list of active store file scanners</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">HStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#recreateScanners-java.util.List-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-boolean-">recreateScanners</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;currentFileScanners,
+                boolean&nbsp;cacheBlocks,
+                boolean&nbsp;usePread,
+                boolean&nbsp;isCompaction,
+                <a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">ScanQueryMatcher</a>&nbsp;matcher,
+                byte[]&nbsp;startRow,
+                boolean&nbsp;includeStartRow,
+                byte[]&nbsp;stopRow,
+                boolean&nbsp;includeStopRow,
+                long&nbsp;readPt,
+                boolean&nbsp;includeMemstoreScanner)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>protected <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#selectScannersFrom-java.util.List-">selectScannersFrom</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;allScanners)</code>
 <div class="block">Filters the given list of scanners using Bloom filter, time range, and
@@ -862,6 +892,36 @@
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">Store.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/Store.html#recreateScanners-java.util.List-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-boolean-">recreateScanners</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;currentFileScanners,
+                boolean&nbsp;cacheBlocks,
+                boolean&nbsp;usePread,
+                boolean&nbsp;isCompaction,
+                <a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">ScanQueryMatcher</a>&nbsp;matcher,
+                byte[]&nbsp;startRow,
+                boolean&nbsp;includeStartRow,
+                byte[]&nbsp;stopRow,
+                boolean&nbsp;includeStopRow,
+                long&nbsp;readPt,
+                boolean&nbsp;includeMemstoreScanner)</code>
+<div class="block">Recreates the scanners on the current list of active store file scanners</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">HStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#recreateScanners-java.util.List-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-boolean-">recreateScanners</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;currentFileScanners,
+                boolean&nbsp;cacheBlocks,
+                boolean&nbsp;usePread,
+                boolean&nbsp;isCompaction,
+                <a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">ScanQueryMatcher</a>&nbsp;matcher,
+                byte[]&nbsp;startRow,
+                boolean&nbsp;includeStartRow,
+                byte[]&nbsp;stopRow,
+                boolean&nbsp;includeStopRow,
+                long&nbsp;readPt,
+                boolean&nbsp;includeMemstoreScanner)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#resetKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">resetKVHeap</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
            <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="class in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/StoreFile.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/StoreFile.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/StoreFile.html
index f4cde49..2307512 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/StoreFile.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/StoreFile.html
@@ -762,6 +762,14 @@
 <td class="colLast"><span class="typeNameLabel">StripeStoreFileManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#getCompactedfiles--">getCompactedfiles</a></span>()</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">Store.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getCompactedFiles--">getCompactedFiles</a></span>()</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">HStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactedFiles--">getCompactedFiles</a></span>()</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">StripeStoreFileManager.KeyBeforeConcatenatedLists.Iterator.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.KeyBeforeConcatenatedLists.Iterator.html#getComponents--">getComponents</a></span>()</code>&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/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 b82b469..3d0744c 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -688,20 +688,20 @@
 <ul>
 <li type="circle">java.lang.<a href="http://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="http://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="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.LimitScope.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.LimitScope</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScanType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/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/StoreScanner.StoreScannerCompactionRace.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">StoreScanner.StoreScannerCompactionRace</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ImmutableSegment.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">FlushType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.NextState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/Region.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.FlushResult.Result</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ImmutableSegment.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactor.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactor.Action</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/RegionOpeningState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">RegionOpeningState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactor.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactor.Action</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.StoreScannerCompactionRace.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">StoreScanner.StoreScannerCompactionRace</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/DefaultHeapMemoryTuner.StepDirection.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DefaultHeapMemoryTuner.StepDirection</span></a></li>
 </ul>
 </li>
 </ul>


[06/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html
index a1d9f98..9ce2441 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStore.MyList.html
@@ -28,1446 +28,1556 @@
 <span class="sourceLineNo">020</span>package org.apache.hadoop.hbase.regionserver;<a name="line.20"></a>
 <span class="sourceLineNo">021</span><a name="line.21"></a>
 <span class="sourceLineNo">022</span>import static org.junit.Assert.assertEquals;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.junit.Assert.assertNull;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.junit.Assert.assertTrue;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import static org.mockito.Matchers.any;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import static org.mockito.Mockito.spy;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import static org.mockito.Mockito.times;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import static org.mockito.Mockito.verify;<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.io.IOException;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.lang.ref.SoftReference;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.security.PrivilegedExceptionAction;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.ArrayList;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.Arrays;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.Collection;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.Collections;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.Iterator;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.List;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.ListIterator;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import java.util.NavigableSet;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import java.util.TreeSet;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import java.util.concurrent.ConcurrentSkipListSet;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.concurrent.CountDownLatch;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import java.util.concurrent.ExecutorService;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import java.util.concurrent.Executors;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import java.util.concurrent.TimeUnit;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.util.function.Consumer;<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.commons.logging.Log;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.commons.logging.LogFactory;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.fs.FileStatus;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FileSystem;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FilterFileSystem;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.LocalFileSystem;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.Path;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.permission.FsPermission;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.Cell;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HConstants;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.TableName;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Get;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.security.User;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.util.Progressable;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.junit.After;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.junit.Assert;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.junit.Before;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.junit.Rule;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.junit.Test;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.junit.experimental.categories.Category;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.junit.rules.TestName;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.mockito.Mockito;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>import com.google.common.collect.Lists;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>/**<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * Test class for the Store<a name="line.110"></a>
-<span class="sourceLineNo">111</span> */<a name="line.111"></a>
-<span class="sourceLineNo">112</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.112"></a>
-<span class="sourceLineNo">113</span>public class TestStore {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private static final Log LOG = LogFactory.getLog(TestStore.class);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  @Rule public TestName name = new TestName();<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  HStore store;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  byte [] table = Bytes.toBytes("table");<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  byte [] family = Bytes.toBytes("family");<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  byte [] row = Bytes.toBytes("row");<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  byte [] row2 = Bytes.toBytes("row2");<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  byte [] qf1 = Bytes.toBytes("qf1");<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  byte [] qf2 = Bytes.toBytes("qf2");<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  byte [] qf3 = Bytes.toBytes("qf3");<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  byte [] qf4 = Bytes.toBytes("qf4");<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  byte [] qf5 = Bytes.toBytes("qf5");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  byte [] qf6 = Bytes.toBytes("qf6");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  NavigableSet&lt;byte[]&gt; qualifiers = new ConcurrentSkipListSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  List&lt;Cell&gt; expected = new ArrayList&lt;&gt;();<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  List&lt;Cell&gt; result = new ArrayList&lt;&gt;();<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  long id = System.currentTimeMillis();<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  Get get = new Get(row);<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private final String DIR = TEST_UTIL.getDataTestDir("TestStore").toString();<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertFalse;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.junit.Assert.assertNull;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.junit.Assert.assertTrue;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import static org.mockito.Matchers.any;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import static org.mockito.Mockito.spy;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import static org.mockito.Mockito.times;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import static org.mockito.Mockito.verify;<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.io.IOException;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.lang.ref.SoftReference;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.security.PrivilegedExceptionAction;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.ArrayList;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.Arrays;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Collection;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.Collections;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.Iterator;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.List;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import java.util.ListIterator;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import java.util.NavigableSet;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import java.util.TreeSet;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import java.util.concurrent.ConcurrentSkipListSet;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.concurrent.CountDownLatch;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.ExecutorService;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import java.util.concurrent.Executors;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import java.util.concurrent.TimeUnit;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import java.util.function.Consumer;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.commons.logging.Log;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.commons.logging.LogFactory;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.conf.Configuration;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FileStatus;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.FileSystem;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.FilterFileSystem;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.LocalFileSystem;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.Path;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.fs.permission.FsPermission;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.Cell;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HConstants;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.TableName;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Get;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.security.User;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.util.Progressable;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.junit.After;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.junit.Assert;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.junit.Before;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.junit.Rule;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.junit.Test;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.junit.experimental.categories.Category;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.junit.rules.TestName;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.mockito.Mockito;<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>import com.google.common.collect.Lists;<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> * Test class for the Store<a name="line.111"></a>
+<span class="sourceLineNo">112</span> */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.113"></a>
+<span class="sourceLineNo">114</span>public class TestStore {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static final Log LOG = LogFactory.getLog(TestStore.class);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  @Rule public TestName name = new TestName();<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  HStore store;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  byte [] table = Bytes.toBytes("table");<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  byte [] family = Bytes.toBytes("family");<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>  byte [] row = Bytes.toBytes("row");<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  byte [] row2 = Bytes.toBytes("row2");<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  byte [] qf1 = Bytes.toBytes("qf1");<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  byte [] qf2 = Bytes.toBytes("qf2");<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  byte [] qf3 = Bytes.toBytes("qf3");<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  byte [] qf4 = Bytes.toBytes("qf4");<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  byte [] qf5 = Bytes.toBytes("qf5");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  byte [] qf6 = Bytes.toBytes("qf6");<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  NavigableSet&lt;byte[]&gt; qualifiers = new ConcurrentSkipListSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  List&lt;Cell&gt; expected = new ArrayList&lt;&gt;();<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  List&lt;Cell&gt; result = new ArrayList&lt;&gt;();<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  long id = System.currentTimeMillis();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  Get get = new Get(row);<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private final String DIR = TEST_UTIL.getDataTestDir("TestStore").toString();<a name="line.140"></a>
 <span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  /**<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * Setup<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * @throws IOException<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  @Before<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  public void setUp() throws IOException {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    qualifiers.add(qf1);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    qualifiers.add(qf3);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    qualifiers.add(qf5);<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>    Iterator&lt;byte[]&gt; iter = qualifiers.iterator();<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    while(iter.hasNext()){<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      byte [] next = iter.next();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      expected.add(new KeyValue(row, family, next, 1, (byte[])null));<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      get.addColumn(family, next);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>  private void init(String methodName) throws IOException {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    init(methodName, TEST_UTIL.getConfiguration());<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  private void init(String methodName, Configuration conf)<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  throws IOException {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    // some of the tests write 4 versions and then flush<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    // (with HBASE-4241, lower versions are collected on flush)<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    hcd.setMaxVersions(4);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    init(methodName, conf, hcd);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  private void init(String methodName, Configuration conf,<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      HColumnDescriptor hcd) throws IOException {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(table));<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    init(methodName, conf, htd, hcd);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  }<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      HColumnDescriptor hcd) throws IOException {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    return init(methodName, conf, htd, hcd, null);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  @SuppressWarnings("deprecation")<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      HColumnDescriptor hcd, MyScannerHook hook) throws IOException {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    //Setting up a Store<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    Path basedir = new Path(DIR+methodName);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    Path tableDir = FSUtils.getTableDir(basedir, htd.getTableName());<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    final Path logdir = new Path(basedir, AbstractFSWALProvider.getWALDirectoryName(methodName));<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>    FileSystem fs = FileSystem.get(conf);<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>    fs.delete(logdir, true);<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>    if (htd.hasFamily(hcd.getName())) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      htd.modifyFamily(hcd);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    } else {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      htd.addFamily(hcd);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false, MemStoreLABImpl.CHUNK_SIZE_DEFAULT, 1, 0, null);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    final Configuration walConf = new Configuration(conf);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    FSUtils.setRootDir(walConf, basedir);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    final WALFactory wals = new WALFactory(walConf, null, methodName);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    HRegion region = new HRegion(tableDir, wals.getWAL(info.getEncodedNameAsBytes(),<a name="line.206"></a>
-<span class="sourceLineNo">207</span>            info.getTable().getNamespace()), fs, conf, info, htd, null);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    if (hook == null) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      store = new HStore(region, hcd, conf);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    } else {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      store = new MyStore(region, hcd, conf, hook);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    return store;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  }<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  /**<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * Test we do not lose data if we fail a flush and then close.<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * Part of HBase-10466<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * @throws Exception<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   */<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  @Test<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  public void testFlushSizeAccounting() throws Exception {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    LOG.info("Setting up a faulty file system that cannot write in " +<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      this.name.getMethodName());<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    // Only retry once.<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    conf.setInt("hbase.hstore.flush.retries.number", 1);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    User user = User.createUserForTesting(conf, this.name.getMethodName(),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      new String[]{"foo"});<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // Inject our faulty LocalFileSystem<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    conf.setClass("fs.file.impl", FaultyFileSystem.class, FileSystem.class);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    user.runAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      public Object run() throws Exception {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        // Make sure it worked (above is sensitive to caching details in hadoop core)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        FileSystem fs = FileSystem.get(conf);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        Assert.assertEquals(FaultyFileSystem.class, fs.getClass());<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        FaultyFileSystem ffs = (FaultyFileSystem)fs;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>        // Initialize region<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        init(name.getMethodName(), conf);<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span>        MemstoreSize size = store.memstore.getFlushableSize();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        Assert.assertEquals(0, size.getDataSize());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        LOG.info("Adding some data");<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        MemstoreSize kvSize = new MemstoreSize();<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        store.add(new KeyValue(row, family, qf1, 1, (byte[])null), kvSize);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        size = store.memstore.getFlushableSize();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        Assert.assertEquals(kvSize, size);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        // Flush.  Bug #1 from HBASE-10466.  Make sure size calculation on failed flush is right.<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        try {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          LOG.info("Flushing");<a name="line.252"></a>
-<span class="sourceLineNo">253</span>          flushStore(store, id++);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          Assert.fail("Didn't bubble up IOE!");<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        } catch (IOException ioe) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>          Assert.assertTrue(ioe.getMessage().contains("Fault injected"));<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        size = store.memstore.getFlushableSize();<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        Assert.assertEquals(kvSize, size);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        MemstoreSize kvSize2 = new MemstoreSize();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        store.add(new KeyValue(row, family, qf2, 2, (byte[])null), kvSize2);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        // Even though we add a new kv, we expect the flushable size to be 'same' since we have<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        // not yet cleared the snapshot -- the above flush failed.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        Assert.assertEquals(kvSize, size);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        ffs.fault.set(false);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        flushStore(store, id++);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        size = store.memstore.getFlushableSize();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        // Size should be the foreground kv size.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        Assert.assertEquals(kvSize2, size);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        flushStore(store, id++);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        size = store.memstore.getFlushableSize();<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        assertEquals(0, size.getDataSize());<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        assertEquals(0, size.getHeapSize());<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        return null;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    });<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  }<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  /**<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   * Verify that compression and data block encoding are respected by the<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * Store.createWriterInTmp() method, used on store flush.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   */<a name="line.282"></a>
-<span class="sourceLineNo">283</span>  @Test<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  public void testCreateWriter() throws Exception {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    Configuration conf = HBaseConfiguration.create();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    FileSystem fs = FileSystem.get(conf);<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    hcd.setCompressionType(Compression.Algorithm.GZ);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    hcd.setDataBlockEncoding(DataBlockEncoding.DIFF);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    init(name.getMethodName(), conf, hcd);<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>    // Test createWriterInTmp()<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    StoreFileWriter writer = store.createWriterInTmp(4, hcd.getCompressionType(), false, true, false);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    Path path = writer.getPath();<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    writer.append(new KeyValue(row, family, qf1, Bytes.toBytes(1)));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    writer.append(new KeyValue(row, family, qf2, Bytes.toBytes(2)));<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    writer.append(new KeyValue(row2, family, qf1, Bytes.toBytes(3)));<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    writer.append(new KeyValue(row2, family, qf2, Bytes.toBytes(4)));<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    writer.close();<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>    // Verify that compression and encoding settings are respected<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    HFile.Reader reader = HFile.createReader(fs, path, new CacheConfig(conf), true, conf);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    Assert.assertEquals(hcd.getCompressionType(), reader.getCompressionAlgorithm());<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    Assert.assertEquals(hcd.getDataBlockEncoding(), reader.getDataBlockEncoding());<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    reader.close();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  /**<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * Setup<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * @throws IOException<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   */<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  @Before<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  public void setUp() throws IOException {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    qualifiers.add(qf1);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    qualifiers.add(qf3);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    qualifiers.add(qf5);<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    Iterator&lt;byte[]&gt; iter = qualifiers.iterator();<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    while(iter.hasNext()){<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      byte [] next = iter.next();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      expected.add(new KeyValue(row, family, next, 1, (byte[])null));<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      get.addColumn(family, next);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>  private void init(String methodName) throws IOException {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    init(methodName, TEST_UTIL.getConfiguration());<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  private Store init(String methodName, Configuration conf)<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  throws IOException {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    // some of the tests write 4 versions and then flush<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    // (with HBASE-4241, lower versions are collected on flush)<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    hcd.setMaxVersions(4);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    return init(methodName, conf, hcd);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>  private Store init(String methodName, Configuration conf,<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      HColumnDescriptor hcd) throws IOException {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(table));<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    return init(methodName, conf, htd, hcd);<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>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      HColumnDescriptor hcd) throws IOException {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    return init(methodName, conf, htd, hcd, null);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @SuppressWarnings("deprecation")<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      HColumnDescriptor hcd, MyScannerHook hook) throws IOException {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    return init(methodName, conf, htd, hcd, hook, false);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  @SuppressWarnings("deprecation")<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private Store init(String methodName, Configuration conf, HTableDescriptor htd,<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      HColumnDescriptor hcd, MyScannerHook hook, boolean switchToPread) throws IOException {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    //Setting up a Store<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    Path basedir = new Path(DIR+methodName);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    Path tableDir = FSUtils.getTableDir(basedir, htd.getTableName());<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    final Path logdir = new Path(basedir, AbstractFSWALProvider.getWALDirectoryName(methodName));<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>    FileSystem fs = FileSystem.get(conf);<a name="line.198"></a>
+<span class="sourceLineNo">199</span><a name="line.199"></a>
+<span class="sourceLineNo">200</span>    fs.delete(logdir, true);<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    if (htd.hasFamily(hcd.getName())) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      htd.modifyFamily(hcd);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    } else {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      htd.addFamily(hcd);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false,<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      MemStoreLABImpl.CHUNK_SIZE_DEFAULT, 1, 0, null);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    final Configuration walConf = new Configuration(conf);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    FSUtils.setRootDir(walConf, basedir);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    final WALFactory wals = new WALFactory(walConf, null, methodName);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    HRegion region = new HRegion(tableDir, wals.getWAL(info.getEncodedNameAsBytes(),<a name="line.213"></a>
+<span class="sourceLineNo">214</span>            info.getTable().getNamespace()), fs, conf, info, htd, null);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    if (hook == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      store = new HStore(region, hcd, conf);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    } else {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      store = new MyStore(region, hcd, conf, hook, switchToPread);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    return store;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  /**<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * Test we do not lose data if we fail a flush and then close.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * Part of HBase-10466<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   * @throws Exception<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   */<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  @Test<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  public void testFlushSizeAccounting() throws Exception {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    LOG.info("Setting up a faulty file system that cannot write in " +<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      this.name.getMethodName());<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    // Only retry once.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    conf.setInt("hbase.hstore.flush.retries.number", 1);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    User user = User.createUserForTesting(conf, this.name.getMethodName(),<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      new String[]{"foo"});<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    // Inject our faulty LocalFileSystem<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    conf.setClass("fs.file.impl", FaultyFileSystem.class, FileSystem.class);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    user.runAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      @Override<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      public Object run() throws Exception {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        // Make sure it worked (above is sensitive to caching details in hadoop core)<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        FileSystem fs = FileSystem.get(conf);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        Assert.assertEquals(FaultyFileSystem.class, fs.getClass());<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        FaultyFileSystem ffs = (FaultyFileSystem)fs;<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>        // Initialize region<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        init(name.getMethodName(), conf);<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>        MemstoreSize size = store.memstore.getFlushableSize();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        Assert.assertEquals(0, size.getDataSize());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        LOG.info("Adding some data");<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        MemstoreSize kvSize = new MemstoreSize();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        store.add(new KeyValue(row, family, qf1, 1, (byte[])null), kvSize);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        size = store.memstore.getFlushableSize();<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        Assert.assertEquals(kvSize, size);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        // Flush.  Bug #1 from HBASE-10466.  Make sure size calculation on failed flush is right.<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        try {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          LOG.info("Flushing");<a name="line.259"></a>
+<span class="sourceLineNo">260</span>          flushStore(store, id++);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>          Assert.fail("Didn't bubble up IOE!");<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        } catch (IOException ioe) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          Assert.assertTrue(ioe.getMessage().contains("Fault injected"));<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        size = store.memstore.getFlushableSize();<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        Assert.assertEquals(kvSize, size);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        MemstoreSize kvSize2 = new MemstoreSize();<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        store.add(new KeyValue(row, family, qf2, 2, (byte[])null), kvSize2);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        // Even though we add a new kv, we expect the flushable size to be 'same' since we have<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        // not yet cleared the snapshot -- the above flush failed.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        Assert.assertEquals(kvSize, size);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        ffs.fault.set(false);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        flushStore(store, id++);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        size = store.memstore.getFlushableSize();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        // Size should be the foreground kv size.<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        Assert.assertEquals(kvSize2, size);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        flushStore(store, id++);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        size = store.memstore.getFlushableSize();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        assertEquals(0, size.getDataSize());<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        assertEquals(0, size.getHeapSize());<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        return null;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    });<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  }<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>  /**<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * Verify that compression and data block encoding are respected by the<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * Store.createWriterInTmp() method, used on store flush.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   */<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  @Test<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  public void testCreateWriter() throws Exception {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    Configuration conf = HBaseConfiguration.create();<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    FileSystem fs = FileSystem.get(conf);<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    hcd.setCompressionType(Compression.Algorithm.GZ);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    hcd.setDataBlockEncoding(DataBlockEncoding.DIFF);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    init(name.getMethodName(), conf, hcd);<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // Test createWriterInTmp()<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    StoreFileWriter writer = store.createWriterInTmp(4, hcd.getCompressionType(), false, true, false);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    Path path = writer.getPath();<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    writer.append(new KeyValue(row, family, qf1, Bytes.toBytes(1)));<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    writer.append(new KeyValue(row, family, qf2, Bytes.toBytes(2)));<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    writer.append(new KeyValue(row2, family, qf1, Bytes.toBytes(3)));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    writer.append(new KeyValue(row2, family, qf2, Bytes.toBytes(4)));<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    writer.close();<a name="line.307"></a>
 <span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  @Test<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  public void testDeleteExpiredStoreFiles() throws Exception {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    testDeleteExpiredStoreFiles(0);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    testDeleteExpiredStoreFiles(1);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  /*<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * @param minVersions the MIN_VERSIONS for the column family<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   */<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public void testDeleteExpiredStoreFiles(int minVersions) throws Exception {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    int storeFileNum = 4;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    int ttl = 4;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    IncrementingEnvironmentEdge edge = new IncrementingEnvironmentEdge();<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    EnvironmentEdgeManagerTestHelper.injectEdge(edge);<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    Configuration conf = HBaseConfiguration.create();<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    // Enable the expired store file deletion<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    conf.setBoolean("hbase.store.delete.expired.storefile", true);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    // Set the compaction threshold higher to avoid normal compactions.<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY, 5);<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    hcd.setMinVersions(minVersions);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    hcd.setTimeToLive(ttl);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    init(name.getMethodName() + "-" + minVersions, conf, hcd);<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>    long storeTtl = this.store.getScanInfo().getTtl();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    long sleepTime = storeTtl / storeFileNum;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    long timeStamp;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    // There are 4 store files and the max time stamp difference among these<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    // store files will be (this.store.ttl / storeFileNum)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      LOG.info("Adding some data for the store file #" + i);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      timeStamp = EnvironmentEdgeManager.currentTime();<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      this.store.add(new KeyValue(row, family, qf1, timeStamp, (byte[]) null), null);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      this.store.add(new KeyValue(row, family, qf2, timeStamp, (byte[]) null), null);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      this.store.add(new KeyValue(row, family, qf3, timeStamp, (byte[]) null), null);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      flush(i);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      edge.incrementTime(sleepTime);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    }<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>    // Verify the total number of store files<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    Assert.assertEquals(storeFileNum, this.store.getStorefiles().size());<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>     // Each call will find one expired store file and delete it before compaction happens.<a name="line.353"></a>
-<span class="sourceLineNo">354</span>     // There will be no compaction due to threshold above. Last file will not be replaced.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    for (int i = 1; i &lt;= storeFileNum - 1; i++) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      // verify the expired store file.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      assertNull(this.store.requestCompaction());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      // Ensure i files are gone.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      if (minVersions == 0) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        assertEquals(storeFileNum - i, sfs.size());<a name="line.361"></a>
-<span class="sourceLineNo">362</span>        // Ensure only non-expired files remain.<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        for (StoreFile sf : sfs) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>          assertTrue(sf.getReader().getMaxTimestamp() &gt;= (edge.currentTime() - storeTtl));<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      } else {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        assertEquals(storeFileNum, sfs.size());<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      // Let the next store file expired.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      edge.incrementTime(sleepTime);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    }<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    assertNull(this.store.requestCompaction());<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>    Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    // Assert the last expired file is not removed.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    if (minVersions == 0) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      assertEquals(1, sfs.size());<a name="line.377"></a>
+<span class="sourceLineNo">309</span>    // Verify that compression and encoding settings are respected<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    HFile.Reader reader = HFile.createReader(fs, path, new CacheConfig(conf), true, conf);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    Assert.assertEquals(hcd.getCompressionType(), reader.getCompressionAlgorithm());<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    Assert.assertEquals(hcd.getDataBlockEncoding(), reader.getDataBlockEncoding());<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    reader.close();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  @Test<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public void testDeleteExpiredStoreFiles() throws Exception {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    testDeleteExpiredStoreFiles(0);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    testDeleteExpiredStoreFiles(1);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  /*<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   * @param minVersions the MIN_VERSIONS for the column family<a name="line.323"></a>
+<span class="sourceLineNo">324</span>   */<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public void testDeleteExpiredStoreFiles(int minVersions) throws Exception {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    int storeFileNum = 4;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    int ttl = 4;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    IncrementingEnvironmentEdge edge = new IncrementingEnvironmentEdge();<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    EnvironmentEdgeManagerTestHelper.injectEdge(edge);<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>    Configuration conf = HBaseConfiguration.create();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    // Enable the expired store file deletion<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    conf.setBoolean("hbase.store.delete.expired.storefile", true);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    // Set the compaction threshold higher to avoid normal compactions.<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY, 5);<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    hcd.setMinVersions(minVersions);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    hcd.setTimeToLive(ttl);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    init(name.getMethodName() + "-" + minVersions, conf, hcd);<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    long storeTtl = this.store.getScanInfo().getTtl();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    long sleepTime = storeTtl / storeFileNum;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    long timeStamp;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    // There are 4 store files and the max time stamp difference among these<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // store files will be (this.store.ttl / storeFileNum)<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      LOG.info("Adding some data for the store file #" + i);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      timeStamp = EnvironmentEdgeManager.currentTime();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      this.store.add(new KeyValue(row, family, qf1, timeStamp, (byte[]) null), null);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      this.store.add(new KeyValue(row, family, qf2, timeStamp, (byte[]) null), null);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      this.store.add(new KeyValue(row, family, qf3, timeStamp, (byte[]) null), null);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      flush(i);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      edge.incrementTime(sleepTime);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>    // Verify the total number of store files<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    Assert.assertEquals(storeFileNum, this.store.getStorefiles().size());<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>     // Each call will find one expired store file and delete it before compaction happens.<a name="line.360"></a>
+<span class="sourceLineNo">361</span>     // There will be no compaction due to threshold above. Last file will not be replaced.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    for (int i = 1; i &lt;= storeFileNum - 1; i++) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      // verify the expired store file.<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      assertNull(this.store.requestCompaction());<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      // Ensure i files are gone.<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      if (minVersions == 0) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        assertEquals(storeFileNum - i, sfs.size());<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        // Ensure only non-expired files remain.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        for (StoreFile sf : sfs) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>          assertTrue(sf.getReader().getMaxTimestamp() &gt;= (edge.currentTime() - storeTtl));<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        }<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      } else {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        assertEquals(storeFileNum, sfs.size());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      // Let the next store file expired.<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      edge.incrementTime(sleepTime);<a name="line.377"></a>
 <span class="sourceLineNo">378</span>    }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    long ts = sfs.iterator().next().getReader().getMaxTimestamp();<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    assertTrue(ts &lt; (edge.currentTime() - storeTtl));<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    for (StoreFile sf : sfs) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      sf.closeReader(true);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  @Test<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public void testLowestModificationTime() throws Exception {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    Configuration conf = HBaseConfiguration.create();<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    FileSystem fs = FileSystem.get(conf);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    // Initialize region<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    init(name.getMethodName(), conf);<a name="line.392"></a>
+<span class="sourceLineNo">379</span>    assertNull(this.store.requestCompaction());<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>    Collection&lt;StoreFile&gt; sfs = this.store.getStorefiles();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    // Assert the last expired file is not removed.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    if (minVersions == 0) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      assertEquals(1, sfs.size());<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    }<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    long ts = sfs.iterator().next().getReader().getMaxTimestamp();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    assertTrue(ts &lt; (edge.currentTime() - storeTtl));<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>    for (StoreFile sf : sfs) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      sf.closeReader(true);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    }<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  }<a name="line.392"></a>
 <span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    int storeFileNum = 4;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      LOG.info("Adding some data for the store file #"+i);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      this.store.add(new KeyValue(row, family, qf1, i, (byte[])null), null);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      this.store.add(new KeyValue(row, family, qf2, i, (byte[])null), null);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      this.store.add(new KeyValue(row, family, qf3, i, (byte[])null), null);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      flush(i);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    // after flush; check the lowest time stamp<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    long lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    long lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    Assert.assertEquals(lowestTimeStampFromManager,lowestTimeStampFromFS);<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>    // after compact; check the lowest time stamp<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    store.compact(store.requestCompaction(), NoLimitThroughputController.INSTANCE, null);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    Assert.assertEquals(lowestTimeStampFromManager, lowestTimeStampFromFS);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
+<span class="sourceLineNo">394</span>  @Test<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  public void testLowestModificationTime() throws Exception {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    Configuration conf = HBaseConfiguration.create();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    FileSystem fs = FileSystem.get(conf);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Initialize region<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    init(name.getMethodName(), conf);<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    int storeFileNum = 4;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    for (int i = 1; i &lt;= storeFileNum; i++) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      LOG.info("Adding some data for the store file #"+i);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      this.store.add(new KeyValue(row, family, qf1, i, (byte[])null), null);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      this.store.add(new KeyValue(row, family, qf2, i, (byte[])null), null);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      this.store.add(new KeyValue(row, family, qf3, i, (byte[])null), null);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      flush(i);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    // after flush; check the lowest time stamp<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    long lowestTimeStampFromManager = StoreUtils.getLowestTimestamp(store.getStorefiles());<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    long lowestTimeStampFromFS = getLowestTimeStampFromFS(fs, store.getStorefiles());<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    Assert.assertEquals(lowestTimeStampFromManager,lowestTimeStampFromFS);<a name="line.412"></a>
 <span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  private static long getLowestTimeStampFromFS(FileSystem fs,<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      final Collection&lt;StoreFile&gt; candidates) throws IOException {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    long minTs = Long.MAX_VALUE;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    if (candidates.isEmpty()) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      return minTs;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    }<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    Path[] p = new Path[candidates.size()];<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    int i = 0;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    for (StoreFile sf : candidates) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      p[i] = sf.getPath();<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      ++i;<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    }<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>    FileStatus[] stats = fs.listStatus(p);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    if (stats == null || stats.length == 0) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      return minTs;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    for (FileStatus s : stats) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      minTs = Math.min(minTs, s.getModificationTime());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    return minTs;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  // Get tests<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>  private static final int BLOCKSIZE_SMALL = 8192;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Test for hbase-1686.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @throws IOException<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  @Test<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  public void testEmptyStoreFile() throws IOException {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    init(this.name.getMethodName());<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    // Write a store file.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    flush(1);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    // Now put in place an empty store file.  Its a little tricky.  Have to<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // do manually with hacked in sequence id.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    StoreFile f = this.store.getStorefiles().iterator().next();<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    Path storedir = f.getPath().getParent();<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    long seqid = f.getMaxSequenceId();<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    Configuration c = HBaseConfiguration.create();<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    FileSystem fs = FileSystem.get(c);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    HFileContext meta = new HFileContextBuilder().withBlockSize(BLOCKSIZE_SMALL).build();<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    StoreFileWriter w = new StoreFileWriter.Builder(c, new CacheConfig(c),<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        fs)<a name="line.462"></a>
-<span class="sourceLineNo">463</span>            .withOutputDir(storedir)<a name="line.463"></a>
-<span class="sourceLineNo">464</span>            .withFileContext(meta)<a name="line.464"></a>
-<span class="sourceLineNo">465</span>            .build();<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    w.appendMetadata(seqid + 1, false);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    w.close();<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    this.store.close();<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    // Reopen it... should pick up two files<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    this.store = new HStore(this.store.getHRegion(), this.store.getFamily(), c);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    Assert.assertEquals(2, this.store.getStorefilesCount());<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        get.getRow(),<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        qualifiers);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    Assert.assertEquals(1, result.size());<a name="line.476"></a>
-<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>  /**<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * Getting data from memstore only<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @throws IOException<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   */<a name="line.482"></a>
-<span class="sourceLineNo">483</span>  @Test<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  public void testGet_FromMemStoreOnly() throws IOException {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    init(this.name.getMethodName());<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>    //Put data in memstore<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    this.store.add(new KeyValue(row, family, qf3, 1, (byte[])null), null);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    this.store.add(new KeyValue(row, family, qf4, 1, (byte[])null), null);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    this.store.add(new KeyValue(row, family, qf5, 1, (byte[])null), null);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    this.store.add(new KeyValue(row, family, qf6, 1, (byte[])null), null);<a name="line.493"></a>
-<span class="sourceLineNo">494</span><a name="line.494"></a>
-<span class="sourceLineNo">495</span>    //Get<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    result = HBaseTestingUtility.getFromStoreFile(store,<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        get.getRow(), qualifiers);<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    //Compare<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    assertCheck();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  }<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>   * Getting data from files only<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @throws IOException<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   */<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  @Test<a name="line.507"></a>
-<span class="sourceLineNo">508</span>  public void testGet_FromFilesOnly() throws IOException {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    init(this.name.getMethodName());<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>    //Put data in memstore<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    this.store.add(new KeyValue(row, family, qf1, 1, (byte[])null), null);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    this.store.add(new KeyValue(row, family, qf2, 1, (byte[])null), null);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    //flush<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    flush(1);<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>    //Add more data<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    this.stor

<TRUNCATED>

[16/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-spark/license.html
----------------------------------------------------------------------
diff --git a/hbase-spark/license.html b/hbase-spark/license.html
index 037aa0b..c879c45 100644
--- a/hbase-spark/license.html
+++ b/hbase-spark/license.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-spark/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-spark/mail-lists.html b/hbase-spark/mail-lists.html
index 2ec2e2a..7d4deba 100644
--- a/hbase-spark/mail-lists.html
+++ b/hbase-spark/mail-lists.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-spark/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-spark/plugin-management.html b/hbase-spark/plugin-management.html
index f7d75cf..049647d 100644
--- a/hbase-spark/plugin-management.html
+++ b/hbase-spark/plugin-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-spark/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-spark/plugins.html b/hbase-spark/plugins.html
index 2fe8b14..925924f 100644
--- a/hbase-spark/plugins.html
+++ b/hbase-spark/plugins.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-spark/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-spark/project-info.html b/hbase-spark/project-info.html
index c2efb77..ea0ad5b 100644
--- a/hbase-spark/project-info.html
+++ b/hbase-spark/project-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-spark/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-spark/project-reports.html b/hbase-spark/project-reports.html
index 39918ac..bf94764 100644
--- a/hbase-spark/project-reports.html
+++ b/hbase-spark/project-reports.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-spark/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-spark/project-summary.html b/hbase-spark/project-summary.html
index cc82664..3248075 100644
--- a/hbase-spark/project-summary.html
+++ b/hbase-spark/project-summary.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-spark/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-spark/source-repository.html b/hbase-spark/source-repository.html
index 5d95ae2..ecde28e 100644
--- a/hbase-spark/source-repository.html
+++ b/hbase-spark/source-repository.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/hbase-spark/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-spark/team-list.html b/hbase-spark/team-list.html
index f5ff1e6..013784b 100644
--- a/hbase-spark/team-list.html
+++ b/hbase-spark/team-list.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-22 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-06-23 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-06-22</span>
+        <span id="publishDate">Last Published: 2017-06-23</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index 9aa13f5..b764489 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBaseâ„¢ Home</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -438,7 +438,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: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index d29c939..c2b47af 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Continuous Integration</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -296,7 +296,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index 2022308..92dab71 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Issue Tracking</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -293,7 +293,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index 8f8c208..f07ddcc 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project License</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -496,7 +496,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index ef4af77..b94708e 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -346,7 +346,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index 708f3ac..aacca34 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) Metrics
@@ -464,7 +464,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: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index df9b1e7..2146dda 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -419,7 +419,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: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index 1176f44..807b4a0 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -441,7 +441,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index 3863bc0..f82e688 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Build Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -380,7 +380,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index c2bb29b..fad1bd8 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Powered By Apache HBase™</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -774,7 +774,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: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index 4f1a4cc..63e373c 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -340,7 +340,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index eaff482..dff2813 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -310,7 +310,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index 23106e9..0960cc3 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -336,7 +336,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 0bcd2c7..e2245b1 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
 Running Apache HBase (TM) in pseudo-distributed mode
@@ -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: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index d24a940..4db7b47 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -308,7 +308,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index 588e373..060c663 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Other Apache HBase (TM) Resources</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -336,7 +336,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: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index 662db5a..d9e6fae 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Source Repository</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -304,7 +304,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index 8a470fd..d25b84e 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase™ Sponsors</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -338,7 +338,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: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index 42c8c7c..eb53c78 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Supporting Projects</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -525,7 +525,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: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index 5e7e05e..bc3fe46 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Team list</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -815,7 +815,7 @@ window.onLoad = init();
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-frame.html b/testdevapidocs/allclasses-frame.html
index c0969f9..e183d1e 100644
--- a/testdevapidocs/allclasses-frame.html
+++ b/testdevapidocs/allclasses-frame.html
@@ -1860,7 +1860,7 @@
 <li><a href="org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestStore.MyList</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestStore.MyMemStoreCompactor.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestStore.MyMemStoreCompactor</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html" title="interface in org.apache.hadoop.hbase.regionserver" target="classFrame"><span class="interfaceName">TestStore.MyScannerHook</span></a></li>
-<li><a href="org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestStore.MyStore</a></li>
+<li><a href="org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestStore.MyThread</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestStoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestStoreFileInfo</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestStoreFileRefresherChore</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.FailingHRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestStoreFileRefresherChore.FailingHRegionFileSystem</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-noframe.html b/testdevapidocs/allclasses-noframe.html
index 7c35813..7551e2b 100644
--- a/testdevapidocs/allclasses-noframe.html
+++ b/testdevapidocs/allclasses-noframe.html
@@ -1860,7 +1860,7 @@
 <li><a href="org/apache/hadoop/hbase/regionserver/TestStore.MyList.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.MyList</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestStore.MyMemStoreCompactor.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.MyMemStoreCompactor</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestStore.MyScannerHook.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="interfaceName">TestStore.MyScannerHook</span></a></li>
-<li><a href="org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.MyStore</a></li>
+<li><a href="org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.MyThread</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestStoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileInfo</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileRefresherChore</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.FailingHRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileRefresherChore.FailingHRegionFileSystem</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index 5d5d70d..62d9cd6 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -6320,6 +6320,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestStore.html#createCell-byte:A-long-long-byte:A-">createCell(byte[], long, long, byte[])</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestStore.html#createCell-byte:A-byte:A-long-long-byte:A-">createCell(byte[], byte[], long, long, byte[])</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestBatchScanResultCache.html#createCells-byte:A-int-int-">createCells(byte[], int, int)</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestBatchScanResultCache.html" title="class in org.apache.hadoop.hbase.client">TestBatchScanResultCache</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/http/ssl/KeyStoreTestUtil.html#createClientSSLConfig-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">createClientSSLConfig(String, String, String, String)</a></span> - Static method in class org.apache.hadoop.hbase.http.ssl.<a href="org/apache/hadoop/hbase/http/ssl/KeyStoreTestUtil.html" title="class in org.apache.hadoop.hbase.http.ssl">KeyStoreTestUtil</a></dt>
@@ -13013,6 +13015,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/RESTApiClusterManager.html#getHealthSummary-java.lang.String-java.lang.String-java.lang.String-">getHealthSummary(String, String, String)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/RESTApiClusterManager.html" title="class in org.apache.hadoop.hbase">RESTApiClusterManager</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html#getHeap--">getHeap()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.MyThread</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MockRegionServer.html#getHeapMemoryManager--">getHeapMemoryManager()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MockRegionServer.html" title="class in org.apache.hadoop.hbase.master">MockRegionServer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/MockRegionServerServices.html#getHeapMemoryManager--">getHeapMemoryManager()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/MockRegionServerServices.html" title="class in org.apache.hadoop.hbase">MockRegionServerServices</a></dt>
@@ -15682,6 +15686,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestNodeHealthCheckChore.html#healthScriptFile">healthScriptFile</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestNodeHealthCheckChore.html" title="class in org.apache.hadoop.hbase">TestNodeHealthCheckChore</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html#heap">heap</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.MyThread</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/CacheTestUtils.ByteArrayCacheable.html#heapSize--">heapSize()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/CacheTestUtils.ByteArrayCacheable.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheTestUtils.ByteArrayCacheable</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/TestCacheConfig.DataCacheEntry.html#heapSize--">heapSize()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestCacheConfig.DataCacheEntry.html" title="class in org.apache.hadoop.hbase.io.hfile">TestCacheConfig.DataCacheEntry</a></dt>
@@ -16407,6 +16413,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestStore.html#init-java.lang.String-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.HTableDescriptor-org.apache.hadoop.hbase.HColumnDescriptor-org.apache.hadoop.hbase.regionserver.TestStore.MyScannerHook-">init(String, Configuration, HTableDescriptor, HColumnDescriptor, TestStore.MyScannerHook)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestStore.html#init-java.lang.String-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.HTableDescriptor-org.apache.hadoop.hbase.HColumnDescriptor-org.apache.hadoop.hbase.regionserver.TestStore.MyScannerHook-boolean-">init(String, Configuration, HTableDescriptor, HColumnDescriptor, TestStore.MyScannerHook, boolean)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/TestReplicationSourceManager.FailInitializeDummyReplicationSource.html#init-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.hbase.replication.regionserver.ReplicationSourceManager-org.apache.hadoop.hbase.replication.ReplicationQueues-org.apache.hadoop.hbase.replication.ReplicationPeers-org.apache.hadoop.hbase.Stoppable-java.lang.String-java.util.UUID-org.apache.hadoop.hbase.replication.ReplicationEndpoint-org.apache.hadoop.hbase.replication.regionserver.MetricsSource-">init(Configuration, FileSystem, ReplicationSourceManager, ReplicationQueues, ReplicationPeers, Stoppable, String, UUID, ReplicationEndpoint, MetricsSource)</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/TestReplicationSourceManager.FailInitializeDummyReplicationSource.html" title="class in org.apache.ha
 doop.hbase.replication.regionserver">TestReplicationSourceManager.FailInitializeDummyReplicationSource</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ReplicationSourceDummy.html#init-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.hbase.replication.regionserver.ReplicationSourceManager-org.apache.hadoop.hbase.replication.ReplicationQueues-org.apache.hadoop.hbase.replication.ReplicationPeers-org.apache.hadoop.hbase.Stoppable-java.lang.String-java.util.UUID-org.apache.hadoop.hbase.replication.ReplicationEndpoint-org.apache.hadoop.hbase.replication.regionserver.MetricsSource-">init(Configuration, FileSystem, ReplicationSourceManager, ReplicationQueues, ReplicationPeers, Stoppable, String, UUID, ReplicationEndpoint, MetricsSource)</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationSourceDummy.html" title="class in org.apache.hadoop.hbase.replication">ReplicationSourceDummy</a></dt>
@@ -21788,10 +21796,12 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/TestThriftServer.MySlowHBaseHandler.html#MySlowHBaseHandler-org.apache.hadoop.conf.Configuration-">MySlowHBaseHandler(Configuration)</a></span> - Constructor for class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TestThriftServer.MySlowHBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftServer.MySlowHBaseHandler</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html#MyStore-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.HColumnDescriptor-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.regionserver.TestStore.MyScannerHook-">MyStore(HRegion, HColumnDescriptor, Configuration, TestStore.MyScannerHook)</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.MyStore</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html#MyStore-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.HColumnDescriptor-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.regionserver.TestStore.MyScannerHook-boolean-">MyStore(HRegion, HColumnDescriptor, Configuration, TestStore.MyScannerHook, boolean)</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.MyStore</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestFromClientSide.ExceptionInReseekRegionObserver.MyStoreScanner.html#MyStoreScanner-org.apache.hadoop.hbase.regionserver.Store-org.apache.hadoop.hbase.regionserver.ScanInfo-org.apache.hadoop.hbase.client.Scan-java.util.NavigableSet-long-">MyStoreScanner(Store, ScanInfo, Scan, NavigableSet&lt;byte[]&gt;, long)</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestFromClientSide.ExceptionInReseekRegionObserver.MyStoreScanner.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide.ExceptionInReseekRegionObserver.MyStoreScanner</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html#MyThread-org.apache.hadoop.hbase.regionserver.StoreScanner-">MyThread(StoreScanner)</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.MyThread</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestAsyncProcess.MyThreadPoolExecutor.html#MyThreadPoolExecutor-int-int-long-java.util.concurrent.TimeUnit-java.util.concurrent.BlockingQueue-">MyThreadPoolExecutor(int, int, long, TimeUnit, BlockingQueue&lt;Runnable&gt;)</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestAsyncProcess.MyThreadPoolExecutor.html" title="class in org.apache.hadoop.hbase.client">TestAsyncProcess.MyThreadPoolExecutor</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.html#myTimer">myTimer</a></span> - Static variable in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRowProcessorEndpoint</a></dt>
@@ -29645,6 +29655,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestServerNonceManager.TestRunnable.html#run--">run()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestServerNonceManager.TestRunnable.html" title="class in org.apache.hadoop.hbase.regionserver">TestServerNonceManager.TestRunnable</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html#run--">run()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.MyThread</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestTimeRangeTracker.TrtUpdateRunnable.html#run--">run()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestTimeRangeTracker.TrtUpdateRunnable.html" title="class in org.apache.hadoop.hbase.regionserver">TestTimeRangeTracker.TrtUpdateRunnable</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestWalAndCompactingMemStoreFlush.ConcurrentPutRunnable.html#run--">run()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestWalAndCompactingMemStoreFlush.ConcurrentPutRunnable.html" title="class in org.apache.hadoop.hbase.regionserver">TestWalAndCompactingMemStoreFlush.ConcurrentPutRunnable</a></dt>
@@ -30211,6 +30223,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/compactions/TestStripeCompactionPolicy.Scanner.html#Scanner-org.apache.hadoop.hbase.KeyValue...-">Scanner(KeyValue...)</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.compactions.<a href="org/apache/hadoop/hbase/regionserver/compactions/TestStripeCompactionPolicy.Scanner.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">TestStripeCompactionPolicy.Scanner</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html#scanner">scanner</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.MyThread</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestScannerTimeout.html#SCANNER_CACHING">SCANNER_CACHING</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestScannerTimeout.html" title="class in org.apache.hadoop.hbase.client">TestScannerTimeout</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.html#SCANNER_CACHING">SCANNER_CACHING</a></span> - Static variable in class org.apache.hadoop.hbase.test.<a href="org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.html" title="class in org.apache.hadoop.hbase.test">IntegrationTestLoadAndVerify</a></dt>
@@ -54625,6 +54639,8 @@
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/regionserver/TestStore.MyStore.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestStore.MyStore</span></a> - Class in <a href="org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/regionserver/TestStore.MyThread.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestStore.MyThread</span></a> - Class in <a href="org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestCompactionArchiveConcurrentClose.html#testStoreCloseAndDischargeRunningInParallel--">testStoreCloseAndDischargeRunningInParallel()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestCompactionArchiveConcurrentClose.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompactionArchiveConcurrentClose</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html#testStoreCount--">testStoreCount()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerMetrics</a></dt>
@@ -54819,6 +54835,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/TestProcedureSuspended.html#testSuspendWhileHoldingLocks--">testSuspendWhileHoldingLocks()</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/TestProcedureSuspended.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureSuspended</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestStore.html#testSwitchingPreadtoStreamParallelyWithCompactionDischarger--">testSwitchingPreadtoStreamParallelyWithCompactionDischarger()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestSwitchToStreamRead</span></a> - Class in <a href="org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.html#TestSwitchToStreamRead--">TestSwitchToStreamRead()</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.html" title="class in org.apache.hadoop.hbase.regionserver">TestSwitchToStreamRead</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.BlockCompactionsInCompletionHStore.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.BlockCompactionsInCompletionHStore.html b/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.BlockCompactionsInCompletionHStore.html
index 0def745..149cc40 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.BlockCompactionsInCompletionHStore.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.BlockCompactionsInCompletionHStore.html
@@ -206,7 +206,7 @@ extends org.apache.hadoop.hbase.regionserver.HStore</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HStore</h3>
-<code>add, add, addChangedReaderObserver, areWritesEnabled, assertBulkLoadHFileOk, bulkLoadHFile, bulkLoadHFile, cancelRequestedCompaction, canSplit, close, closeAndArchiveCompactedFiles, compact, compact, compactRecentForTestingAssumingDefaultPolicy, createCacheConf, createFlushContext, createScanner, createStoreEngine, createWriterInTmp, createWriterInTmp, createWriterInTmp, deleteChangedReaderObserver, deregisterChildren, determineTTLFromFamily, flushCache, getAvgStoreFileAge, getBlockingFileCount, getBytesPerChecksum, getCacheConfig, getChecksumType, getCloseCheckInterval, getColumnFamilyName, getCompactedCellsCount, getCompactedCellsSize, getCompactionCheckMultiplier, getCompactionPressure, getCompactionProgress, getCompactPriority, getComparator, getCoprocessorHost, getDataBlockEncoder, getFamily, getFileSystem, getFlushableSize, getFlushedCellsCount, getFlushedCellsSize, getFlushedOutputFileSize, getHFilesSize, getHRegion, getLastCompactSize, getMajorCompactedCellsCount, getM
 ajorCompactedCellsSize, getMaxMemstoreTS, getMaxSequenceId, getMaxStoreFileAge, getMemstoreFlushSize, getMemStoreSize, getMinStoreFileAge, getNumHFiles, getNumReferenceFiles, getOffPeakHours, getRegionFileSystem, getRegionInfo, getScanInfo, getScanner, getScanners, getScanners, getSize, getSizeOfMemStore, getSizeOfSnapshot, getSizeToFlush, getSmallestReadPoint, getSnapshotSize, getSplitPoint, getStoreEngine, getStorefiles, getStorefilesCount, getStorefilesIndexSize, getStorefilesSize, getStoreFileTtl, getStoreHomedir, getStoreHomedir, getStoreSizeUncompressed, getTableName, getTotalStaticBloomSize, getTotalStaticIndexSize, hasReferences, hasTooManyStoreFiles, heapSize, isMajorCompaction, isPrimaryReplicaStore, isSloppyMemstore, needsCompaction, onConfigurationChange, preBulkLoadHFile, preFlushSeqIDEstimation, refreshStoreFiles, refreshStoreFiles, registerChildren, replayCompactionMarker, requestCompaction, requestCompaction, requestCompaction, startReplayingFromWAL, stopReplayingFro
 mWAL, throttleCompaction, timeOfOldestEdit, toString, triggerMajorCompaction, upsert</code></li>
+<code>add, add, addChangedReaderObserver, areWritesEnabled, assertBulkLoadHFileOk, bulkLoadHFile, bulkLoadHFile, cancelRequestedCompaction, canSplit, close, closeAndArchiveCompactedFiles, compact, compact, compactRecentForTestingAssumingDefaultPolicy, createCacheConf, createFlushContext, createScanner, createStoreEngine, createWriterInTmp, createWriterInTmp, createWriterInTmp, deleteChangedReaderObserver, deregisterChildren, determineTTLFromFamily, flushCache, getAvgStoreFileAge, getBlockingFileCount, getBytesPerChecksum, getCacheConfig, getChecksumType, getCloseCheckInterval, getColumnFamilyName, getCompactedCellsCount, getCompactedCellsSize, getCompactedFiles, getCompactedFilesCount, getCompactionCheckMultiplier, getCompactionPressure, getCompactionProgress, getCompactPriority, getComparator, getCoprocessorHost, getDataBlockEncoder, getFamily, getFileSystem, getFlushableSize, getFlushedCellsCount, getFlushedCellsSize, getFlushedOutputFileSize, getHFilesSize, getHRegion, getLastCom
 pactSize, getMajorCompactedCellsCount, getMajorCompactedCellsSize, getMaxMemstoreTS, getMaxSequenceId, getMaxStoreFileAge, getMemstoreFlushSize, getMemStoreSize, getMinStoreFileAge, getNumHFiles, getNumReferenceFiles, getOffPeakHours, getRegionFileSystem, getRegionInfo, getScanInfo, getScanner, getScanners, getScanners, getSize, getSizeOfMemStore, getSizeOfSnapshot, getSizeToFlush, getSmallestReadPoint, getSnapshotSize, getSplitPoint, getStoreEngine, getStorefiles, getStorefilesCount, getStorefilesIndexSize, getStorefilesSize, getStoreFileTtl, getStoreHomedir, getStoreHomedir, getStoreSizeUncompressed, getTableName, getTotalStaticBloomSize, getTotalStaticIndexSize, hasReferences, hasTooManyStoreFiles, heapSize, isMajorCompaction, isPrimaryReplicaStore, isSloppyMemstore, needsCompaction, onConfigurationChange, preBulkLoadHFile, preFlushSeqIDEstimation, recreateScanners, refreshStoreFiles, refreshStoreFiles, registerChildren, replayCompactionMarker, requestCompaction, requestCompactio
 n, requestCompaction, startReplayingFromWAL, stopReplayingFromWAL, throttleCompaction, timeOfOldestEdit, toString, triggerMajorCompaction, upsert</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/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 8e339df..7129fdf 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -542,15 +542,15 @@
 <ul>
 <li type="circle">java.lang.<a href="http://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="http://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="http://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/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/ResourceChecker.Phase.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ResourceChecker.Phase</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseClusterManager.CommandProvider.Operation.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseClusterManager.CommandProvider.Operation</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.Service.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.Service</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ScanPerformanceEvaluation.ScanCounter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ScanPerformanceEvaluation.ScanCounter</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/PerformanceEvaluation.Counter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">PerformanceEvaluation.Counter</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseClusterManager.CommandProvider.Operation.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseClusterManager.CommandProvider.Operation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ResourceChecker.Phase.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ResourceChecker.Phase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.RoleCommand</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ScanPerformanceEvaluation.ScanCounter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ScanPerformanceEvaluation.ScanCounter</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/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 451a7e3..64e86d4 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -205,8 +205,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://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="http://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="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureRecovery.TestStateMachineProcedure.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestStateMachineProcedure.TestSMProcedureState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestStateMachineProcedure.TestSMProcedureState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.DummyStoreEngine.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.DummyStoreEngine.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.DummyStoreEngine.html
index 44fac95..142880b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.DummyStoreEngine.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.DummyStoreEngine.html
@@ -123,7 +123,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.834">TestStore.DummyStoreEngine</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.841">TestStore.DummyStoreEngine</a>
 extends org.apache.hadoop.hbase.regionserver.DefaultStoreEngine</pre>
 </li>
 </ul>
@@ -241,7 +241,7 @@ extends org.apache.hadoop.hbase.regionserver.DefaultStoreEngine</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>lastCreatedCompactor</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.DummyStoreEngine.html#line.835">lastCreatedCompactor</a></pre>
+<pre>public static&nbsp;org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.DummyStoreEngine.html#line.842">lastCreatedCompactor</a></pre>
 </li>
 </ul>
 </li>
@@ -258,7 +258,7 @@ extends org.apache.hadoop.hbase.regionserver.DefaultStoreEngine</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DummyStoreEngine</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.DummyStoreEngine.html#line.834">DummyStoreEngine</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.DummyStoreEngine.html#line.841">DummyStoreEngine</a>()</pre>
 </li>
 </ul>
 </li>
@@ -275,7 +275,7 @@ extends org.apache.hadoop.hbase.regionserver.DefaultStoreEngine</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>createComponents</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.DummyStoreEngine.html#line.837">createComponents</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.DummyStoreEngine.html#line.845">createComponents</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                 org.apache.hadoop.hbase.regionserver.Store&nbsp;store,
                                 org.apache.hadoop.hbase.CellComparator&nbsp;comparator)
                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.FaultyFileSystem.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.FaultyFileSystem.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.FaultyFileSystem.html
index 3a83a31..0e42878 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.FaultyFileSystem.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.FaultyFileSystem.html
@@ -132,7 +132,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.650">TestStore.FaultyFileSystem</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.657">TestStore.FaultyFileSystem</a>
 extends org.apache.hadoop.fs.FilterFileSystem</pre>
 <div class="block">Faulty file system that will fail if you write past its fault position the FIRST TIME
  only; thereafter it will succeed.  Used by <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html" title="class in org.apache.hadoop.hbase.regionserver"><code>TestHRegion</code></a> too.</div>
@@ -299,7 +299,7 @@ extends org.apache.hadoop.fs.FilterFileSystem</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>outStreams</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/ref/SoftReference.html?is-external=true" title="class or interface in java.lang.ref">SoftReference</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.FaultyOutputStream.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.FaultyOutputStream</a>&gt;&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyFileSystem.html#line.651">outStreams</a></pre>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/ref/SoftReference.html?is-external=true" title="class or interface in java.lang.ref">SoftReference</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.FaultyOutputStream.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.FaultyOutputStream</a>&gt;&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyFileSystem.html#line.658">outStreams</a></pre>
 </li>
 </ul>
 <a name="faultPos">
@@ -308,7 +308,7 @@ extends org.apache.hadoop.fs.FilterFileSystem</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>faultPos</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyFileSystem.html#line.652">faultPos</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyFileSystem.html#line.659">faultPos</a></pre>
 </li>
 </ul>
 <a name="fault">
@@ -317,7 +317,7 @@ extends org.apache.hadoop.fs.FilterFileSystem</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>fault</h4>
-<pre><a href="http://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/TestStore.FaultyFileSystem.html#line.653">fault</a></pre>
+<pre><a href="http://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/TestStore.FaultyFileSystem.html#line.660">fault</a></pre>
 </li>
 </ul>
 </li>
@@ -334,7 +334,7 @@ extends org.apache.hadoop.fs.FilterFileSystem</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>FaultyFileSystem</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyFileSystem.html#line.655">FaultyFileSystem</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyFileSystem.html#line.662">FaultyFileSystem</a>()</pre>
 </li>
 </ul>
 </li>
@@ -351,7 +351,7 @@ extends org.apache.hadoop.fs.FilterFileSystem</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>create</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.FSDataOutputStream&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyFileSystem.html#line.661">create</a>(org.apache.hadoop.fs.Path&nbsp;p)
+<pre>public&nbsp;org.apache.hadoop.fs.FSDataOutputStream&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyFileSystem.html#line.668">create</a>(org.apache.hadoop.fs.Path&nbsp;p)
                                                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -367,7 +367,7 @@ extends org.apache.hadoop.fs.FilterFileSystem</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>create</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.FSDataOutputStream&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyFileSystem.html#line.666">create</a>(org.apache.hadoop.fs.Path&nbsp;f,
+<pre>public&nbsp;org.apache.hadoop.fs.FSDataOutputStream&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyFileSystem.html#line.673">create</a>(org.apache.hadoop.fs.Path&nbsp;f,
                                                       org.apache.hadoop.fs.permission.FsPermission&nbsp;permission,
                                                       boolean&nbsp;overwrite,
                                                       int&nbsp;bufferSize,
@@ -389,7 +389,7 @@ extends org.apache.hadoop.fs.FilterFileSystem</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>createNonRecursive</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.FSDataOutputStream&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyFileSystem.html#line.674">createNonRecursive</a>(org.apache.hadoop.fs.Path&nbsp;f,
+<pre>public&nbsp;org.apache.hadoop.fs.FSDataOutputStream&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyFileSystem.html#line.681">createNonRecursive</a>(org.apache.hadoop.fs.Path&nbsp;f,
                                                                   boolean&nbsp;overwrite,
                                                                   int&nbsp;bufferSize,
                                                                   short&nbsp;replication,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.FaultyOutputStream.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.FaultyOutputStream.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.FaultyOutputStream.html
index d103956..d4e24c5 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.FaultyOutputStream.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStore.FaultyOutputStream.html
@@ -137,7 +137,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.683">TestStore.FaultyOutputStream</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.html#line.690">TestStore.FaultyOutputStream</a>
 extends org.apache.hadoop.fs.FSDataOutputStream</pre>
 </li>
 </ul>
@@ -279,7 +279,7 @@ extends org.apache.hadoop.fs.FSDataOutputStream</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>faultPos</h4>
-<pre>volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyOutputStream.html#line.684">faultPos</a></pre>
+<pre>volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyOutputStream.html#line.691">faultPos</a></pre>
 </li>
 </ul>
 <a name="fault">
@@ -288,7 +288,7 @@ extends org.apache.hadoop.fs.FSDataOutputStream</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>fault</h4>
-<pre>private final&nbsp;<a href="http://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/TestStore.FaultyOutputStream.html#line.685">fault</a></pre>
+<pre>private final&nbsp;<a href="http://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/TestStore.FaultyOutputStream.html#line.692">fault</a></pre>
 </li>
 </ul>
 </li>
@@ -305,7 +305,7 @@ extends org.apache.hadoop.fs.FSDataOutputStream</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>FaultyOutputStream</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyOutputStream.html#line.687">FaultyOutputStream</a>(org.apache.hadoop.fs.FSDataOutputStream&nbsp;out,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyOutputStream.html#line.694">FaultyOutputStream</a>(org.apache.hadoop.fs.FSDataOutputStream&nbsp;out,
                           long&nbsp;faultPos,
                           <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a>&nbsp;fault)
                    throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -329,7 +329,7 @@ extends org.apache.hadoop.fs.FSDataOutputStream</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>write</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyOutputStream.html#line.695">write</a>(byte[]&nbsp;buf,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyOutputStream.html#line.702">write</a>(byte[]&nbsp;buf,
                   int&nbsp;offset,
                   int&nbsp;length)
            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -349,7 +349,7 @@ extends org.apache.hadoop.fs.FSDataOutputStream</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>injectFault</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyOutputStream.html#line.701">injectFault</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStore.FaultyOutputStream.html#line.708">injectFault</a>()
                   throws <a href="http://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>


[22/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.State.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.State.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.State.html
index b09e20b..3c088c8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.State.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.State.html
@@ -155,937 +155,942 @@
 <span class="sourceLineNo">147</span>  }<a name="line.147"></a>
 <span class="sourceLineNo">148</span><a name="line.148"></a>
 <span class="sourceLineNo">149</span>  @Override<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  public void insertNewFiles(Collection&lt;StoreFile&gt; sfs) throws IOException {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(true);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    // Passing null does not cause NPE??<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    cmc.mergeResults(null, sfs);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    debugDumpState("Added new files");<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  }<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  @Override<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  public ImmutableCollection&lt;StoreFile&gt; clearFiles() {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    ImmutableCollection&lt;StoreFile&gt; result = state.allFilesCached;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    this.state = new State();<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    this.fileStarts.clear();<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    this.fileEnds.clear();<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    return result;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  }<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  @Override<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  public ImmutableCollection&lt;StoreFile&gt; clearCompactedFiles() {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    ImmutableCollection&lt;StoreFile&gt; result = state.allCompactedFilesCached;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    this.state = new State();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    return result;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  @Override<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public int getStorefileCount() {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    return state.allFilesCached.size();<a name="line.175"></a>
+<span class="sourceLineNo">150</span>  public int getCompactedFilesCount() {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    return state.allCompactedFilesCached.size();<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
+<span class="sourceLineNo">153</span><a name="line.153"></a>
+<span class="sourceLineNo">154</span>  @Override<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  public void insertNewFiles(Collection&lt;StoreFile&gt; sfs) throws IOException {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(true);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    // Passing null does not cause NPE??<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    cmc.mergeResults(null, sfs);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    debugDumpState("Added new files");<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 ImmutableCollection&lt;StoreFile&gt; clearFiles() {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    ImmutableCollection&lt;StoreFile&gt; result = state.allFilesCached;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    this.state = new State();<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    this.fileStarts.clear();<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    this.fileEnds.clear();<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    return result;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>  }<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>  @Override<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public ImmutableCollection&lt;StoreFile&gt; clearCompactedFiles() {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    ImmutableCollection&lt;StoreFile&gt; result = state.allCompactedFilesCached;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    this.state = new State();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    return result;<a name="line.175"></a>
 <span class="sourceLineNo">176</span>  }<a name="line.176"></a>
 <span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  /** See {@link StoreFileManager#getCandidateFilesForRowKeyBefore(KeyValue)}<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   * for details on this methods. */<a name="line.179"></a>
-<span class="sourceLineNo">180</span>  @Override<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  public Iterator&lt;StoreFile&gt; getCandidateFilesForRowKeyBefore(final KeyValue targetKey) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    KeyBeforeConcatenatedLists result = new KeyBeforeConcatenatedLists();<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    // Order matters for this call.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    result.addSublist(state.level0Files);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    if (!state.stripeFiles.isEmpty()) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      int lastStripeIndex = findStripeForRow(CellUtil.cloneRow(targetKey), false);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      for (int stripeIndex = lastStripeIndex; stripeIndex &gt;= 0; --stripeIndex) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>        result.addSublist(state.stripeFiles.get(stripeIndex));<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    return result.iterator();<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  /** See {@link StoreFileManager#getCandidateFilesForRowKeyBefore(KeyValue)} and<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * {@link StoreFileManager#updateCandidateFilesForRowKeyBefore(Iterator, KeyValue, Cell)}<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   * for details on this methods. */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  @Override<a name="line.197"></a>
-<span class="sourceLineNo">198</span>  public Iterator&lt;StoreFile&gt; updateCandidateFilesForRowKeyBefore(<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      Iterator&lt;StoreFile&gt; candidateFiles, final KeyValue targetKey, final Cell candidate) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    KeyBeforeConcatenatedLists.Iterator original =<a name="line.200"></a>
-<span class="sourceLineNo">201</span>        (KeyBeforeConcatenatedLists.Iterator)candidateFiles;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    assert original != null;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    ArrayList&lt;List&lt;StoreFile&gt;&gt; components = original.getComponents();<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    for (int firstIrrelevant = 0; firstIrrelevant &lt; components.size(); ++firstIrrelevant) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      StoreFile sf = components.get(firstIrrelevant).get(0);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      byte[] endKey = endOf(sf);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      // Entries are ordered as such: L0, then stripes in reverse order. We never remove<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      // level 0; we remove the stripe, and all subsequent ones, as soon as we find the<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      // first one that cannot possibly have better candidates.<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      if (!isInvalid(endKey) &amp;&amp; !isOpen(endKey)<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          &amp;&amp; (nonOpenRowCompare(targetKey, endKey) &gt;= 0)) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        original.removeComponents(firstIrrelevant);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>        break;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    return original;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  }<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>  private byte[] getSplitPoint(Collection&lt;StoreFile&gt; sfs) throws IOException {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    Optional&lt;StoreFile&gt; largestFile = StoreUtils.getLargestFile(sfs);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    return largestFile.isPresent()<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        ? StoreUtils.getFileSplitPoint(largestFile.get(), cellComparator).orElse(null) : null;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>  /**<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * Override of getSplitPoint that determines the split point as the boundary between two<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * stripes, unless it causes significant imbalance between split sides' sizes. In that<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * case, the split boundary will be chosen from the middle of one of the stripes to<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * minimize imbalance.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   * @return The split point, or null if no split is possible.<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   */<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  @Override<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  public byte[] getSplitPoint() throws IOException {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    if (this.getStorefileCount() == 0) return null;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    if (state.stripeFiles.size() &lt;= 1) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      return getSplitPointFromAllFiles();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    int leftIndex = -1, rightIndex = state.stripeFiles.size();<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    long leftSize = 0, rightSize = 0;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    long lastLeftSize = 0, lastRightSize = 0;<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    while (rightIndex - 1 != leftIndex) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      if (leftSize &gt;= rightSize) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        --rightIndex;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        lastRightSize = getStripeFilesSize(rightIndex);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        rightSize += lastRightSize;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      } else {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        ++leftIndex;<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        lastLeftSize = getStripeFilesSize(leftIndex);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        leftSize += lastLeftSize;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      }<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    if (leftSize == 0 || rightSize == 0) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      String errMsg = String.format("Cannot split on a boundary - left index %d size %d, "<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          + "right index %d size %d", leftIndex, leftSize, rightIndex, rightSize);<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      debugDumpState(errMsg);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      LOG.warn(errMsg);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      return getSplitPointFromAllFiles();<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    }<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    double ratio = (double)rightSize / leftSize;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    if (ratio &lt; 1) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      ratio = 1 / ratio;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    if (config.getMaxSplitImbalance() &gt; ratio) return state.stripeEndRows[leftIndex];<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>    // If the difference between the sides is too large, we could get the proportional key on<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    // the a stripe to equalize the difference, but there's no proportional key method at the<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    // moment, and it's not extremely important.<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    // See if we can achieve better ratio if we split the bigger side in half.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    boolean isRightLarger = rightSize &gt;= leftSize;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    double newRatio = isRightLarger<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        ? getMidStripeSplitRatio(leftSize, rightSize, lastRightSize)<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        : getMidStripeSplitRatio(rightSize, leftSize, lastLeftSize);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    if (newRatio &lt; 1) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      newRatio = 1 / newRatio;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    if (newRatio &gt;= ratio)  return state.stripeEndRows[leftIndex];<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    LOG.debug("Splitting the stripe - ratio w/o split " + ratio + ", ratio with split "<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        + newRatio + " configured ratio " + config.getMaxSplitImbalance());<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // Ok, we may get better ratio, get it.<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    return getSplitPoint(state.stripeFiles.get(isRightLarger ? rightIndex : leftIndex));<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  private byte[] getSplitPointFromAllFiles() throws IOException {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    ConcatenatedLists&lt;StoreFile&gt; sfs = new ConcatenatedLists&lt;&gt;();<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    sfs.addSublist(state.level0Files);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    sfs.addAllSublists(state.stripeFiles);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    return getSplitPoint(sfs);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>  private double getMidStripeSplitRatio(long smallerSize, long largerSize, long lastLargerSize) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    return (double)(largerSize - lastLargerSize / 2f) / (smallerSize + lastLargerSize / 2f);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>  @Override<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public Collection&lt;StoreFile&gt; getFilesForScan(byte[] startRow, boolean includeStartRow,<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      byte[] stopRow, boolean includeStopRow) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    if (state.stripeFiles.isEmpty()) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      return state.level0Files; // There's just L0.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    }<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>    int firstStripe = findStripeForRow(startRow, true);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    int lastStripe = findStripeForRow(stopRow, false);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    assert firstStripe &lt;= lastStripe;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    if (firstStripe == lastStripe &amp;&amp; state.level0Files.isEmpty()) {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      return state.stripeFiles.get(firstStripe); // There's just one stripe we need.<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    if (firstStripe == 0 &amp;&amp; lastStripe == (state.stripeFiles.size() - 1)) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      return state.allFilesCached; // We need to read all files.<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    }<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>    ConcatenatedLists&lt;StoreFile&gt; result = new ConcatenatedLists&lt;&gt;();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    result.addAllSublists(state.stripeFiles.subList(firstStripe, lastStripe + 1));<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    result.addSublist(state.level0Files);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    return result;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  }<a name="line.315"></a>
-<span class="sourceLineNo">316</span><a name="line.316"></a>
-<span class="sourceLineNo">317</span>  @Override<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public void addCompactionResults(<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    Collection&lt;StoreFile&gt; compactedFiles, Collection&lt;StoreFile&gt; results) throws IOException {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    // See class comment for the assumptions we make here.<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    LOG.debug("Attempting to merge compaction results: " + compactedFiles.size()<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        + " files replaced by " + results.size());<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    // In order to be able to fail in the middle of the operation, we'll operate on lazy<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    // copies and apply the result at the end.<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(false);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    cmc.mergeResults(compactedFiles, results);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    markCompactedAway(compactedFiles);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    debugDumpState("Merged compaction results");<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  }<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  // Mark the files as compactedAway once the storefiles and compactedfiles list is finalised<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  // Let a background thread close the actual reader on these compacted files and also<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  // ensure to evict the blocks from block cache so that they are no longer in<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  // cache<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  private void markCompactedAway(Collection&lt;StoreFile&gt; compactedFiles) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    for (StoreFile file : compactedFiles) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      file.markCompactedAway();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  }<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  @Override<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public void removeCompactedFiles(Collection&lt;StoreFile&gt; compactedFiles) throws IOException {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    // See class comment for the assumptions we make here.<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    LOG.debug("Attempting to delete compaction results: " + compactedFiles.size());<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    // In order to be able to fail in the middle of the operation, we'll operate on lazy<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    // copies and apply the result at the end.<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(false);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    cmc.deleteResults(compactedFiles);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    debugDumpState("Deleted compaction results");<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  }<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  @Override<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  public int getStoreCompactionPriority() {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    // If there's only L0, do what the default store does.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    // If we are in critical priority, do the same - we don't want to trump all stores all<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    // the time due to how many files we have.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    int fc = getStorefileCount();<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    if (state.stripeFiles.isEmpty() || (this.blockingFileCount &lt;= fc)) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      return this.blockingFileCount - fc;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    // If we are in good shape, we don't want to be trumped by all other stores due to how<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    // many files we have, so do an approximate mapping to normal priority range; L0 counts<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    // for all stripes.<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    int l0 = state.level0Files.size(), sc = state.stripeFiles.size();<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    int priority = (int)Math.ceil(((double)(this.blockingFileCount - fc + l0) / sc) - l0);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    return (priority &lt;= HStore.PRIORITY_USER) ? (HStore.PRIORITY_USER + 1) : priority;<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  /**<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * Gets the total size of all files in the stripe.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * @param stripeIndex Stripe index.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * @return Size.<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   */<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  private long getStripeFilesSize(int stripeIndex) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    long result = 0;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    for (StoreFile sf : state.stripeFiles.get(stripeIndex)) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      result += sf.getReader().length();<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    return result;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  }<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>  /**<a name="line.382"></a>
-<span class="sourceLineNo">383</span>   * Loads initial store files that were picked up from some physical location pertaining to<a name="line.383"></a>
-<span class="sourceLineNo">384</span>   * this store (presumably). Unlike adding files after compaction, assumes empty initial<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * sets, and is forgiving with regard to stripe constraints - at worst, many/all files will<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   * go to level 0.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * @param storeFiles Store files to add.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private void loadUnclassifiedStoreFiles(List&lt;StoreFile&gt; storeFiles) {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    LOG.debug("Attempting to load " + storeFiles.size() + " store files.");<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    TreeMap&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; candidateStripes = new TreeMap&lt;&gt;(MAP_COMPARATOR);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    ArrayList&lt;StoreFile&gt; level0Files = new ArrayList&lt;&gt;();<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    // Separate the files into tentative stripes; then validate. Currently, we rely on metadata.<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    // If needed, we could dynamically determine the stripes in future.<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    for (StoreFile sf : storeFiles) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      byte[] startRow = startOf(sf), endRow = endOf(sf);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      // Validate the range and put the files into place.<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      if (isInvalid(startRow) || isInvalid(endRow)) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        insertFileIntoStripe(level0Files, sf); // No metadata - goes to L0.<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        ensureLevel0Metadata(sf);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      } else if (!isOpen(startRow) &amp;&amp; !isOpen(endRow) &amp;&amp;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>          nonOpenRowCompare(startRow, endRow) &gt;= 0) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        LOG.error("Unexpected metadata - start row [" + Bytes.toString(startRow) + "], end row ["<a name="line.403"></a>
-<span class="sourceLineNo">404</span>          + Bytes.toString(endRow) + "] in file [" + sf.getPath() + "], pushing to L0");<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        insertFileIntoStripe(level0Files, sf); // Bad metadata - goes to L0 also.<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        ensureLevel0Metadata(sf);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      } else {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        ArrayList&lt;StoreFile&gt; stripe = candidateStripes.get(endRow);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        if (stripe == null) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>          stripe = new ArrayList&lt;&gt;();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>          candidateStripes.put(endRow, stripe);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        }<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        insertFileIntoStripe(stripe, sf);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      }<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    }<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    // Possible improvement - for variable-count stripes, if all the files are in L0, we can<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    // instead create single, open-ended stripe with all files.<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>    boolean hasOverlaps = false;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    byte[] expectedStartRow = null; // first stripe can start wherever<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    Iterator&lt;Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt;&gt; entryIter =<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        candidateStripes.entrySet().iterator();<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    while (entryIter.hasNext()) {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; entry = entryIter.next();<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      ArrayList&lt;StoreFile&gt; files = entry.getValue();<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      // Validate the file start rows, and remove the bad ones to level 0.<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      for (int i = 0; i &lt; files.size(); ++i) {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        StoreFile sf = files.get(i);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        byte[] startRow = startOf(sf);<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        if (expectedStartRow == null) {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>          expectedStartRow = startRow; // ensure that first stripe is still consistent<a name="line.431"></a>
-<span class="sourceLineNo">432</span>        } else if (!rowEquals(expectedStartRow, startRow)) {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          hasOverlaps = true;<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          LOG.warn("Store file doesn't fit into the tentative stripes - expected to start at ["<a name="line.434"></a>
-<span class="sourceLineNo">435</span>              + Bytes.toString(expectedStartRow) + "], but starts at [" + Bytes.toString(startRow)<a name="line.435"></a>
-<span class="sourceLineNo">436</span>              + "], to L0 it goes");<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          StoreFile badSf = files.remove(i);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>          insertFileIntoStripe(level0Files, badSf);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>          ensureLevel0Metadata(badSf);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>          --i;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      }<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      // Check if any files from the candidate stripe are valid. If so, add a stripe.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      byte[] endRow = entry.getKey();<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      if (!files.isEmpty()) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>        expectedStartRow = endRow; // Next stripe must start exactly at that key.<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      } else {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>        entryIter.remove();<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>    // In the end, there must be open ends on two sides. If not, and there were no errors i.e.<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    // files are consistent, they might be coming from a split. We will treat the boundaries<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // as open keys anyway, and log the message.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    // If there were errors, we'll play it safe and dump everything into L0.<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    if (!candidateStripes.isEmpty()) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      StoreFile firstFile = candidateStripes.firstEntry().getValue().get(0);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      boolean isOpen = isOpen(startOf(firstFile)) &amp;&amp; isOpen(candidateStripes.lastKey());<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      if (!isOpen) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        LOG.warn("The range of the loaded files does not cover full key space: from ["<a name="line.460"></a>
-<span class="sourceLineNo">461</span>            + Bytes.toString(startOf(firstFile)) + "], to ["<a name="line.461"></a>
-<span class="sourceLineNo">462</span>            + Bytes.toString(candidateStripes.lastKey()) + "]");<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        if (!hasOverlaps) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>          ensureEdgeStripeMetadata(candidateStripes.firstEntry().getValue(), true);<a name="line.464"></a>
-<span class="sourceLineNo">465</span>          ensureEdgeStripeMetadata(candidateStripes.lastEntry().getValue(), false);<a name="line.465"></a>
-<span class="sourceLineNo">466</span>        } else {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>          LOG.warn("Inconsistent files, everything goes to L0.");<a name="line.467"></a>
-<span class="sourceLineNo">468</span>          for (ArrayList&lt;StoreFile&gt; files : candidateStripes.values()) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>            for (StoreFile sf : files) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>              insertFileIntoStripe(level0Files, sf);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>              ensureLevel0Metadata(sf);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>            }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>          }<a name="line.473"></a>
-<span class="sourceLineNo">474</span>          candidateStripes.clear();<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        }<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      }<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>    // Copy the results into the fields.<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    State state = new State();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    state.level0Files = ImmutableList.copyOf(level0Files);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    state.stripeFiles = new ArrayList&lt;&gt;(candidateStripes.size());<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    state.stripeEndRows = new byte[Math.max(0, candidateStripes.size() - 1)][];<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    ArrayList&lt;StoreFile&gt; newAllFiles = new ArrayList&lt;&gt;(level0Files);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    int i = candidateStripes.size() - 1;<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    for (Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; entry : candidateStripes.entrySet()) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      state.stripeFiles.add(ImmutableList.copyOf(entry.getValue()));<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      newAllFiles.addAll(entry.getValue());<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      if (i &gt; 0) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        state.stripeEndRows[state.stripeFiles.size() - 1] = entry.getKey();<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      }<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      --i;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    }<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    state.allFilesCached = ImmutableList.copyOf(newAllFiles);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    this.state = state;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    debugDumpState("Files loaded");<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  }<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>  private void ensureEdgeStripeMetadata(ArrayList&lt;StoreFile&gt; stripe, boolean isFirst) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    HashMap&lt;StoreFile, byte[]&gt; targetMap = isFirst ? fileStarts : fileEnds;<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    for (StoreFile sf : stripe) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      targetMap.put(sf, OPEN_KEY);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    }<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  }<a name="line.504"></a>
-<span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>  private void ensureLevel0Metadata(StoreFile sf) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    if (!isInvalid(startOf(sf))) this.fileStarts.put(sf, INVALID_KEY_IN_MAP);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    if (!isInvalid(endOf(sf))) this.fileEnds.put(sf, INVALID_KEY_IN_MAP);<a name="line.508"></a>
+<span class="sourceLineNo">178</span>  @Override<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  public int getStorefileCount() {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    return state.allFilesCached.size();<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  }<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>  /** See {@link StoreFileManager#getCandidateFilesForRowKeyBefore(KeyValue)}<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * for details on this methods. */<a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @Override<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public Iterator&lt;StoreFile&gt; getCandidateFilesForRowKeyBefore(final KeyValue targetKey) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    KeyBeforeConcatenatedLists result = new KeyBeforeConcatenatedLists();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    // Order matters for this call.<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    result.addSublist(state.level0Files);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    if (!state.stripeFiles.isEmpty()) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      int lastStripeIndex = findStripeForRow(CellUtil.cloneRow(targetKey), false);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      for (int stripeIndex = lastStripeIndex; stripeIndex &gt;= 0; --stripeIndex) {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        result.addSublist(state.stripeFiles.get(stripeIndex));<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      }<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    return result.iterator();<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  }<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span>  /** See {@link StoreFileManager#getCandidateFilesForRowKeyBefore(KeyValue)} and<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * {@link StoreFileManager#updateCandidateFilesForRowKeyBefore(Iterator, KeyValue, Cell)}<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   * for details on this methods. */<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  @Override<a name="line.202"></a>
+<span class="sourceLineNo">203</span>  public Iterator&lt;StoreFile&gt; updateCandidateFilesForRowKeyBefore(<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      Iterator&lt;StoreFile&gt; candidateFiles, final KeyValue targetKey, final Cell candidate) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    KeyBeforeConcatenatedLists.Iterator original =<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        (KeyBeforeConcatenatedLists.Iterator)candidateFiles;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    assert original != null;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    ArrayList&lt;List&lt;StoreFile&gt;&gt; components = original.getComponents();<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    for (int firstIrrelevant = 0; firstIrrelevant &lt; components.size(); ++firstIrrelevant) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      StoreFile sf = components.get(firstIrrelevant).get(0);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      byte[] endKey = endOf(sf);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      // Entries are ordered as such: L0, then stripes in reverse order. We never remove<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      // level 0; we remove the stripe, and all subsequent ones, as soon as we find the<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      // first one that cannot possibly have better candidates.<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      if (!isInvalid(endKey) &amp;&amp; !isOpen(endKey)<a name="line.215"></a>
+<span class="sourceLineNo">216</span>          &amp;&amp; (nonOpenRowCompare(targetKey, endKey) &gt;= 0)) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        original.removeComponents(firstIrrelevant);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        break;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    return original;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>  private byte[] getSplitPoint(Collection&lt;StoreFile&gt; sfs) throws IOException {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    Optional&lt;StoreFile&gt; largestFile = StoreUtils.getLargestFile(sfs);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    return largestFile.isPresent()<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        ? StoreUtils.getFileSplitPoint(largestFile.get(), cellComparator).orElse(null) : null;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  }<a name="line.228"></a>
+<span class="sourceLineNo">229</span><a name="line.229"></a>
+<span class="sourceLineNo">230</span>  /**<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * Override of getSplitPoint that determines the split point as the boundary between two<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   * stripes, unless it causes significant imbalance between split sides' sizes. In that<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   * case, the split boundary will be chosen from the middle of one of the stripes to<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * minimize imbalance.<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * @return The split point, or null if no split is possible.<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  @Override<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  public byte[] getSplitPoint() throws IOException {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    if (this.getStorefileCount() == 0) return null;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    if (state.stripeFiles.size() &lt;= 1) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      return getSplitPointFromAllFiles();<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    int leftIndex = -1, rightIndex = state.stripeFiles.size();<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    long leftSize = 0, rightSize = 0;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    long lastLeftSize = 0, lastRightSize = 0;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    while (rightIndex - 1 != leftIndex) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      if (leftSize &gt;= rightSize) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        --rightIndex;<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        lastRightSize = getStripeFilesSize(rightIndex);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        rightSize += lastRightSize;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      } else {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        ++leftIndex;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        lastLeftSize = getStripeFilesSize(leftIndex);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        leftSize += lastLeftSize;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    }<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    if (leftSize == 0 || rightSize == 0) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      String errMsg = String.format("Cannot split on a boundary - left index %d size %d, "<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          + "right index %d size %d", leftIndex, leftSize, rightIndex, rightSize);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      debugDumpState(errMsg);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      LOG.warn(errMsg);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      return getSplitPointFromAllFiles();<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    double ratio = (double)rightSize / leftSize;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    if (ratio &lt; 1) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      ratio = 1 / ratio;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    if (config.getMaxSplitImbalance() &gt; ratio) return state.stripeEndRows[leftIndex];<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span>    // If the difference between the sides is too large, we could get the proportional key on<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    // the a stripe to equalize the difference, but there's no proportional key method at the<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    // moment, and it's not extremely important.<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // See if we can achieve better ratio if we split the bigger side in half.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    boolean isRightLarger = rightSize &gt;= leftSize;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    double newRatio = isRightLarger<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        ? getMidStripeSplitRatio(leftSize, rightSize, lastRightSize)<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        : getMidStripeSplitRatio(rightSize, leftSize, lastLeftSize);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    if (newRatio &lt; 1) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      newRatio = 1 / newRatio;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    if (newRatio &gt;= ratio)  return state.stripeEndRows[leftIndex];<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    LOG.debug("Splitting the stripe - ratio w/o split " + ratio + ", ratio with split "<a name="line.282"></a>
+<span class="sourceLineNo">283</span>        + newRatio + " configured ratio " + config.getMaxSplitImbalance());<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // Ok, we may get better ratio, get it.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    return getSplitPoint(state.stripeFiles.get(isRightLarger ? rightIndex : leftIndex));<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  }<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>  private byte[] getSplitPointFromAllFiles() throws IOException {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    ConcatenatedLists&lt;StoreFile&gt; sfs = new ConcatenatedLists&lt;&gt;();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    sfs.addSublist(state.level0Files);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    sfs.addAllSublists(state.stripeFiles);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    return getSplitPoint(sfs);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>  private double getMidStripeSplitRatio(long smallerSize, long largerSize, long lastLargerSize) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    return (double)(largerSize - lastLargerSize / 2f) / (smallerSize + lastLargerSize / 2f);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  }<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span>  @Override<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  public Collection&lt;StoreFile&gt; getFilesForScan(byte[] startRow, boolean includeStartRow,<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      byte[] stopRow, boolean includeStopRow) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    if (state.stripeFiles.isEmpty()) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      return state.level0Files; // There's just L0.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>    int firstStripe = findStripeForRow(startRow, true);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    int lastStripe = findStripeForRow(stopRow, false);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    assert firstStripe &lt;= lastStripe;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    if (firstStripe == lastStripe &amp;&amp; state.level0Files.isEmpty()) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      return state.stripeFiles.get(firstStripe); // There's just one stripe we need.<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    if (firstStripe == 0 &amp;&amp; lastStripe == (state.stripeFiles.size() - 1)) {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      return state.allFilesCached; // We need to read all files.<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    }<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>    ConcatenatedLists&lt;StoreFile&gt; result = new ConcatenatedLists&lt;&gt;();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    result.addAllSublists(state.stripeFiles.subList(firstStripe, lastStripe + 1));<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    result.addSublist(state.level0Files);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    return result;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  @Override<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public void addCompactionResults(<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    Collection&lt;StoreFile&gt; compactedFiles, Collection&lt;StoreFile&gt; results) throws IOException {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // See class comment for the assumptions we make here.<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    LOG.debug("Attempting to merge compaction results: " + compactedFiles.size()<a name="line.326"></a>
+<span class="sourceLineNo">327</span>        + " files replaced by " + results.size());<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    // In order to be able to fail in the middle of the operation, we'll operate on lazy<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    // copies and apply the result at the end.<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(false);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    cmc.mergeResults(compactedFiles, results);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    markCompactedAway(compactedFiles);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    debugDumpState("Merged compaction results");<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  // Mark the files as compactedAway once the storefiles and compactedfiles list is finalised<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  // Let a background thread close the actual reader on these compacted files and also<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  // ensure to evict the blocks from block cache so that they are no longer in<a name="line.338"></a>
+<span class="sourceLineNo">339</span>  // cache<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  private void markCompactedAway(Collection&lt;StoreFile&gt; compactedFiles) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    for (StoreFile file : compactedFiles) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      file.markCompactedAway();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>  @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  public void removeCompactedFiles(Collection&lt;StoreFile&gt; compactedFiles) throws IOException {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    // See class comment for the assumptions we make here.<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    LOG.debug("Attempting to delete compaction results: " + compactedFiles.size());<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // In order to be able to fail in the middle of the operation, we'll operate on lazy<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    // copies and apply the result at the end.<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    CompactionOrFlushMergeCopy cmc = new CompactionOrFlushMergeCopy(false);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    cmc.deleteResults(compactedFiles);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    debugDumpState("Deleted compaction results");<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>  @Override<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  public int getStoreCompactionPriority() {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    // If there's only L0, do what the default store does.<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    // If we are in critical priority, do the same - we don't want to trump all stores all<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    // the time due to how many files we have.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    int fc = getStorefileCount();<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    if (state.stripeFiles.isEmpty() || (this.blockingFileCount &lt;= fc)) {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      return this.blockingFileCount - fc;<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    }<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    // If we are in good shape, we don't want to be trumped by all other stores due to how<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    // many files we have, so do an approximate mapping to normal priority range; L0 counts<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    // for all stripes.<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    int l0 = state.level0Files.size(), sc = state.stripeFiles.size();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    int priority = (int)Math.ceil(((double)(this.blockingFileCount - fc + l0) / sc) - l0);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    return (priority &lt;= HStore.PRIORITY_USER) ? (HStore.PRIORITY_USER + 1) : priority;<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  /**<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * Gets the total size of all files in the stripe.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @param stripeIndex Stripe index.<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * @return Size.<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   */<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  private long getStripeFilesSize(int stripeIndex) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    long result = 0;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    for (StoreFile sf : state.stripeFiles.get(stripeIndex)) {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      result += sf.getReader().length();<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    }<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    return result;<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
+<span class="sourceLineNo">386</span><a name="line.386"></a>
+<span class="sourceLineNo">387</span>  /**<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * Loads initial store files that were picked up from some physical location pertaining to<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * this store (presumably). Unlike adding files after compaction, assumes empty initial<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * sets, and is forgiving with regard to stripe constraints - at worst, many/all files will<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * go to level 0.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   * @param storeFiles Store files to add.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>   */<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  private void loadUnclassifiedStoreFiles(List&lt;StoreFile&gt; storeFiles) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    LOG.debug("Attempting to load " + storeFiles.size() + " store files.");<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    TreeMap&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; candidateStripes = new TreeMap&lt;&gt;(MAP_COMPARATOR);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    ArrayList&lt;StoreFile&gt; level0Files = new ArrayList&lt;&gt;();<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Separate the files into tentative stripes; then validate. Currently, we rely on metadata.<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    // If needed, we could dynamically determine the stripes in future.<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    for (StoreFile sf : storeFiles) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      byte[] startRow = startOf(sf), endRow = endOf(sf);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      // Validate the range and put the files into place.<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      if (isInvalid(startRow) || isInvalid(endRow)) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>        insertFileIntoStripe(level0Files, sf); // No metadata - goes to L0.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        ensureLevel0Metadata(sf);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      } else if (!isOpen(startRow) &amp;&amp; !isOpen(endRow) &amp;&amp;<a name="line.406"></a>
+<span class="sourceLineNo">407</span>          nonOpenRowCompare(startRow, endRow) &gt;= 0) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        LOG.error("Unexpected metadata - start row [" + Bytes.toString(startRow) + "], end row ["<a name="line.408"></a>
+<span class="sourceLineNo">409</span>          + Bytes.toString(endRow) + "] in file [" + sf.getPath() + "], pushing to L0");<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        insertFileIntoStripe(level0Files, sf); // Bad metadata - goes to L0 also.<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        ensureLevel0Metadata(sf);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      } else {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        ArrayList&lt;StoreFile&gt; stripe = candidateStripes.get(endRow);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        if (stripe == null) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>          stripe = new ArrayList&lt;&gt;();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>          candidateStripes.put(endRow, stripe);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        insertFileIntoStripe(stripe, sf);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      }<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    // Possible improvement - for variable-count stripes, if all the files are in L0, we can<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    // instead create single, open-ended stripe with all files.<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    boolean hasOverlaps = false;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    byte[] expectedStartRow = null; // first stripe can start wherever<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    Iterator&lt;Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt;&gt; entryIter =<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        candidateStripes.entrySet().iterator();<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    while (entryIter.hasNext()) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; entry = entryIter.next();<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      ArrayList&lt;StoreFile&gt; files = entry.getValue();<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      // Validate the file start rows, and remove the bad ones to level 0.<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      for (int i = 0; i &lt; files.size(); ++i) {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>        StoreFile sf = files.get(i);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        byte[] startRow = startOf(sf);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>        if (expectedStartRow == null) {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>          expectedStartRow = startRow; // ensure that first stripe is still consistent<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        } else if (!rowEquals(expectedStartRow, startRow)) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          hasOverlaps = true;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          LOG.warn("Store file doesn't fit into the tentative stripes - expected to start at ["<a name="line.439"></a>
+<span class="sourceLineNo">440</span>              + Bytes.toString(expectedStartRow) + "], but starts at [" + Bytes.toString(startRow)<a name="line.440"></a>
+<span class="sourceLineNo">441</span>              + "], to L0 it goes");<a name="line.441"></a>
+<span class="sourceLineNo">442</span>          StoreFile badSf = files.remove(i);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>          insertFileIntoStripe(level0Files, badSf);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>          ensureLevel0Metadata(badSf);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>          --i;<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>      // Check if any files from the candidate stripe are valid. If so, add a stripe.<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      byte[] endRow = entry.getKey();<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      if (!files.isEmpty()) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>        expectedStartRow = endRow; // Next stripe must start exactly at that key.<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      } else {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        entryIter.remove();<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>    // In the end, there must be open ends on two sides. If not, and there were no errors i.e.<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    // files are consistent, they might be coming from a split. We will treat the boundaries<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    // as open keys anyway, and log the message.<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    // If there were errors, we'll play it safe and dump everything into L0.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    if (!candidateStripes.isEmpty()) {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      StoreFile firstFile = candidateStripes.firstEntry().getValue().get(0);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      boolean isOpen = isOpen(startOf(firstFile)) &amp;&amp; isOpen(candidateStripes.lastKey());<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      if (!isOpen) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>        LOG.warn("The range of the loaded files does not cover full key space: from ["<a name="line.465"></a>
+<span class="sourceLineNo">466</span>            + Bytes.toString(startOf(firstFile)) + "], to ["<a name="line.466"></a>
+<span class="sourceLineNo">467</span>            + Bytes.toString(candidateStripes.lastKey()) + "]");<a name="line.467"></a>
+<span class="sourceLineNo">468</span>        if (!hasOverlaps) {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>          ensureEdgeStripeMetadata(candidateStripes.firstEntry().getValue(), true);<a name="line.469"></a>
+<span class="sourceLineNo">470</span>          ensureEdgeStripeMetadata(candidateStripes.lastEntry().getValue(), false);<a name="line.470"></a>
+<span class="sourceLineNo">471</span>        } else {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>          LOG.warn("Inconsistent files, everything goes to L0.");<a name="line.472"></a>
+<span class="sourceLineNo">473</span>          for (ArrayList&lt;StoreFile&gt; files : candidateStripes.values()) {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>            for (StoreFile sf : files) {<a name="line.474"></a>
+<span class="sourceLineNo">475</span>              insertFileIntoStripe(level0Files, sf);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>              ensureLevel0Metadata(sf);<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>          candidateStripes.clear();<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><a name="line.483"></a>
+<span class="sourceLineNo">484</span>    // Copy the results into the fields.<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    State state = new State();<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    state.level0Files = ImmutableList.copyOf(level0Files);<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    state.stripeFiles = new ArrayList&lt;&gt;(candidateStripes.size());<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    state.stripeEndRows = new byte[Math.max(0, candidateStripes.size() - 1)][];<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    ArrayList&lt;StoreFile&gt; newAllFiles = new ArrayList&lt;&gt;(level0Files);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    int i = candidateStripes.size() - 1;<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    for (Map.Entry&lt;byte[], ArrayList&lt;StoreFile&gt;&gt; entry : candidateStripes.entrySet()) {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>      state.stripeFiles.add(ImmutableList.copyOf(entry.getValue()));<a name="line.492"></a>
+<span class="sourceLineNo">493</span>      newAllFiles.addAll(entry.getValue());<a name="line.493"></a>
+<span class="sourceLineNo">494</span>      if (i &gt; 0) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>        state.stripeEndRows[state.stripeFiles.size() - 1] = entry.getKey();<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      }<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      --i;<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    }<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    state.allFilesCached = ImmutableList.copyOf(newAllFiles);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    this.state = state;<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    debugDumpState("Files loaded");<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>  private void ensureEdgeStripeMetadata(ArrayList&lt;StoreFile&gt; stripe, boolean isFirst) {<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    HashMap&lt;StoreFile, byte[]&gt; targetMap = isFirst ? fileStarts : fileEnds;<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    for (StoreFile sf : stripe) {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>      targetMap.put(sf, OPEN_KEY);<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    }<a name="line.508"></a>
 <span class="sourceLineNo">509</span>  }<a name="line.509"></a>
 <span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>  private void debugDumpState(String string) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    if (!LOG.isDebugEnabled()) return;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    StringBuilder sb = new StringBuilder();<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    sb.append("\n" + string + "; current stripe state is as such:");<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    sb.append("\n level 0 with ")<a name="line.515"></a>
-<span class="sourceLineNo">516</span>        .append(state.level0Files.size())<a name="line.516"></a>
-<span class="sourceLineNo">517</span>        .append(<a name="line.517"></a>
-<span class="sourceLineNo">518</span>          " files: "<a name="line.518"></a>
-<span class="sourceLineNo">519</span>              + TraditionalBinaryPrefix.long2String(<a name="line.519"></a>
-<span class="sourceLineNo">520</span>                StripeCompactionPolicy.getTotalFileSize(state.level0Files), "", 1) + ";");<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    for (int i = 0; i &lt; state.stripeFiles.size(); ++i) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      String endRow = (i == state.stripeEndRows.length)<a name="line.522"></a>
-<span class="sourceLineNo">523</span>          ? "(end)" : "[" + Bytes.toString(state.stripeEndRows[i]) + "]";<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      sb.append("\n stripe ending in ")<a name="line.524"></a>
-<span class="sourceLineNo">525</span>          .append(endRow)<a name="line.525"></a>
-<span class="sourceLineNo">526</span>          .append(" with ")<a name="line.526"></a>
-<span class="sourceLineNo">527</span>          .append(state.stripeFiles.get(i).size())<a name="line.527"></a>
-<span class="sourceLineNo">528</span>          .append(<a name="line.528"></a>
-<span class="sourceLineNo">529</span>            " files: "<a name="line.529"></a>
-<span class="sourceLineNo">530</span>                + TraditionalBinaryPrefix.long2String(<a name="line.530"></a>
-<span class="sourceLineNo">531</span>                  StripeCompactionPolicy.getTotalFileSize(state.stripeFiles.get(i)), "", 1) + ";");<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    }<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    sb.append("\n").append(state.stripeFiles.size()).append(" stripes total.");<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    sb.append("\n").append(getStorefileCount()).append(" files total.");<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    LOG.debug(sb.toString());<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>  /**<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * Checks whether the key indicates an open interval boundary (i.e. infinity).<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  private static final boolean isOpen(byte[] key) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    return key != null &amp;&amp; key.length == 0;<a name="line.542"></a>
-<span class="sourceLineNo">543</span>  }<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>  private static final boolean isOpen(Cell key) {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    return key != null &amp;&amp; key.getRowLength() == 0;<a name="line.546"></a>
-<span class="sourceLineNo">547</span>  }<a name="line.547"></a>
-<span class="sourceLineNo">548</span><a name="line.548"></a>
-<span class="sourceLineNo">549</span>  /**<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * Checks whether the key is invalid (e.g. from an L0 file, or non-stripe-compacted files).<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   */<a name="line.551"></a>
-<span class="sourceLineNo">552</span>  private static final boolean isInvalid(byte[] key) {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    // No need to use Arrays.equals because INVALID_KEY is null<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    return key == INVALID_KEY;<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>  /**<a name="line.557"></a>
-<span class="sourceLineNo">558</span>   * Compare two keys for equality.<a name="line.558"></a>
-<span class="sourceLineNo">559</span>   */<a name="line.559"></a>
-<span class="sourceLineNo">560</span>  private final boolean rowEquals(byte[] k1, byte[] k2) {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    return Bytes.equals(k1, 0, k1.length, k2, 0, k2.length);<a name="line.561"></a>
-<span class="sourceLineNo">562</span>  }<a name="line.562"></a>
-<span class="sourceLineNo">563</span><a name="line.563"></a>
-<span class="sourceLineNo">564</span>  /**<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * Compare two keys. Keys must not be open (isOpen(row) == false).<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   */<a name="line.566"></a>
-<span class="sourceLineNo">567</span>  private final int nonOpenRowCompare(byte[] k1, byte[] k2) {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    assert !isOpen(k1) &amp;&amp; !isOpen(k2);<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    return Bytes.compareTo(k1, k2);<a name="line.569"></a>
-<span class="sourceLineNo">570</span>  }<a name="line.570"></a>
-<span class="sourceLineNo">571</span><a name="line.571"></a>
-<span class="sourceLineNo">572</span>  private final int nonOpenRowCompare(Cell k1, byte[] k2) {<a name="line.572"></a>
+<span class="sourceLineNo">511</span>  private void ensureLevel0Metadata(StoreFile sf) {<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    if (!isInvalid(startOf(sf))) this.fileStarts.put(sf, INVALID_KEY_IN_MAP);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    if (!isInvalid(endOf(sf))) this.fileEnds.put(sf, INVALID_KEY_IN_MAP);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>  }<a name="line.514"></a>
+<span class="sourceLineNo">515</span><a name="line.515"></a>
+<span class="sourceLineNo">516</span>  private void debugDumpState(String string) {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    if (!LOG.isDebugEnabled()) return;<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    StringBuilder sb = new StringBuilder();<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    sb.append("\n" + string + "; current stripe state is as such:");<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    sb.append("\n level 0 with ")<a name="line.520"></a>
+<span class="sourceLineNo">521</span>        .append(state.level0Files.size())<a name="line.521"></a>
+<span class="sourceLineNo">522</span>        .append(<a name="line.522"></a>
+<span class="sourceLineNo">523</span>          " files: "<a name="line.523"></a>
+<span class="sourceLineNo">524</span>              + TraditionalBinaryPrefix.long2String(<a name="line.524"></a>
+<span class="sourceLineNo">525</span>                StripeCompactionPolicy.getTotalFileSize(state.level0Files), "", 1) + ";");<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    for (int i = 0; i &lt; state.stripeFiles.size(); ++i) {<a name="line.526"></a>
+<span class="sourceLineNo">527</span>      String endRow = (i == state.stripeEndRows.length)<a name="line.527"></a>
+<span class="sourceLineNo">528</span>          ? "(end)" : "[" + Bytes.toString(state.stripeEndRows[i]) + "]";<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      sb.append("\n stripe ending in ")<a name="line.529"></a>
+<span class="sourceLineNo">530</span>          .append(endRow)<a name="line.530"></a>
+<span class="sourceLineNo">531</span>          .append(" with ")<a name="line.531"></a>
+<span class="sourceLineNo">532</span>          .append(state.stripeFiles.get(i).size())<a name="line.532"></a>
+<span class="sourceLineNo">533</span>          .append(<a name="line.533"></a>
+<span class="sourceLineNo">534</span>            " files: "<a name="line.534"></a>
+<span class="sourceLineNo">535</span>                + TraditionalBinaryPrefix.long2String(<a name="line.535"></a>
+<span class="sourceLineNo">536</span>                  StripeCompactionPolicy.getTotalFileSize(state.stripeFiles.get(i)), "", 1) + ";");<a name="line.536"></a>
+<span class="sourceLineNo">537</span>    }<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    sb.append("\n").append(state.stripeFiles.size()).append(" stripes total.");<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    sb.append("\n").append(getStorefileCount()).append(" files total.");<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    LOG.debug(sb.toString());<a name="line.540"></a>
+<span class="sourceLineNo">541</span>  }<a name="line.541"></a>
+<span class="sourceLineNo">542</span><a name="line.542"></a>
+<span class="sourceLineNo">543</span>  /**<a name="line.543"></a>
+<span class="sourceLineNo">544</span>   * Checks whether the key indicates an open interval boundary (i.e. infinity).<a name="line.544"></a>
+<span class="sourceLineNo">545</span>   */<a name="line.545"></a>
+<span class="sourceLineNo">546</span>  private static final boolean isOpen(byte[] key) {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>    return key != null &amp;&amp; key.length == 0;<a name="line.547"></a>
+<span class="sourceLineNo">548</span>  }<a name="line.548"></a>
+<span class="sourceLineNo">549</span><a name="line.549"></a>
+<span class="sourceLineNo">550</span>  private static final boolean isOpen(Cell key) {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    return key != null &amp;&amp; key.getRowLength() == 0;<a name="line.551"></a>
+<span class="sourceLineNo">552</span>  }<a name="line.552"></a>
+<span class="sourceLineNo">553</span><a name="line.553"></a>
+<span class="sourceLineNo">554</span>  /**<a name="line.554"></a>
+<span class="sourceLineNo">555</span>   * Checks whether the key is invalid (e.g. from an L0 file, or non-stripe-compacted files).<a name="line.555"></a>
+<span class="sourceLineNo">556</span>   */<a name="line.556"></a>
+<span class="sourceLineNo">557</span>  private static final boolean isInvalid(byte[] key) {<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    // No need to use Arrays.equals because INVALID_KEY is null<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    return key == INVALID_KEY;<a name="line.559"></a>
+<span class="sourceLineNo">560</span>  }<a name="line.560"></a>
+<span class="sourceLineNo">561</span><a name="line.561"></a>
+<span class="sourceLineNo">562</span>  /**<a name="line.562"></a>
+<span class="sourceLineNo">563</span>   * Compare two keys for equality.<a name="line.563"></a>
+<span class="sourceLineNo">564</span>   */<a name="line.564"></a>
+<span class="sourceLineNo">565</span>  private final boolean rowEquals(byte[] k1, byte[] k2) {<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    return Bytes.equals(k1, 0, k1.length, k2, 0, k2.length);<a name="line.566"></a>
+<span class="sourceLineNo">567</span>  }<a name="line.567"></a>
+<span class="sourceLineNo">568</span><a name="line.568"></a>
+<span class="sourceLineNo">569</span>  /**<a name="line.569"></a>
+<span class="sourceLineNo">570</span>   * Compare two keys. Keys must not be open (isOpen(row) == false).<a name="line.570"></a>
+<span class="sourceLineNo">571</span>   */<a name="line.571"></a>
+<span class="sourceLineNo">572</span>  private final int nonOpenRowCompare(byte[] k1, byte[] k2) {<a name="line.572"></a>
 <span class="sourceLineNo">573</span>    assert !isOpen(k1) &amp;&amp; !isOpen(k2);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    return cellComparator.compareRows(k1, k2, 0, k2.length);<a name="line.574"></a>
+<span class="sourceLineNo">574</span>    return Bytes.compareTo(k1, k2);<a name="line.574"></a>
 <span class="sourceLineNo">575</span>  }<a name="line.575"></a>
 <span class="sourceLineNo">576</span><a name="li

<TRUNCATED>

[37/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html b/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html
index 50ed426..48f96c6 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.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};
+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};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -237,10 +237,16 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 </td>
 </tr>
 <tr id="i5" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#getCompactedFilesCount--">getCompactedFilesCount</a></span>()</code>
+<div class="block">Returns the number of compacted files.</div>
+</td>
+</tr>
+<tr id="i6" class="altColor">
 <td class="colFirst"><code>double</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#getCompactionPressure--">getCompactionPressure</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#getFilesForScan-byte:A-boolean-byte:A-boolean-">getFilesForScan</a></span>(byte[]&nbsp;startRow,
                boolean&nbsp;includeStartRow,
@@ -249,68 +255,68 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <div class="block">Gets the store files to scan for a Scan or Get request.</div>
 </td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#getSplitPoint--">getSplitPoint</a></span>()</code>
 <div class="block">Gets the split point for the split of this set of store files (approx.</div>
 </td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#getStoreCompactionPriority--">getStoreCompactionPriority</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#getStoreFileComparator--">getStoreFileComparator</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#getStorefileCount--">getStorefileCount</a></span>()</code>
 <div class="block">Returns the number of files currently in use.</div>
 </td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#getStorefiles--">getStorefiles</a></span>()</code>
 <div class="block">Gets the snapshot of the store files currently in use.</div>
 </td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#getUnneededFiles-long-java.util.List-">getUnneededFiles</a></span>(long&nbsp;maxTs,
                 <a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;filesCompacting)</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#insertNewFiles-java.util.Collection-">insertNewFiles</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;sfs)</code>
 <div class="block">Adds new files, either for from MemStore flush or bulk insert, into the structure.</div>
 </td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#loadFiles-java.util.List-">loadFiles</a></span>(<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;storeFiles)</code>
 <div class="block">Loads the initial store files into empty StoreFileManager.</div>
 </td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#markCompactedAway-java.util.Collection-">markCompactedAway</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;compactedFiles)</code>&nbsp;</td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#removeCompactedFiles-java.util.Collection-">removeCompactedFiles</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;removedCompactedfiles)</code>
 <div class="block">Remove the compacted files</div>
 </td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#sortAndSetStoreFiles-java.util.List-">sortAndSetStoreFiles</a></span>(<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;storeFiles)</code>&nbsp;</td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#sortCompactedfiles-java.util.List-">sortCompactedfiles</a></span>(<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;storefiles)</code>&nbsp;</td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i20" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#updateCandidateFilesForRowKeyBefore-java.util.Iterator-org.apache.hadoop.hbase.KeyValue-org.apache.hadoop.hbase.Cell-">updateCandidateFilesForRowKeyBefore</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidateFiles,
                                    <a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;targetKey,
@@ -564,13 +570,30 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 </dl>
 </li>
 </ul>
+<a name="getCompactedFilesCount--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getCompactedFilesCount</h4>
+<pre>public final&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.120">getCompactedFilesCount</a>()</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getCompactedFilesCount--">StoreFileManager</a></code></span></div>
+<div class="block">Returns the number of compacted files.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getCompactedFilesCount--">getCompactedFilesCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileManager</a></code></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The number of files.</dd>
+</dl>
+</li>
+</ul>
 <a name="addCompactionResults-java.util.Collection-java.util.Collection-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>addCompactionResults</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.120">addCompactionResults</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;newCompactedfiles,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.128">addCompactionResults</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;newCompactedfiles,
                                  <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;results)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#addCompactionResults-java.util.Collection-java.util.Collection-">StoreFileManager</a></code></span></div>
 <div class="block">Adds only the new compaction results into the structure.</div>
@@ -589,7 +612,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>markCompactedAway</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.143">markCompactedAway</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;compactedFiles)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.151">markCompactedAway</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;compactedFiles)</pre>
 </li>
 </ul>
 <a name="removeCompactedFiles-java.util.Collection-">
@@ -598,7 +621,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>removeCompactedFiles</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.150">removeCompactedFiles</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;removedCompactedfiles)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.158">removeCompactedFiles</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;removedCompactedfiles)
                           throws <a href="http://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/StoreFileManager.html#removeCompactedFiles-java.util.Collection-">StoreFileManager</a></code></span></div>
 <div class="block">Remove the compacted files</div>
@@ -618,7 +641,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getCandidateFilesForRowKeyBefore</h4>
-<pre>public final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.160">getCandidateFilesForRowKeyBefore</a>(<a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;targetKey)</pre>
+<pre>public final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.168">getCandidateFilesForRowKeyBefore</a>(<a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;targetKey)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getCandidateFilesForRowKeyBefore-org.apache.hadoop.hbase.KeyValue-">StoreFileManager</a></code></span></div>
 <div class="block">Gets initial, full list of candidate store files to check for row-key-before.</div>
 <dl>
@@ -638,7 +661,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>updateCandidateFilesForRowKeyBefore</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.165">updateCandidateFilesForRowKeyBefore</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidateFiles,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.173">updateCandidateFilesForRowKeyBefore</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidateFiles,
                                                                <a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;targetKey,
                                                                <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;candidate)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#updateCandidateFilesForRowKeyBefore-java.util.Iterator-org.apache.hadoop.hbase.KeyValue-org.apache.hadoop.hbase.Cell-">StoreFileManager</a></code></span></div>
@@ -665,7 +688,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getSplitPoint</h4>
-<pre>public final&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.175">getSplitPoint</a>()
+<pre>public final&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.183">getSplitPoint</a>()
                            throws <a href="http://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/StoreFileManager.html#getSplitPoint--">StoreFileManager</a></code></span></div>
 <div class="block">Gets the split point for the split of this set of store files (approx. middle).</div>
@@ -685,7 +708,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getFilesForScan</h4>
-<pre>public final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.186">getFilesForScan</a>(byte[]&nbsp;startRow,
+<pre>public final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.194">getFilesForScan</a>(byte[]&nbsp;startRow,
                                                    boolean&nbsp;includeStartRow,
                                                    byte[]&nbsp;stopRow,
                                                    boolean&nbsp;includeStopRow)</pre>
@@ -708,7 +731,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreCompactionPriority</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.193">getStoreCompactionPriority</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.201">getStoreCompactionPriority</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getStoreCompactionPriority--">getStoreCompactionPriority</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileManager</a></code></dd>
@@ -723,7 +746,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getUnneededFiles</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.199">getUnneededFiles</a>(long&nbsp;maxTs,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.207">getUnneededFiles</a>(long&nbsp;maxTs,
                                               <a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;filesCompacting)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -742,7 +765,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>sortAndSetStoreFiles</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.219">sortAndSetStoreFiles</a>(<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;storeFiles)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.227">sortAndSetStoreFiles</a>(<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;storeFiles)</pre>
 </li>
 </ul>
 <a name="sortCompactedfiles-java.util.List-">
@@ -751,7 +774,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>sortCompactedfiles</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.224">sortCompactedfiles</a>(<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;storefiles)</pre>
+<pre>private&nbsp;<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.232">sortCompactedfiles</a>(<a href="http://docs.oracle.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/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;storefiles)</pre>
 </li>
 </ul>
 <a name="getCompactionPressure--">
@@ -760,7 +783,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactionPressure</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.231">getCompactionPressure</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.239">getCompactionPressure</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getCompactionPressure--">getCompactionPressure</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileManager</a></code></dd>
@@ -777,7 +800,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getStoreFileComparator</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.241">getStoreFileComparator</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#line.249">getStoreFileComparator</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#getStoreFileComparator--">getStoreFileComparator</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileManager</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/regionserver/HMobStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HMobStore.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HMobStore.html
index 51c5c1b..b371faa 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HMobStore.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HMobStore.html
@@ -472,7 +472,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#add-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemstoreSize-">add</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#add-java.lang.Iterable-org.apache.hadoop.hbase.regionserver.MemstoreSize-">add</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#addChangedReaderObserver-org.apache.hadoop.hbase.regionserver.ChangedReadersObserver-">addChangedReaderObserver</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#areWritesEnabled--">areWritesEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#assertBulkLoadHFileOk-org.apache.hadoop.fs.Path-">assertBulkLoadHFileOk</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#bulkLoadHFile-byte:A-java.lang.String-org.apache.hadoop.fs.Path-">bulkLoadHFile</a>, <a href="../../../../../org/apache/hadoop/hbase/region
 server/HStore.html#bulkLoadHFile-org.apache.hadoop.hbase.regionserver.StoreFileInfo-">bulkLoadHFile</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#cancelRequestedCompaction-org.apache.hadoop.hbase.regionserver.compactions.CompactionContext-">cancelRequestedCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#canSplit--">canSplit</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#close--">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#closeAndArchiveCompactedFiles--">closeAndArchiveCompactedFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#compact-org.apache.hadoop.hbase.regionserver.compactions.CompactionContext-org.apache.hadoop.hbase.regionserver.throttle.ThroughputController-">compact</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#compact-org.apache.hadoop.hbase.regionserver.compactions.
 CompactionContext-org.apache.hadoop.hbase.regionserver.throttle.ThroughputController-org.apache.hadoop.hbase.security.User-">compact</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#compactRecentForTestingAssumingDefaultPolicy-int-">compactRecentForTestingAssumingDefaultPolicy</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#completeCompaction-java.util.Collection-">completeCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#createFlushContext-long-">createFlushContext</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#createWriterInTmp-long-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-boolean-boolean-boolean-">createWriterInTmp</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#createWriterInTmp-long-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-boolean-boolean-boolean-boolean-">createWriterInTmp</a>, <a href="
 ../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#createWriterInTmp-long-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-boolean-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.TimeRangeTracker-">createWriterInTmp</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#deleteChangedReaderObserver-org.apache.hadoop.hbase.regionserver.ChangedReadersObserver-">deleteChangedReaderObserver</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#deregisterChildren-org.apache.hadoop.hbase.conf.ConfigurationManager-">deregisterChildren</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#determineTTLFromFamily-org.apache.hadoop.hbase.HColumnDescriptor-">determineTTLFromFamily</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#flushCache-long-org.apache.hadoop.hbase.regionserver.MemStoreSnapshot-org.apache.hadoop.hbase.monitoring.MonitoredTask-org.apache.hadoop
 .hbase.regionserver.throttle.ThroughputController-">flushCache</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getAvgStoreFileAge--">getAvgStoreFileAge</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getBlockingFileCount--">getBlockingFileCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getBytesPerChecksum-org.apache.hadoop.conf.Configuration-">getBytesPerChecksum</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCacheConfig--">getCacheConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getChecksumType-org.apache.hadoop.conf.Configuration-">getChecksumType</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCloseCheckInterval--">getCloseCheckInterval</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getColumnFamilyName--">getColumnFamilyName</a>, <a href="../../../../../
 org/apache/hadoop/hbase/regionserver/HStore.html#getCompactedCellsCount--">getCompactedCellsCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactedCellsSize--">getCompactedCellsSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactionCheckMultiplier--">getCompactionCheckMultiplier</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactionPressure--">getCompactionPressure</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactionProgress--">getCompactionProgress</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactPriority--">getCompactPriority</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getComparator--">getComparator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCoprocessorHost--">getCoprocessorHost</a>, <a href="../../../../../org/apach
 e/hadoop/hbase/regionserver/HStore.html#getDataBlockEncoder--">getDataBlockEncoder</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFamily--">getFamily</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFileSystem--">getFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlushableSize--">getFlushableSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlushedCellsCount--">getFlushedCellsCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlushedCellsSize--">getFlushedCellsSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlushedOutputFileSize--">getFlushedOutputFileSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getHFilesSize--">getHFilesSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getHRegion--">getHRegion</a
 >, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getLastCompactSize--">getLastCompactSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMajorCompactedCellsCount--">getMajorCompactedCellsCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMajorCompactedCellsSize--">getMajorCompactedCellsSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMaxMemstoreTS--">getMaxMemstoreTS</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMaxSequenceId--">getMaxSequenceId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMaxStoreFileAge--">getMaxStoreFileAge</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMemstoreFlushSize--">getMemstoreFlushSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMemStoreSize--">getMemStoreSize</a>, <a href="../../../
 ../../org/apache/hadoop/hbase/regionserver/HStore.html#getMinStoreFileAge--">getMinStoreFileAge</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getNumHFiles--">getNumHFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getNumReferenceFiles--">getNumReferenceFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getOffPeakHours--">getOffPeakHours</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getRegionFileSystem--">getRegionFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getRegionInfo--">getRegionInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanInfo--">getScanInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanner-org.apache.hadoop.hbase.client.Scan-java.util.NavigableSet-long-">getScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regi
 onserver/HStore.html#getScanners-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-">getScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanners-java.util.List-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-boolean-">getScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSize--">getSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSizeOfMemStore--">getSizeOfMemStore</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSizeOfSnapshot--">getSizeOfSnapshot</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSizeToFlush--">getSizeToFlush</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSmallestReadPoint--">getSmallestReadPoint</a>, <
 a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSnapshotSize--">getSnapshotSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSplitPoint--">getSplitPoint</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreEngine--">getStoreEngine</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStorefiles--">getStorefiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStorefilesCount--">getStorefilesCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStorefilesIndexSize--">getStorefilesIndexSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStorefilesSize--">getStorefilesSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreFileTtl--">getStoreFileTtl</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStor
 eHomedir-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.HRegionInfo-byte:A-">getStoreHomedir</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreHomedir-org.apache.hadoop.fs.Path-java.lang.String-byte:A-">getStoreHomedir</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreSizeUncompressed--">getStoreSizeUncompressed</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getTableName--">getTableName</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getTotalStaticBloomSize--">getTotalStaticBloomSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getTotalStaticIndexSize--">getTotalStaticIndexSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#hasReferences--">hasReferences</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#hasTooManyStoreFiles--">hasTooManyStoreFiles</a>, <a hre
 f="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#heapSize--">heapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#isMajorCompaction--">isMajorCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#isPrimaryReplicaStore--">isPrimaryReplicaStore</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#isSloppyMemstore--">isSloppyMemstore</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#moveFileIntoPlace-org.apache.hadoop.fs.Path-">moveFileIntoPlace</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#needsCompaction--">needsCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#onConfigurationChange-org.apache.hadoop.conf.Configuration-">onConfigurationChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#preBulkLoadHFile-java.lang.String-long-">preBulkLoadHFile<
 /a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#preFlushSeqIDEstimation--">preFlushSeqIDEstimation</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#refreshStoreFiles--">refreshStoreFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#refreshStoreFiles-java.util.Collection-">refreshStoreFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#registerChildren-org.apache.hadoop.hbase.conf.ConfigurationManager-">registerChildren</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#replaceStoreFiles-java.util.Collection-java.util.Collection-">replaceStoreFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#replayCompactionMarker-org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescriptor-boolean-boolean-">replayCompactionMarker</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HSt
 ore.html#requestCompaction--">requestCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#requestCompaction-int-org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest-">requestCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#requestCompaction-int-org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest-org.apache.hadoop.hbase.security.User-">requestCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#setDataBlockEncoderInTest-org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoder-">setDataBlockEncoderInTest</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#setScanInfo-org.apache.hadoop.hbase.regionserver.ScanInfo-">setScanInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#snapshot--">snapshot</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#startReplayingFromWAL--
 ">startReplayingFromWAL</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#stopReplayingFromWAL--">stopReplayingFromWAL</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#throttleCompaction-long-">throttleCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#timeOfOldestEdit--">timeOfOldestEdit</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#toString--">toString</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#triggerMajorCompaction--">triggerMajorCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#upsert-java.lang.Iterable-long-org.apache.hadoop.hbase.regionserver.MemstoreSize-">upsert</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#versionsToReturn-int-">versionsToReturn</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#add-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemstoreSize-">add</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#add-java.lang.Iterable-org.apache.hadoop.hbase.regionserver.MemstoreSize-">add</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#addChangedReaderObserver-org.apache.hadoop.hbase.regionserver.ChangedReadersObserver-">addChangedReaderObserver</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#areWritesEnabled--">areWritesEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#assertBulkLoadHFileOk-org.apache.hadoop.fs.Path-">assertBulkLoadHFileOk</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#bulkLoadHFile-byte:A-java.lang.String-org.apache.hadoop.fs.Path-">bulkLoadHFile</a>, <a href="../../../../../org/apache/hadoop/hbase/region
 server/HStore.html#bulkLoadHFile-org.apache.hadoop.hbase.regionserver.StoreFileInfo-">bulkLoadHFile</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#cancelRequestedCompaction-org.apache.hadoop.hbase.regionserver.compactions.CompactionContext-">cancelRequestedCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#canSplit--">canSplit</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#close--">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#closeAndArchiveCompactedFiles--">closeAndArchiveCompactedFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#compact-org.apache.hadoop.hbase.regionserver.compactions.CompactionContext-org.apache.hadoop.hbase.regionserver.throttle.ThroughputController-">compact</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#compact-org.apache.hadoop.hbase.regionserver.compactions.
 CompactionContext-org.apache.hadoop.hbase.regionserver.throttle.ThroughputController-org.apache.hadoop.hbase.security.User-">compact</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#compactRecentForTestingAssumingDefaultPolicy-int-">compactRecentForTestingAssumingDefaultPolicy</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#completeCompaction-java.util.Collection-">completeCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#createFlushContext-long-">createFlushContext</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#createWriterInTmp-long-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-boolean-boolean-boolean-">createWriterInTmp</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#createWriterInTmp-long-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-boolean-boolean-boolean-boolean-">createWriterInTmp</a>, <a href="
 ../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#createWriterInTmp-long-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-boolean-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.TimeRangeTracker-">createWriterInTmp</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#deleteChangedReaderObserver-org.apache.hadoop.hbase.regionserver.ChangedReadersObserver-">deleteChangedReaderObserver</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#deregisterChildren-org.apache.hadoop.hbase.conf.ConfigurationManager-">deregisterChildren</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#determineTTLFromFamily-org.apache.hadoop.hbase.HColumnDescriptor-">determineTTLFromFamily</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#flushCache-long-org.apache.hadoop.hbase.regionserver.MemStoreSnapshot-org.apache.hadoop.hbase.monitoring.MonitoredTask-org.apache.hadoop
 .hbase.regionserver.throttle.ThroughputController-">flushCache</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getAvgStoreFileAge--">getAvgStoreFileAge</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getBlockingFileCount--">getBlockingFileCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getBytesPerChecksum-org.apache.hadoop.conf.Configuration-">getBytesPerChecksum</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCacheConfig--">getCacheConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getChecksumType-org.apache.hadoop.conf.Configuration-">getChecksumType</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCloseCheckInterval--">getCloseCheckInterval</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getColumnFamilyName--">getColumnFamilyName</a>, <a href="../../../../../
 org/apache/hadoop/hbase/regionserver/HStore.html#getCompactedCellsCount--">getCompactedCellsCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactedCellsSize--">getCompactedCellsSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactedFiles--">getCompactedFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactedFilesCount--">getCompactedFilesCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactionCheckMultiplier--">getCompactionCheckMultiplier</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactionPressure--">getCompactionPressure</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactionProgress--">getCompactionProgress</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactPriority--">getCompactPriority</a>, <a href="../../..
 /../../org/apache/hadoop/hbase/regionserver/HStore.html#getComparator--">getComparator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCoprocessorHost--">getCoprocessorHost</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getDataBlockEncoder--">getDataBlockEncoder</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFamily--">getFamily</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFileSystem--">getFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlushableSize--">getFlushableSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlushedCellsCount--">getFlushedCellsCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlushedCellsSize--">getFlushedCellsSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlushedOutputFileSiz
 e--">getFlushedOutputFileSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getHFilesSize--">getHFilesSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getHRegion--">getHRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getLastCompactSize--">getLastCompactSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMajorCompactedCellsCount--">getMajorCompactedCellsCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMajorCompactedCellsSize--">getMajorCompactedCellsSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMaxMemstoreTS--">getMaxMemstoreTS</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMaxSequenceId--">getMaxSequenceId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMaxStoreFileAge--">getMaxStoreFileAge</a>, <a href=".
 ./../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMemstoreFlushSize--">getMemstoreFlushSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMemStoreSize--">getMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMinStoreFileAge--">getMinStoreFileAge</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getNumHFiles--">getNumHFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getNumReferenceFiles--">getNumReferenceFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getOffPeakHours--">getOffPeakHours</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getRegionFileSystem--">getRegionFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getRegionInfo--">getRegionInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSca
 nInfo--">getScanInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanner-org.apache.hadoop.hbase.client.Scan-java.util.NavigableSet-long-">getScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanners-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-">getScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanners-java.util.List-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-boolean-">getScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSize--">getSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSizeOfMemStore--">getSizeOfMemStore</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSizeOfSnapshot--">getSizeOfSnaps
 hot</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSizeToFlush--">getSizeToFlush</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSmallestReadPoint--">getSmallestReadPoint</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSnapshotSize--">getSnapshotSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSplitPoint--">getSplitPoint</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreEngine--">getStoreEngine</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStorefiles--">getStorefiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStorefilesCount--">getStorefilesCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStorefilesIndexSize--">getStorefilesIndexSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStor
 e.html#getStorefilesSize--">getStorefilesSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreFileTtl--">getStoreFileTtl</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreHomedir-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.HRegionInfo-byte:A-">getStoreHomedir</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreHomedir-org.apache.hadoop.fs.Path-java.lang.String-byte:A-">getStoreHomedir</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreSizeUncompressed--">getStoreSizeUncompressed</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getTableName--">getTableName</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getTotalStaticBloomSize--">getTotalStaticBloomSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getTotalStaticIndexSize--">getTotalStaticIndexSize
 </a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#hasReferences--">hasReferences</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#hasTooManyStoreFiles--">hasTooManyStoreFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#heapSize--">heapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#isMajorCompaction--">isMajorCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#isPrimaryReplicaStore--">isPrimaryReplicaStore</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#isSloppyMemstore--">isSloppyMemstore</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#moveFileIntoPlace-org.apache.hadoop.fs.Path-">moveFileIntoPlace</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#needsCompaction--">needsCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/
 regionserver/HStore.html#onConfigurationChange-org.apache.hadoop.conf.Configuration-">onConfigurationChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#preBulkLoadHFile-java.lang.String-long-">preBulkLoadHFile</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#preFlushSeqIDEstimation--">preFlushSeqIDEstimation</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#recreateScanners-java.util.List-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-boolean-">recreateScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#refreshStoreFiles--">refreshStoreFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#refreshStoreFiles-java.util.Collection-">refreshStoreFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#registerChildren-org.apache.h
 adoop.hbase.conf.ConfigurationManager-">registerChildren</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#replaceStoreFiles-java.util.Collection-java.util.Collection-">replaceStoreFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#replayCompactionMarker-org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescriptor-boolean-boolean-">replayCompactionMarker</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#requestCompaction--">requestCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#requestCompaction-int-org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest-">requestCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#requestCompaction-int-org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest-org.apache.hadoop.hbase.security.User-">requestCompaction</a>, <a href="../../../../../o
 rg/apache/hadoop/hbase/regionserver/HStore.html#setDataBlockEncoderInTest-org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoder-">setDataBlockEncoderInTest</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#setScanInfo-org.apache.hadoop.hbase.regionserver.ScanInfo-">setScanInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#snapshot--">snapshot</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#startReplayingFromWAL--">startReplayingFromWAL</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#stopReplayingFromWAL--">stopReplayingFromWAL</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#throttleCompaction-long-">throttleCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#timeOfOldestEdit--">timeOfOldestEdit</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#toString--">toString</a>, <
 a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#triggerMajorCompaction--">triggerMajorCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#upsert-java.lang.Iterable-long-org.apache.hadoop.hbase.regionserver.MemstoreSize-">upsert</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#versionsToReturn-int-">versionsToReturn</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
index 022b72c..c69aa7b 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private final class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2173">HStore.StoreFlusherImpl</a>
+<pre>private final class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2219">HStore.StoreFlusherImpl</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFlushContext</a></pre>
 </li>
@@ -274,7 +274,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheFlushSeqNum</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2175">cacheFlushSeqNum</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2221">cacheFlushSeqNum</a></pre>
 </li>
 </ul>
 <a name="snapshot">
@@ -283,7 +283,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshot</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2176">snapshot</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2222">snapshot</a></pre>
 </li>
 </ul>
 <a name="tempFiles">
@@ -292,7 +292,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>tempFiles</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2177">tempFiles</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2223">tempFiles</a></pre>
 </li>
 </ul>
 <a name="committedFiles">
@@ -301,7 +301,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>committedFiles</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2178">committedFiles</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2224">committedFiles</a></pre>
 </li>
 </ul>
 <a name="cacheFlushCount">
@@ -310,7 +310,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheFlushCount</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2179">cacheFlushCount</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2225">cacheFlushCount</a></pre>
 </li>
 </ul>
 <a name="cacheFlushSize">
@@ -319,7 +319,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheFlushSize</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2180">cacheFlushSize</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2226">cacheFlushSize</a></pre>
 </li>
 </ul>
 <a name="outputFileSize">
@@ -328,7 +328,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockListLast">
 <li class="blockList">
 <h4>outputFileSize</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2181">outputFileSize</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2227">outputFileSize</a></pre>
 </li>
 </ul>
 </li>
@@ -345,7 +345,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockListLast">
 <li class="blockList">
 <h4>StoreFlusherImpl</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2183">StoreFlusherImpl</a>(long&nbsp;cacheFlushSeqNum)</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2229">StoreFlusherImpl</a>(long&nbsp;cacheFlushSeqNum)</pre>
 </li>
 </ul>
 </li>
@@ -362,7 +362,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>prepare</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2192">prepare</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2238">prepare</a>()</pre>
 <div class="block">This is not thread safe. The caller should have a lock on the region or the store.
  If necessary, the lock can be added with the patch provided in HBASE-10087</div>
 <dl>
@@ -377,7 +377,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>flushCache</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2201">flushCache</a>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2247">flushCache</a>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)
                 throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#flushCache-org.apache.hadoop.hbase.monitoring.MonitoredTask-">StoreFlushContext</a></code></span></div>
 <div class="block">Flush the cache (create the new store file)
@@ -398,7 +398,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>commit</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2209">commit</a>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2255">commit</a>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)
                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#commit-org.apache.hadoop.hbase.monitoring.MonitoredTask-">StoreFlushContext</a></code></span></div>
 <div class="block">Commit the flush - add the store file to the store and clear the
@@ -422,7 +422,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>getOutputFileSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2251">getOutputFileSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2297">getOutputFileSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#getOutputFileSize--">getOutputFileSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFlushContext</a></code></dd>
@@ -437,7 +437,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>getCommittedFiles</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2256">getCommittedFiles</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2302">getCommittedFiles</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#getCommittedFiles--">StoreFlushContext</a></code></span></div>
 <div class="block">Returns the newly committed files from the flush. Called only if commit returns true</div>
 <dl>
@@ -454,7 +454,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>replayFlush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2269">replayFlush</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;fileNames,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2315">replayFlush</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;fileNames,
                         boolean&nbsp;dropMemstoreSnapshot)
                  throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Similar to commit, but called in secondary region replicas for replaying the
@@ -477,7 +477,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockListLast">
 <li class="blockList">
 <h4>abort</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2299">abort</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2345">abort</a>()
            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Abort the snapshot preparation. Drops the snapshot if any.</div>
 <dl>


[40/40] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.


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

Branch: refs/heads/asf-site
Commit: e9db7c5d701cd82b5318561510e09e9ebfbc18c1
Parents: af9043b
Author: jenkins <bu...@apache.org>
Authored: Fri Jun 23 15:00:50 2017 +0000
Committer: jenkins <bu...@apache.org>
Committed: Fri Jun 23 15:00:50 2017 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |     4 +-
 apache_hbase_reference_guide.pdf                |     4 +-
 apache_hbase_reference_guide.pdfmarks           |     4 +-
 bulk-loads.html                                 |     4 +-
 checkstyle-aggregate.html                       | 14438 +++++++++--------
 checkstyle.rss                                  |     6 +-
 coc.html                                        |     4 +-
 cygwin.html                                     |     4 +-
 dependencies.html                               |     4 +-
 dependency-convergence.html                     |     4 +-
 dependency-info.html                            |     4 +-
 dependency-management.html                      |     4 +-
 devapidocs/constant-values.html                 |     6 +-
 devapidocs/index-all.html                       |    22 +
 .../hadoop/hbase/backup/package-tree.html       |     2 +-
 .../hbase/classification/package-tree.html      |     8 +-
 .../hadoop/hbase/client/package-tree.html       |    28 +-
 .../hadoop/hbase/filter/package-tree.html       |     6 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     2 +-
 .../apache/hadoop/hbase/ipc/package-tree.html   |     2 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |     4 +-
 .../hbase/master/balancer/package-tree.html     |     2 +-
 .../hadoop/hbase/master/package-tree.html       |     4 +-
 .../hbase/master/procedure/package-tree.html    |     2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    12 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     4 +-
 .../hadoop/hbase/quotas/package-tree.html       |     8 +-
 .../regionserver/DefaultStoreFileManager.html   |    79 +-
 .../hadoop/hbase/regionserver/HMobStore.html    |     2 +-
 .../regionserver/HStore.StoreFlusherImpl.html   |    32 +-
 .../hadoop/hbase/regionserver/HStore.html       |   656 +-
 .../hbase/regionserver/MobStoreScanner.html     |     2 +-
 .../regionserver/ReversedMobStoreScanner.html   |     2 +-
 .../regionserver/ReversedStoreScanner.html      |     2 +-
 .../apache/hadoop/hbase/regionserver/Store.html |   353 +-
 .../hbase/regionserver/StoreFileManager.html    |    60 +-
 .../hadoop/hbase/regionserver/StoreScanner.html |    20 +-
 ...eFileManager.CompactionOrFlushMergeCopy.html |    36 +-
 ...ger.KeyBeforeConcatenatedLists.Iterator.html |    10 +-
 ...eFileManager.KeyBeforeConcatenatedLists.html |     6 +-
 .../regionserver/StripeStoreFileManager.html    |   169 +-
 .../regionserver/class-use/KeyValueScanner.html |    60 +
 .../hbase/regionserver/class-use/StoreFile.html |     8 +
 .../hadoop/hbase/regionserver/package-tree.html |    16 +-
 .../class-use/ScanQueryMatcher.html             |    30 +
 .../regionserver/querymatcher/package-tree.html |     4 +-
 .../hbase/regionserver/wal/package-tree.html    |     2 +-
 .../hbase/security/access/package-tree.html     |     4 +-
 .../hadoop/hbase/security/package-tree.html     |     2 +-
 .../tmpl/master/MasterStatusTmpl.ImplData.html  |   210 +-
 .../hbase/tmpl/master/MasterStatusTmpl.html     |    84 +-
 .../hbase/tmpl/master/MasterStatusTmplImpl.html |    42 +-
 .../regionserver/RSStatusTmpl.ImplData.html     |   120 +-
 .../hbase/tmpl/regionserver/RSStatusTmpl.html   |    48 +-
 .../tmpl/regionserver/RSStatusTmplImpl.html     |    24 +-
 .../apache/hadoop/hbase/util/package-tree.html  |     8 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     2 +-
 .../org/apache/hadoop/hbase/Version.html        |     6 +-
 .../regionserver/DefaultStoreFileManager.html   |   282 +-
 .../regionserver/HStore.StoreFlusherImpl.html   |  5040 +++---
 .../hadoop/hbase/regionserver/HStore.html       |  5040 +++---
 .../apache/hadoop/hbase/regionserver/Store.html |   948 +-
 .../hbase/regionserver/StoreFileManager.html    |   128 +-
 ...StoreScanner.StoreScannerCompactionRace.html |   346 +-
 .../hadoop/hbase/regionserver/StoreScanner.html |   346 +-
 ...eFileManager.CompactionOrFlushMergeCopy.html |  1817 +--
 ...ger.KeyBeforeConcatenatedLists.Iterator.html |  1817 +--
 ...eFileManager.KeyBeforeConcatenatedLists.html |  1817 +--
 .../StripeStoreFileManager.State.html           |  1817 +--
 .../regionserver/StripeStoreFileManager.html    |  1817 +--
 .../tmpl/master/MasterStatusTmpl.ImplData.html  |   210 +-
 .../tmpl/master/MasterStatusTmpl.Intf.html      |   210 +-
 .../hbase/tmpl/master/MasterStatusTmpl.html     |   210 +-
 .../hbase/tmpl/master/MasterStatusTmplImpl.html |    60 +-
 .../regionserver/RSStatusTmpl.ImplData.html     |   120 +-
 .../tmpl/regionserver/RSStatusTmpl.Intf.html    |   120 +-
 .../hbase/tmpl/regionserver/RSStatusTmpl.html   |   120 +-
 .../tmpl/regionserver/RSStatusTmplImpl.html     |    36 +-
 export_control.html                             |     4 +-
 hbase-annotations/checkstyle.html               |     6 +-
 hbase-annotations/dependencies.html             |     6 +-
 hbase-annotations/dependency-convergence.html   |     6 +-
 hbase-annotations/dependency-info.html          |     6 +-
 hbase-annotations/dependency-management.html    |     6 +-
 hbase-annotations/index.html                    |     6 +-
 hbase-annotations/integration.html              |     6 +-
 hbase-annotations/issue-tracking.html           |     6 +-
 hbase-annotations/license.html                  |     6 +-
 hbase-annotations/mail-lists.html               |     6 +-
 hbase-annotations/plugin-management.html        |     6 +-
 hbase-annotations/plugins.html                  |     6 +-
 hbase-annotations/project-info.html             |     6 +-
 hbase-annotations/project-reports.html          |     6 +-
 hbase-annotations/project-summary.html          |     6 +-
 hbase-annotations/source-repository.html        |     6 +-
 hbase-annotations/team-list.html                |     6 +-
 hbase-archetypes/dependencies.html              |     6 +-
 hbase-archetypes/dependency-convergence.html    |     6 +-
 hbase-archetypes/dependency-info.html           |     6 +-
 hbase-archetypes/dependency-management.html     |     6 +-
 .../hbase-archetype-builder/dependencies.html   |     6 +-
 .../dependency-convergence.html                 |     6 +-
 .../dependency-info.html                        |     6 +-
 .../dependency-management.html                  |     6 +-
 .../hbase-archetype-builder/index.html          |     6 +-
 .../hbase-archetype-builder/integration.html    |     6 +-
 .../hbase-archetype-builder/issue-tracking.html |     6 +-
 .../hbase-archetype-builder/license.html        |     6 +-
 .../hbase-archetype-builder/mail-lists.html     |     6 +-
 .../plugin-management.html                      |     6 +-
 .../hbase-archetype-builder/plugins.html        |     6 +-
 .../hbase-archetype-builder/project-info.html   |     6 +-
 .../project-summary.html                        |     6 +-
 .../source-repository.html                      |     6 +-
 .../hbase-archetype-builder/team-list.html      |     6 +-
 .../hbase-client-project/checkstyle.html        |     6 +-
 .../hbase-client-project/dependencies.html      |     8 +-
 .../dependency-convergence.html                 |     6 +-
 .../hbase-client-project/dependency-info.html   |     6 +-
 .../dependency-management.html                  |     6 +-
 .../hbase-client-project/index.html             |     6 +-
 .../hbase-client-project/integration.html       |     6 +-
 .../hbase-client-project/issue-tracking.html    |     6 +-
 .../hbase-client-project/license.html           |     6 +-
 .../hbase-client-project/mail-lists.html        |     6 +-
 .../hbase-client-project/plugin-management.html |     6 +-
 .../hbase-client-project/plugins.html           |     6 +-
 .../hbase-client-project/project-info.html      |     6 +-
 .../hbase-client-project/project-reports.html   |     6 +-
 .../hbase-client-project/project-summary.html   |     6 +-
 .../hbase-client-project/source-repository.html |     6 +-
 .../hbase-client-project/team-list.html         |     6 +-
 .../hbase-shaded-client-project/checkstyle.html |     6 +-
 .../dependencies.html                           |     6 +-
 .../dependency-convergence.html                 |     6 +-
 .../dependency-info.html                        |     6 +-
 .../dependency-management.html                  |     6 +-
 .../hbase-shaded-client-project/index.html      |     6 +-
 .../integration.html                            |     6 +-
 .../issue-tracking.html                         |     6 +-
 .../hbase-shaded-client-project/license.html    |     6 +-
 .../hbase-shaded-client-project/mail-lists.html |     6 +-
 .../plugin-management.html                      |     6 +-
 .../hbase-shaded-client-project/plugins.html    |     6 +-
 .../project-info.html                           |     6 +-
 .../project-reports.html                        |     6 +-
 .../project-summary.html                        |     6 +-
 .../source-repository.html                      |     6 +-
 .../hbase-shaded-client-project/team-list.html  |     6 +-
 hbase-archetypes/index.html                     |     6 +-
 hbase-archetypes/integration.html               |     6 +-
 hbase-archetypes/issue-tracking.html            |     6 +-
 hbase-archetypes/license.html                   |     6 +-
 hbase-archetypes/mail-lists.html                |     6 +-
 hbase-archetypes/plugin-management.html         |     6 +-
 hbase-archetypes/plugins.html                   |     6 +-
 hbase-archetypes/project-info.html              |     6 +-
 hbase-archetypes/project-summary.html           |     6 +-
 hbase-archetypes/source-repository.html         |     6 +-
 hbase-archetypes/team-list.html                 |     6 +-
 hbase-spark/checkstyle.html                     |     6 +-
 hbase-spark/dependencies.html                   |     6 +-
 hbase-spark/dependency-convergence.html         |     6 +-
 hbase-spark/dependency-info.html                |     6 +-
 hbase-spark/dependency-management.html          |     6 +-
 hbase-spark/index.html                          |     6 +-
 hbase-spark/integration.html                    |     6 +-
 hbase-spark/issue-tracking.html                 |     6 +-
 hbase-spark/license.html                        |     6 +-
 hbase-spark/mail-lists.html                     |     6 +-
 hbase-spark/plugin-management.html              |     6 +-
 hbase-spark/plugins.html                        |     6 +-
 hbase-spark/project-info.html                   |     6 +-
 hbase-spark/project-reports.html                |     6 +-
 hbase-spark/project-summary.html                |     6 +-
 hbase-spark/source-repository.html              |     6 +-
 hbase-spark/team-list.html                      |     6 +-
 index.html                                      |     4 +-
 integration.html                                |     4 +-
 issue-tracking.html                             |     4 +-
 license.html                                    |     4 +-
 mail-lists.html                                 |     4 +-
 metrics.html                                    |     4 +-
 old_news.html                                   |     4 +-
 plugin-management.html                          |     4 +-
 plugins.html                                    |     4 +-
 poweredbyhbase.html                             |     4 +-
 project-info.html                               |     4 +-
 project-reports.html                            |     4 +-
 project-summary.html                            |     4 +-
 pseudo-distributed.html                         |     4 +-
 replication.html                                |     4 +-
 resources.html                                  |     4 +-
 source-repository.html                          |     4 +-
 sponsors.html                                   |     4 +-
 supportingprojects.html                         |     4 +-
 team-list.html                                  |     4 +-
 testdevapidocs/allclasses-frame.html            |     2 +-
 testdevapidocs/allclasses-noframe.html          |     2 +-
 testdevapidocs/index-all.html                   |    20 +-
 ...cing.BlockCompactionsInCompletionHStore.html |     2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    10 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     2 +-
 .../TestStore.DummyStoreEngine.html             |     8 +-
 .../TestStore.FaultyFileSystem.html             |    16 +-
 .../TestStore.FaultyOutputStream.html           |    12 +-
 .../TestStore.MyCompactingMemStore.html         |    14 +-
 ...MyCompactingMemStoreWithCustomCompactor.html |    10 +-
 .../hbase/regionserver/TestStore.MyList.html    |    54 +-
 .../TestStore.MyMemStoreCompactor.html          |    10 +-
 .../regionserver/TestStore.MyScannerHook.html   |     4 +-
 .../hbase/regionserver/TestStore.MyStore.html   |    24 +-
 .../hbase/regionserver/TestStore.MyThread.html  |   382 +
 .../hadoop/hbase/regionserver/TestStore.html    |   290 +-
 .../hbase/regionserver/TestStoreFileInfo.html   |     4 +-
 .../TestStoreScanner.CellGridStoreScanner.html  |     2 +-
 ....CellWithVersionsNoOptimizeStoreScanner.html |     2 +-
 ...oreScanner.CellWithVersionsStoreScanner.html |     2 +-
 .../class-use/TestStore.MyScannerHook.html      |    14 +-
 .../class-use/TestStore.MyThread.html           |   125 +
 .../hbase/regionserver/package-frame.html       |     2 +-
 .../hbase/regionserver/package-summary.html     |    52 +-
 .../hadoop/hbase/regionserver/package-tree.html |     5 +-
 .../apache/hadoop/hbase/test/package-tree.html  |     2 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     2 +-
 testdevapidocs/overview-tree.html               |     1 +
 .../TestStore.DummyStoreEngine.html             |  2906 ++--
 .../TestStore.FaultyFileSystem.html             |  2906 ++--
 .../TestStore.FaultyOutputStream.html           |  2906 ++--
 .../TestStore.MyCompactingMemStore.html         |  2906 ++--
 ...MyCompactingMemStoreWithCustomCompactor.html |  2906 ++--
 .../hbase/regionserver/TestStore.MyList.html    |  2906 ++--
 .../TestStore.MyMemStoreCompactor.html          |  2906 ++--
 .../regionserver/TestStore.MyScannerHook.html   |  2906 ++--
 .../hbase/regionserver/TestStore.MyStore.html   |  2906 ++--
 .../hbase/regionserver/TestStore.MyThread.html  |  1644 ++
 .../hadoop/hbase/regionserver/TestStore.html    |  2906 ++--
 237 files changed, 37669 insertions(+), 33780 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index 9c1463d..e6dfd2d 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -606,7 +606,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: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 2b1abb7..d2b089c 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,8 +5,8 @@
 /Author (Apache HBase Team)
 /Creator (Asciidoctor PDF 1.5.0.alpha.6, based on Prawn 1.2.1)
 /Producer (Apache HBase Team)
-/CreationDate (D:20170622144900+00'00')
-/ModDate (D:20170622144900+00'00')
+/CreationDate (D:20170623144831+00'00')
+/ModDate (D:20170623144831+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/apache_hbase_reference_guide.pdfmarks
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdfmarks b/apache_hbase_reference_guide.pdfmarks
index 0ccb12c..f9c734e 100644
--- a/apache_hbase_reference_guide.pdfmarks
+++ b/apache_hbase_reference_guide.pdfmarks
@@ -2,8 +2,8 @@
   /Author (Apache HBase Team)
   /Subject ()
   /Keywords ()
-  /ModDate (D:20170622145024)
-  /CreationDate (D:20170622145024)
+  /ModDate (D:20170623144956)
+  /CreationDate (D:20170623144956)
   /Creator (Asciidoctor PDF 1.5.0.alpha.6, based on Prawn 1.2.1)
   /Producer ()
   /DOCINFO pdfmark

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e9db7c5d/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index f28953f..db587ff 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="20170622" />
+    <meta name="Date-Revision-yyyymmdd" content="20170623" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -311,7 +311,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: 2017-06-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-06-23</li>
             </p>
                 </div>